====== 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 | [[mg_notes:general:io_page|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 |