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

AddrNameAccessDescriptionUnit
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
C007SETINTCXROMWInternal ROM ($C100-$CFFF)IoRom
C008SETSTDZPWMain Stack and Zero PageAuxMemory
C009SETALTZPWAux Stack and Zero PageAuxMemory
C00ASETINTC3ROMWROM in Slot 3IoRom
C00BSETSLOTC3ROMWROM in Aux SlotIoRom
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