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