Apple //e I/O unit is based on the Apple ][+ unit except for the TXTPAGE1 and TXTPAGE2 addresses which are managed by the AuxMemory unit (which passes requests to the GraphicMode unit). Apple //e I/O unit has a few more soft switches and some more soft switches status.
Table 9-2. Apple //e I/O Unit addresses
Addr | Name | Access | Description | Unit |
---|---|---|---|---|
C000 | KBD | R | Last key pressed | Keyboard |
C000 | 80STOREOFF | W | Use $C002-$C005 for Aux Memory | AuxMemory |
C001 | 80STOREON | W | Use PAGE2 for Aux Memory | AuxMemory |
C002 | RDMAINRAM | W | If 80STORE Off: Read Main Mem $0200-$BFFF | AuxMemory |
C003 | RDCARDRAM | W | If 80STORE Off: Read Aux Mem $0200-$BFFF | AuxMemory |
C004 | WRMAINRAM | W | If 80STORE Off: Write Main Mem $0200-$BFFF | AuxMemory |
C005 | WRCARDRAM | W | If 80STORE Off: Write Aux Mem $0200-$BFFF | AuxMemory |
C006 | SETSLOTCXROM | W | Peripheral ROM ($C100-$CFFF) | IoRom |
C007 | SETINTCXROM | W | Internal ROM ($C100-$CFFF) | IoRom |
C008 | SETSTDZP | W | Main Stack and Zero Page | AuxMemory |
C009 | SETALTZP | W | Aux Stack and Zero Page | AuxMemory |
C00A | SETINTC3ROM | W | ROM in Slot 3 | IoRom |
C00B | SETSLOTC3ROM | W | ROM in Aux Slot | IoRom |
C00C | CLR80VID | W | 40 Columns | TextMode |
C00D | SET80VID | W | 80 Columns | TextMode |
C00E | CLRALTCHAR | W | Primary Character Set | TextMode |
C00F | SETALTCHAR | W | Alternate Character Set | TextMode |
C010 | KBDSTRB | RW | Keyboard Strobe | Keyboard |
C011 | RDLCBNK2 | R7 | Status of $D000-DFFF RAM Bank 1 (0) or Bank 2 (1) | LanguageCard |
C012 | RDLCRAM | R7 | Status of $D000-$FFFF ROM (0) or RAM (1) | LanguageCard |
C013 | RDRAMRD | R7 | Status of Main/Aux RAM Reading | AuxMemory |
C014 | RDRAMWRT | R7 | Status of Main/Aux RAM Writing | AuxMemory |
C015 | RDCXROM | R7 | Status of Periph (0) or Internal (1) ROM Access | IoRom |
C016 | RDALTZP | R7 | Status of Main/Aux Stack and Zero Page | AuxMemory |
C017 | RDC3ROM | R7 | Status of Slot 3 (0) or Aux Slot (1) ROM | IoRom |
C018 | RD80STORE | R7 | Status of $C002-$C005/PAGE2 for Aux Mem | AuxMemory |
C019 | RDVBL | R7 | Vertical Blanking (1=drawing) | |
C01A | RDTEXT | R7 | Status of Text (1) or Graphics (0) | GraphicMode |
C01B | RDMIXED | R7 | Status of Full Screen (0) or Mixed Graphics (1) | GraphicMode |
C01C | RDPAGE2 | R7 | Status of Page 1 (0) or Page 2 (1) | GraphicMode |
C01D | RDHIRES | R7 | Status of LoRes (0) or HiRes (1) | GraphicMode |
C01E | RDALTCHAR | R7 | Status of Primary/Alternate Character Set | TextMode |
C01F | RD80VID | R7 | Status of 40/80 Columns | TextMode |
C020 | TAPEOUT | R7 | Toggle Cassette Tape Output | |
C030 | SPKR | R | Toggle Speaker | Speaker |
C040 | STROBE | R | Game I/O Strobe Output | Game |
C050 | TXTCLR | WR | Display Graphics | GraphicMode |
C051 | TXTSET | WR | Display Text | GraphicMode |
C052 | MIXCLR | WR | Display Full Screen | GraphicMode |
C053 | MIXSET | WR | Display Split Screen | GraphicMode |
C054 | TXTPAGE1 | WR | Display Page 1 | GraphicMode |
C055 | TXTPAGE2 | WR | If 80STORE Off: Display Page 2, If 80STORE On: Read/Write Aux Display Mem | AuxMemory, GraphicMode |
C056 | LORES | WR | Display LoRes Graphics | GraphicMode |
C057 | HIRES | WR | Display HiRes Graphics | GraphicMode |
C058 | CLRAN0 | WR | Annunciator 0 Off | Game |
C059 | SETAN0 | WR | Annunciator 0 On | Game |
C05A | CLRAN1 | WR | Annunciator 1 Off | Game |
C05B | SETAN1 | WR | Annunciator 1 On | Game |
C05C | CLRAN2 | WR | Annunciator 2 Off | Game |
C05D | SETAN2 | WR | Annunciator 2 On | Game |
C05E | CLRAN3 | WR | Annunciator 3 Off | Game |
C05F | SETAN3 | WR | Annunciator 3 On | Game |
C060 | TAPEIN | R7 | Read Cassette Input | |
C061 | PB0 | R7 | Switch Input 0 / Open Apple | Game |
C062 | PB1 | R7 | Switch Input 1 / Solid Apple | Game |
C063 | PB2 | R7 | Switch Input 2 / Shift Key (on a few models) | Game |
C064 | PADDL0 | R7 | Analog Input 0 | Game |
C065 | PADDL1 | R7 | Analog Input 1 | Game |
C066 | PADDL2 | R7 | Analog Input 2 | Game |
C067 | PADDL3 | R7 | Analog Input 3 | Game |
C070 | PTRIG | R | Analog Input Reset | Game |
C073 | BANKSEL | W | Memory Bank Select for > 128K | |
C07F | RDDHIRES | R7 | Status of Double HiRes | |
C080 | R | Read RAM bank 2; no write | LanguageCard | |
C081 | RR | Read ROM; write RAM bank 2 | LanguageCard | |
C082 | R | Read ROM; no write | LanguageCard | |
C083 | RR | Read/write RAM bank 2 | LanguageCard | |
C084-C087 | Same as C080-C083 | LanguageCard | ||
C088 | R | Read RAM bank 1; no write | LanguageCard | |
C089 | RR | Read ROM; write RAM bank 1 | LanguageCard | |
C08A | R | Read ROM; no write | LanguageCard | |
C08B | RR | Read/write RAM bank 1 | LanguageCard | |
C08C-C08F | R | Same as C088-C08B | LanguageCard | |
C090-C09F | Slot 1 addresses | Slots | ||
C0A0-C0AF | Slot 2 addresses | Slots | ||
C0B0-C0BF | Slot 3 addresses | Slots | ||
C0C0-C0CF | Slot 4 addresses | Slots | ||
C0D0-C0DF | Slot 5 addresses | Slots | ||
C0E0-C0EF | Slot 6 addresses | Slots | ||
C0F0-C0FF | Slot 7 addresses | Slots |
R - Read to act or get information, W - Write to act, RR - Read twice to act, R7 - Read information from bit 7