9.2. I/O Unit on //e

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

C000KBDRLast key pressedKeyboard
C00080STOREOFFWUse $C002-$C005 for Aux MemoryAuxMemory
C00180STOREONWUse PAGE2 for Aux MemoryAuxMemory
C002RDMAINRAMWIf 80STORE Off: Read Main Mem $0200-$BFFFAuxMemory
C003RDCARDRAMWIf 80STORE Off: Read Aux Mem $0200-$BFFFAuxMemory
C004WRMAINRAMWIf 80STORE Off: Write Main Mem $0200-$BFFFAuxMemory
C005WRCARDRAMWIf 80STORE Off: Write Aux Mem $0200-$BFFFAuxMemory
C006SETSLOTCXROMWPeripheral ROM ($C100-$CFFF)IoRom
C008SETSTDZPWMain Stack and Zero PageAuxMemory
C009SETALTZPWAux Stack and Zero PageAuxMemory
C00CCLR80VIDW40 ColumnsTextMode
C00DSET80VIDW80 ColumnsTextMode
C00ECLRALTCHARWPrimary Character SetTextMode
C00FSETALTCHARWAlternate Character SetTextMode
C010KBDSTRBRWKeyboard StrobeKeyboard
C011RDLCBNK2R7Status of $D000-DFFF RAM Bank 1 (0) or Bank 2 (1)LanguageCard
C012RDLCRAMR7Status of $D000-$FFFF ROM (0) or RAM (1)LanguageCard
C013RDRAMRDR7Status of Main/Aux RAM ReadingAuxMemory
C014RDRAMWRTR7Status of Main/Aux RAM WritingAuxMemory
C015RDCXROMR7Status of Periph (0) or Internal (1) ROM AccessIoRom
C016RDALTZPR7Status of Main/Aux Stack and Zero PageAuxMemory
C017RDC3ROMR7Status of Slot 3 (0) or Aux Slot (1) ROMIoRom
C018RD80STORER7Status of $C002-$C005/PAGE2 for Aux MemAuxMemory
C019RDVBLR7Vertical Blanking (1=drawing) 
C01ARDTEXTR7Status of Text (1) or Graphics (0)GraphicMode
C01BRDMIXEDR7Status of Full Screen (0) or Mixed Graphics (1)GraphicMode
C01CRDPAGE2R7Status of Page 1 (0) or Page 2 (1)GraphicMode
C01DRDHIRESR7Status of LoRes (0) or HiRes (1)GraphicMode
C01ERDALTCHARR7Status of Primary/Alternate Character SetTextMode
C01FRD80VIDR7Status of 40/80 ColumnsTextMode
C020TAPEOUTR7Toggle Cassette Tape Output 
C030SPKRRToggle SpeakerSpeaker
C040STROBERGame I/O Strobe OutputGame
C050TXTCLRWRDisplay GraphicsGraphicMode
C051TXTSETWRDisplay TextGraphicMode
C052MIXCLRWRDisplay Full ScreenGraphicMode
C053MIXSETWRDisplay Split ScreenGraphicMode
C054TXTPAGE1WRDisplay Page 1GraphicMode
C055TXTPAGE2WRIf 80STORE Off: Display Page 2, If 80STORE On: Read/Write Aux Display Mem AuxMemory, GraphicMode
C056LORESWRDisplay LoRes GraphicsGraphicMode
C057HIRESWRDisplay HiRes GraphicsGraphicMode
C058CLRAN0WRAnnunciator 0 OffGame
C059SETAN0WRAnnunciator 0 OnGame
C05ACLRAN1WRAnnunciator 1 OffGame
C05BSETAN1WRAnnunciator 1 OnGame
C05CCLRAN2WRAnnunciator 2 OffGame
C05DSETAN2WRAnnunciator 2 OnGame
C05ECLRAN3WRAnnunciator 3 OffGame
C05FSETAN3WRAnnunciator 3 OnGame
C060TAPEINR7Read Cassette Input 
C061PB0R7Switch Input 0 / Open AppleGame
C062PB1R7Switch Input 1 / Solid AppleGame
C063PB2R7Switch Input 2 / Shift Key (on a few models)Game
C064PADDL0R7Analog Input 0Game
C065PADDL1R7Analog Input 1Game
C066PADDL2R7Analog Input 2Game
C067PADDL3R7Analog Input 3Game
C070PTRIGRAnalog Input ResetGame
C073BANKSELWMemory Bank Select for > 128K 
C07FRDDHIRESR7Status of Double HiRes 
C080 RRead RAM bank 2; no writeLanguageCard
C081 RRRead ROM; write RAM bank 2LanguageCard
C082 RRead ROM; no writeLanguageCard
C083 RRRead/write RAM bank 2LanguageCard
C084-C087  Same as C080-C083LanguageCard
C088 RRead RAM bank 1; no writeLanguageCard
C089 RRRead ROM; write RAM bank 1LanguageCard
C08A RRead ROM; no writeLanguageCard
C08B RRRead/write RAM bank 1LanguageCard
C08C-C08F RSame as C088-C08BLanguageCard
C090-C09F  Slot 1 addressesSlots
C0A0-C0AF  Slot 2 addressesSlots
C0B0-C0BF  Slot 3 addressesSlots
C0C0-C0CF  Slot 4 addressesSlots
C0D0-C0DF  Slot 5 addressesSlots
C0E0-C0EF  Slot 6 addressesSlots
C0F0-C0FF  Slot 7 addressesSlots

R - Read to act or get information, W - Write to act, RR - Read twice to act, R7 - Read information from bit 7