Runge-Kutta-Simulation/AppleX/DOCS/a2map.txt

232 lines
10 KiB
Plaintext

The comp.sys.apple2 Usenet newsgroup Apple II FAQs originate from
the II Computing Apple II site, 1997-2012.
Csa2 FAQs resource file: R032MMAP128.TXT
128K Apple IIe Memory Map
Note: To correctly view tables and diagrams on a super-res display,
use a mono-spaced Font such as CoPilot or PCMononspaced.
____________________________
128K Apple IIe Memory Map
by David Empson
MAIN RAM AUX RAM I/O ROM
______________ ______________
0000 |Main zero page| |Aux zero page |
|______________| |______________|
0100 | Main stack | | Aux stack |
|______________| |______________|
0200 | | | |
| | | |
0300 | | | |
|______________| |______________|
0400 | | | |
| | | |
| Main text/GR | | Aux text/GR |
| | | |
| page 1 | | page 1X |
| | | |
| | | |
|______________| |______________|
0800 | | | |
| | | |
| Main text/GR | | Aux text/GR |
| | | |
| page 2 | | page 2X |
| | | |
| | | |
|______________| |______________|
0C00 | | | |
| | | |
... ...
| | | |
|______________| |______________|
2000 | | | |
| | | |
| Main Hi-res | | Aux Hi-res |
| | | |
| page 1 | | page 1X |
| | | |
| | | |
|______________| |______________|
4000 | | | |
| | | |
| Main Hi-res | | Aux Hi-res |
| | | |
| page 2 | | page 2X |
| | | |
| | | |
|______________| |______________|
6000 | | | |
| | | |
| | | |
... ...
| | | |
| | | |
BFFF |______________| |______________| _____________
C000 | Motherboard |
| I/O |
|_____________|
C090 | Slot I/O |
| (DEVSEL) |
|_____________| _____________
C100 | | | |
| Slot CX ROM | | Int CX ROM |
| (IOSEL) | | |
| | | |
|_____________| |_____________|
C300 | Slot C3 ROM | | Int C3 ROM |
| (IOSEL) | | |
|_____________| |_____________|
C400 | | | |
| | | |
| Slot CX ROM | | Int CX ROM |
| (IOSEL) | | |
| | | |
| | | |
| | | |
|_____________| |_____________|
C800 | | | |
| Slot ROM | | |
| (IOSTROBE) | | Int C3 ROM |
| | | |
| shared | | |
| between | | |
| slots | | |
CFFF ______ ______ ______ ______ |_____________| |_____________|
D000 | || | | || | | |
| Main || Main | | Aux || Aux | | |
| || | | || | | |
| LC || LC | | LC || LC | | |
| || | | || | | |
| bank || bank | | bank || bank | | |
| 1 || 2 | | 1 || 2 | | Applesoft |
|______||______| |______||______| | |
E000 | | | | | BASIC |
| | | | | |
| | | | | ROM |
| | | | | |
| | | | | |
| Main | | Aux | | |
| | | | | |
| Language | | Language | | |
| | | | | |
| Card | | Card | | |
| | | | | |
| | | | |.............|
F800 | | | | | Monitor |
| | | | | |
| | | | | ROM |
FFFF |______________| |______________| |_____________|
(If you have a RAMWorks or similar bank-switched card in the auxiliary
slot, then any 64K bank on the card can be switched into the auxiliary
memory space. "Normal" auxiliary memory, which contains the video
buffers, is bank 0 on the card.)
The major soft-switches for bank switching control areas as follows:
AUXZP/MAINZP selects main or auxiliary RAM in 0000-01FF (zero page and
stack), and in D000-FFFF (language card), for read/write access. The
language card area is further affected by language card soft-switches
(see later).
RDMAIN/RDAUX selects main or auxiliary RAM in 0200-BFFF for read access
only. Text page 1/1X and Hi-res page 1/1X may be excluded depending on
the state of the 80STORE and HIRES soft-switches.
WRMAIN/WRAUX selects main or auxiliary RAM in 0200-BFFF for write access
only. Text page 1/1X and Hi-res page 1/1X may be excluded depending on
the state of the 80STORE and HIRES soft-switches.
80STORE enables 80-column switching of text/lo-res page 1 (0400-07FF).
The active page (main or auxiliary) is determined by the PAGE1/PAGE2
soft switch. 80STORE gives read/write access to whichever page is
active.
If 80STORE and HIRES are both enabled, then PAGE1/PAGE2 also control
switching of hi-res page 1 (2000-3FFF).
There is no special bank switching support for text or hi-res page 2/2X.
Using the double resolution modes with these pages requires using
another bank switching technique.
SLOTCXROM/INTCXROM determines whether the slot address space or
motherboard ROM is enabled for $C100-$C2FF and $C400-$C7FF.
SLOTC3ROM/INTC3ROM determines whether the slot address space or
motherboard ROM is enabled for $C300-$C3FF.
The $C800-$CFFF area (I/O Stobe) is shared between all slots, and may be
used by the internal ROM if INTC3ROM is active. An access to the
$CN00-$CNFF page (N=1 to 7) enables the expansion ROM space for slot N,
if supported by that card. An access to $CFFF disables the expansion
ROM space for all cards.
There are eight language card soft-switches to control selection of RAM
bank 1 or 2, read enable for RAM or ROM, and write enable for RAM.
Handy stub routines to access the auxiliary language card area are as
follows:
RDAUX1 SEI ; No interrupts!
LDX C088 ; Read-enable language card bank 1
STA C009 ; Switch in auxiliary language card, etc.
LDA xxxx ; Read target location (patched)
STA C008 ; Switch in main language card, etc.
LDX C08A ; Switch the ROM back in
CLI ; Enable interrupts
RTS
WRAUX1 SEI ; No interrupts!
LDX C08B ; Read/write language card bank 1
LDX C08B ; (must access twice)
STA C009 ; Switch in auxiliary language card, etc.
STA xxxx ; Write target location (patched)
STA C008 ; Switch in main language card, etc.
LDX C08A ; Switch the ROM back in
CLI ; Enable interrupts
RTS
RDAUX2 SEI ; No interrupts!
LDX C080 ; Read-enable language card bank 2
STA C009 ; Switch in auxiliary language card, etc.
LDA xxxx ; Read target location (patched)
STA C008 ; Switch in main language card, etc.
LDX C082 ; Switch the ROM back in
CLI ; Enable interrupts
RTS
WRAUX2 SEI ; No interrupts!
LDX C083 ; Read/write language card bank 2
LDX C083 ; (must access twice)
STA C009 ; Switch in auxiliary language card, etc.
STA xxxx ; Write target location (patched)
STA C008 ; Switch in main language card, etc.
LDX C082 ; Switch the ROM back in
CLI ; Enable interrupts
RTS
The C008/C009 switch controls both read and write access, unlike the
switches for the main $0200-$BFFF area, but note the different
instruction sequences needed to control read enable and read/write
enable for the language card area. (You could set up the language card
for write-only access using C081 or C089 instead of C083 or C08B, but it
won't make the code any shorter.)