[comp.sys.atari.8bit] XL/XE RAM

slackey@bbn.com (Stan Lackey) (10/17/89)

I am a neophyte in terms of using the RAM under XE ROM.  Can someone
tell me, when ROM is shut off, are the device registers shut off too?
Do you get a linear space of 64K of just RAM?  If not, are the device
registers accessed in the same way as when ROM is on?
Thanks.  -Stan

jean@maxwell.Concordia.CA ( JEAN GOULET ) (10/18/89)

In article <47017@bbn.COM> slackey@BBN.COM (Stan Lackey) writes:
>I am a neophyte in terms of using the RAM under XE ROM.  Can someone
>tell me, when ROM is shut off, are the device registers shut off too?
>Do you get a linear space of 64K of just RAM?  If not, are the device
>registers accessed in the same way as when ROM is on?
>Thanks.  -Stan

Stan, the address space between $D000 and $D7FF is always reserved for the
device registers, and thus the RAM in that address space is unaccessable.
Thus, you can only use 62K RAM in a '64K' 800XL, and 126K in a '128K' 130XE.

I might add that if you plan to use the 'hidden' RAM, don't forget that
when you switch out the OS, the character set disappears with it, as do
the interrupt routines.  One way to handle this is to copy the ROM character
set to the RAM beneath, and disable all interrupts using SEI, and POKE NMIEN
($D40E) with the necessary value (and the same for IRQEN - $D20E).

                                             Jean Goulet
                                             Electrical Engineering
                                             Class of '89
                                             Concordia University
                                             Montreal, Canada

norlin@uokmax.ecn.uoknor.edu (Norman Lin) (10/18/89)

slackey@BBN.COM (Stan Lackey) writes:

>I am a neophyte in terms of using the RAM under XE ROM.  Can someone
>tell me, when ROM is shut off, are the device registers shut off too?
>Do you get a linear space of 64K of just RAM?  If not, are the device
>registers accessed in the same way as when ROM is on?
>Thanks.  -Stan

If by "device registers" you are referring to what I call "hardware registers"
located in memory beginning at $D000, then no, the device registers are NOT
shut off.  These memory locations have no RAM; thus, it is technically
inaccurate, for instance, to say that the 800XL has 64K RAM; it actually has
only 62K RAM.  That means that when you shut off the OS to get to the RAM
underneath, your extra 14K (not 16K) will have a nice big gap right in the
middle of it.

As to your second question, yes, the device registers are accessed in the same
way as when the ROM is on.  Be aware, of course, that when the ROM is off,
no system interrupts are processed, and stuff like changing the screen colors
and such will be done directly through the hardware registers.

Now, I'm talking about the 800XL.  I have little experience with the 130XE,
but I believe its architecture is identical (except that the extra bits
in the $D301 memory switch are used to control extra 16K banks, but the
hardware register locations still have no RAM underneath, so I think the
130XE has only 126K RAM), so the information should be equally applicable
to both the 800XL and the 130XE.

Hope this answers your question.  Switching out the OS to get to the RAM
underneath, though, is not usually worth the trouble.


                                    --Norman Lin (A.K.A. NARC)

Ordania-DM@cup.portal.com (Charles K Hughes) (10/20/89)

  Short lesson in memory management on the XL/XE computers:

   Address  Use
 $c000-$cfff  ROM 
 $D000-$D7ff  device registers
 $D800-$FFFF  ROM

   The device registers can never be disabled, they are physically wired 
such that any instruction referencing the area from $D000-$D7FF accesses 
them.
   When you disable the ROM, you disable the entire thing and you can access
the ram from $C000-$CFFF and $D800-$FFFF.
   The best source of information for this is "Mapping the Atari" by Compute
Books.  Make sure you get the "Revised Edition" (it says that on the front 
cover).

Charles Hughes
@cup.portal.com

850747c@aucs.uucp (Vitamin) (10/25/89)

In article <47017@bbn.COM> slackey@BBN.COM (Stan Lackey) writes:
>I am a neophyte in terms of using the RAM under XE ROM.  Can someone
>tell me, when ROM is shut off, are the device registers shut off too?
>Do you get a linear space of 64K of just RAM?  If not, are the device
>registers accessed in the same way as when ROM is on?
>Thanks.  -Stan
>
The address bus is wired so that if you try to access a register from
$D000-D7FF, you access a device register instead, regardless of the way
the memory 'windows' are configured.  Therefore, only 62K is available
at any time.  (If you have >64K, the extra memory is accessed through
a memory window at $8000.)  You might want to switch off all interrupts,
and copy the OS ROM in segments to the RAM underneath, then reenable the
interrupts, so you can still leave the core of the O.S. running, and 
overwrite parts of the O.S. that you won't be using (like the floating 
point routines, or the printer or cassette drivers, for example).  This
seems to me to be a bit more practical, since unless your program is 
purely computational, you will probably want some sort of interface
between the user and the computer, and if the O.S. is gone, displaying
things becomes a bit complicated.
                                                         -Chris