Apple II Memory Map

Main RAM / IIgs Bank 0

The IIgs screen buffers listed are not where the hardware actually draws them from. The real screen buffers are in Mega II “Slow RAM” bank $E0 and $E1. The IIgs hardware supports shadowing of the Bank 0 screen buffers to bank $E0.

Address(es) Use
0000–00FF 6502 Zero Page
0100–01FF 6502 Stack
0200–02FF Input buffer (monitor routines)
0300–03FF Page 3
03D0–03D2 Warm start jump vector (Q in IIgs monitor jumps here if $3D0=$4C)
03F0–03F1 BRK vector
03F2–03F3 Reset Vector
03F4 PWRUP byte = $3F3 XOR $A5
03F5–03F7 Applesoft & Vector
03F8–03FA Monitor Ctrl-Y jump vector
03FB–03FD NMI jump vector
03FE–03FF IRQ vector
0400–07FF Text page 0
0800–BFFF Free memory with no DOS
0800–BEFF Free memory under ProDOS 8
0800–09FF Boot firmware loads block 0 here
0800–0CFF Text screen 2
1000–…. ProDOS 8 loads ATINIT here (ATINIT size must not stomp on the ProDOS init code)
1000–12FF ProDOS 8 copies QUIT code here and jumps to it
2000–BEFF ProDOS 8 system programs load here
2000–4000 HGR page 1
4000–6000 HGR page 2
6800–…. Start.GS.OS gets loaded here
BD00–BDFF GS/OS direct page
BE00–BEFF BASIC.SYSTEM global page
BF00–BFFF ProDOS 8 global page
C000–CFFF I/O space
On IIgs this is mapped to Mega II
C000–C0FF I/O Page
C080–C0FF Slots (or ports) 0–7 Device Select $C080+$n0–$C08F+$n0 (usually H/W)
C100–CFFF Apple IIe/IIc/IIgs: INTCXROM
C100–C7FF Slots (or ports) 1–7 I/O select $CxFF (usually ROM)
C800–CFFF Slots 1–7 I/O Strobe (usually shared ROM space)
CFFF All slots should release $C800 space
D000–FFFF Bank 0 language card
D000–DFFF Bank 1 language card
D000–FFFF ROM
D000–F7FF Applesoft BASIC
D000–D7FF D0 ROM, Programmer's Aid #1 (Integer II)
D800–D8FF D8 ROM
E000–F7FF Integer Basic and Sweet 16
E000 BASIC cold start
E003 BASIC warm start
F800–FFFF Monitor ROM
FFFA–FFFF 6502 Vectors

Aux RAM / IIgs Bank 1

The IIgs screen buffers listed are not where the hardware actually draws them from. The real screen buffers are in Mega II “Slow RAM” bank $E0 and $E1. The IIgs hardware supports shadowing of the Bank 1 screen buffers to bank $E1.

0000–00FF Aux Zero Page
0100–01FF Aux Stack
0400–07FF 80-column text page, even columns
2000–9FFF GS Super Hires screen
2000–4000 Double Hires page 1, even columns
4000–6000 Double Hires page 2, even columns
9D00–9DFF GS Super Hires SCBs (not usually enabled)
9D00–9DFF GS Super Hires palettes (not usually enabled)
C000–CFFF I/O space just like bank 0
D000–FFFF Aux Bank 0 language card
D000–DFFF Aux Bank 1 language card

IIgs Banks $02 - $FF

Address(es) Use
02/0000–7F/FFFF Fast RAM
80/0000–DF/FFFF Not decoded by IIgs hardware. Most emulators expand RAM here.
E0/0000–E0/FFFF Mega II “Slow RAM” main bank
E0/0400–E0/07FF Real text page 1 buffer
E0/0800–E0/0CFF Real text page 2 buffer
E0/2000–E0/3FFF Real hires page 1 buffer
E0/4000–E0/5FFF Real hires page 2 buffer
E0/C000–E0/CFFF I/O space like bank 0
E0/D000–E0/FFFF Language Card
E1/0000–E1/FFFF Mega II “Slow RAM” aux bank
E1/0400–E1/07FF Real 80-col text page 1 buffer
E1/0800–E1/0CFF Real 80-text page 2 buffer
E1/2000–E1/9FFF Real Super Hires screen
E1/2000–E1/3FFF Real double hires page 1 buffer
E1/4000–E1/5FFF Real double hires page 2 buffer
E1/9D00–E1/9DFF Real Super Hires SCBs
E1/9D00–E1/9DFF Real Super Hires palettes
E1/C000–E1/CFFF I/O space like bank 1
E1/D000–E1/FFFF Aux Language Card
E2/0000–EF/FFFF Not decoded by IIgs hardware
Sweet 16: Frame buffer direct access
F0/0000–F7/FFFF ROM disk space
F8/0000–FB/FFFF ROM tools space
FC/0000–FD/FFFF ROM 3 space
FE/0000–FF/FFFF ROM 1 and 3 space