Jon Relay's Apple II Info Archives

I/O Memory

Comp:  O = Apple II+  E = Apple IIe  C = Apple IIc  G = Apple IIgs
Act:   R = Read       W = Write      7 = Bit 7      V = Value

Address    Name         Comp Act  Description

C000 49152 KBD          OECG  R   Last Key Pressed + 128
           80STOREOFF    ECG W    Use $C002-$C005 for Aux Memory
C001 49153 80STOREON     ECG W    Use PAGE2 for Aux Memory
C002 49154 RDMAINRAM     ECG W    If 80STORE Off: Read Main Mem $0200-$BFFF
C003 49155 RDCARDRAM     ECG W    If 80STORE Off: Read Aux Mem $0200-$BFFF
C004 49156 WRMAINRAM     ECG W    If 80STORE Off: Write Main Mem $0200-$BFFF
C005 49157 WRCARDRAM     ECG W    If 80STORE Off: Write Aux Mem $0200-$BFFF
C006 49158 SETSLOTCXROM  E G W    Peripheral ROM ($C100-$CFFF)
C007 49159 SETINTCXROM   E G W    Internal ROM ($C100-$CFFF)
C008 49160 SETSTDZP      ECG W    Main Stack and Zero Page
C009 49161 SETALTZP      ECG W    Aux Stack and Zero Page
C00A 49162 SETINTC3ROM   E G W    ROM in Slot 3
C00B 49163 SETSLOTC3ROM  E G W    ROM in Aux Slot
C00C 49164 CLR80VID      ECG W    40 Columns
C00D 49165 SET80VID      ECG W    80 Columns
C00E 49166 CLRALTCHAR    ECG W    Primary Character Set
C00F 49167 SETALTCHAR    ECG W    Alternate Character Set
C010 49168 KBDSTRB      OECG WR   Keyboard Strobe
C011 49169 RDLCBNK2      ECG  R7  Status of Selected $Dx Bank
C012 49170 RDLCRAM       ECG  R7  Status of $Dx ROM / $Dx RAM
C013 49171 RDRAMRD       ECG  R7  Status of Main/Aux RAM Reading
C014 49172 RDRAMWRT      ECG  R7  Status of Main/Aux RAM Writing
C015 49173 RDCXROM       E G  R7  Status of Periph/ROM Access
           RSTXINT        C   R   Reset Mouse X0 Interrupt
C016 49174 RDALTZP       ECG  R7  Status of Main/Aux Stack and Zero Page
C017 49175 RDC3ROM       E G  R7  Status of Slot 3/Aux Slot ROM
           RSTYINT        C   R   Reset Mouse Y0 Interrupt
C018 49176 RD80STORE     ECG  R7  Status of $C002-$C005/PAGE2 for Aux Mem
C019 49177 RDVBL         E G  R7  Vertical Blanking (E:1=drawing G:0=drawing)
           RSTVBL         C   R   Reset Vertical Blanking Interrupt
C01A 49178 RDTEXT        ECG  R7  Status of Text/Graphics
C01B 49179 RDMIXED       ECG  R7  Status of Full Screen/Mixed Graphics
C01C 49180 RDPAGE2       ECG  R7  Status of Page 1/Page 2
C01D 49181 RDHIRES       ECG  R7  Status of LoRes/HiRes
C01E 49182 RDALTCHAR     ECG  R7  Status of Primary/Alternate Character Set
C01F 49183 RD80VID       ECG  R7  Status of 40/80 Columns
C020 49184 TAPEOUT      OE    R   Toggle Cassette Tape Output
C021 49185 MONOCOLOR       G W 7  Color/Mono
C022 49186 TBCOLOR         G    V Screen Color: Low Nibble is BG, High Nibble is Text
C023 49187 VGCINT          G    V Video Graphics Controller Interrupts:
                                   b0-2=ext,scan,1sec enable b4-7=ext,scan,1sec,VGC
C024 49188 MOUSEDATA       G    V Mouse Data: High Bit is Button, Other Bits are Movement
C025 49189 KEYMODREG       G    V Modifier Keys: Bit 7: Command, Bit 6: Option,
                                                 Bit 5: NotUsed, Bit 4: Keypad,
                                                 Bit 3: Repeat,  Bit 2: Caps,
                                                 Bit 1: Control, Bit 0: Shift
C026 49190 DATAREG         G    V ADB Command/Data b0-2=# b3=valid b4=clr buf
                                                   b5=reboot b6=abort b7=status
C027 49191 KMSTATUS        G    V ADB Status: b0=cmdFull b1=mouseX b2=keyIntr b3=key
                                              b4=cmdIntr b5=data 6=mouseInt 7=mouse
C028 49192 ROMBANK      ????      ROM bank select toggle
C029 49193 NEWVIDEO        G    V New Video: 129=SHR, 1=None, Bit 6=Linearize, Bit 5=BW
C02B 49195 LANGSEL         G      Bit 3=Secondary Bit 4=50Hz Bits 5-7=Display Language
C02C 49196 CHARROM      ????      Addr for test mode read of character ROM
C02D 49197 SLTROMSEL       G      Slot Register; Bits 1-7=use slot card
C02E 49198 VERTCNT      ????      Addr for read of video cntr bits V5-VB
C02F 49199 HORIZCNT     ????      Addr for read of video cntr bits VA-H0
C030 48200 SPKR         OECG  R   Toggle Speaker
C031 49201 DISKREG         G      Disk Interface: Bit 6=3.5 Bit 7=RWHead 1
C032 49202 SCANINT         G    V VGC Interrupt-Clear
C033 49203 CLOCKDATA       G      Interface to Battery RAM (undocumented)
C034 49204 CLOCKCTL        G      b0-3=borderColor b5=stopBit b6=read b7=start
C035 49205 SHADOW          G      Inhibit Shadowing: Bit 6: I/O Memory, Bit 5: Alternate
                                                     Display Mode, Bit 4: Auxilary HGR,
                                                     Bit 3: Super HiRes, Bit 2: HiRes
                                                     Page 2, Bit 1: HiRes Page 1,
                                                     Bit 0: Text/LoRes
C036 49206 CYAREG          G      Bits 0-3=Disk Detect Bit 4=Shadow All Banks Bit 7=Fast
C037 49207 BMAREG          G      Bit 5=BW
C038 49208 SCCBREG         G      SCC Command Channel B
C039 49209 SCCAREG         G      SCC Command Channel A
C03A 49210 SCCBDATA        G      SCC Data Channel B
C03B 49211 SCCADATA        G      SCC Data Channel A
C03C 49212 SOUNDCTL        G    V Sound Settings: Bits 0-3=Volume Bit 5=AutoIncr
                                                  Bit 6=RAM Bit 7=Busy
C03D 49213 SOUNDDATA       G      Sound Data
C03E 49214 SOUNDADRL       G      Address Pointer L
C03F 49215 SOUNDADRH       G      Address Pointer H
C040 49216 STROBE       OE    R   Game I/O Strobe Output
           RDXYMSK        C   R7  Read X0/Y0 Interrupt
C041 49217 RDVBLMSK       C   R7  Read VBL Interrupt
C042 49218 RDX0EDGE       C   R7  Read X0 Edge Selector
C043 49219 RDY0EDGE       C   R7  Read Y0 Edge Selector
C044 49220 MMDELTAX        G    V Mega II Mouse Delta Movement X
C045 49221 MMDELTAY        G    V Mega II Mouse Delta Movement Y
C046 49222 DIAGTYPE     ????      Self or Burn-In diagdistics: Bit 7=burn-in diag
           INTFLAG      ????      b0=IRQ b1=MMmov b2=MMbut b3=VBL b4=qsec
                                  b5=AN3 b6=mouse was down b7=mouse is down
C047 49223 CLRVBLINT    ????      Clear VBL Interrupt
C048 49224 CLRXYINT     ????      Clear MM Interrupt
C048 49224 RSTXY          C  WR   Reset X and Y Interrupts
C04F 49231 EMUBYTE           WR   Emulation ID byte: write once, then read once for program
                                      being used, read again for version number.
                                      $FE=Bernie, $16=Sweet16, $4B=KEGS, $AB=Appleblossom
C050 49232 TXTCLR       OECG WR   Display Graphics
C051 49233 TXTSET       OECG WR   Display Text
C052 49234 MIXCLR       OECG WR   Display Full Screen
C053 49235 MIXSET       OECG WR   Display Split Screen
C054 49236 TXTPAGE1     OECG WR   Display Page 1
C055 49237 TXTPAGE2     OECG WR   If 80STORE Off: Display Page 2
                         ECG WR   If 80STORE On: Read/Write Aux Display Mem
C056 49238 LORES        OECG WR   Display LoRes Graphics
C057 49239 HIRES        OECG WR   Display HiRes Graphics
C058 49240 CLRAN0       OE G WR   If IOUDIS off: Annunciator 0 Off
           DISXY          C  WR   If IOUDIS on: Mask X0/Y0 Move Interrupts
C059 49241 SETAN0       OE G WR   If IOUDIS off: Annunciator 0 On
           ENBXY          C  WR   If IOUDIS on: Allow X0/Y0 Move Interrupts
C05A 49242 CLRAN1       OE G WR   If IOUDIS off: Annunciator 1 Off
           DISVBL         C  WR   If IOUDIS on: Disable VBL Interrupts
C05B 49243 SETAN1       OE G WR   If IOUDIS off: Annunciator 1 On
           ENVBL          C  WR   If IOUDIS on: Enable VBL Interrupts
C05C 49244 CLRAN2       OE G WR   If IOUDIS off: Annunciator 2 Off
           X0EDGE         C  WR   If IOUDIS on: Interrupt on X0 Rising
C05D 49245 SETAN2       OE G WR   If IOUDIS off: Annunciator 2 On
           X0EDGE         C  WR   If IOUDIS on: Interrupt on X0 Falling
C05E 49246 CLRAN3       OE G WR   If IOUDIS off: Annunciator 3 Off
           Y0EDGE         C  WR   If IOUDIS on: Interrupt on Y0 Rising
           DHIRESON      ECG WR   In 80-Column Mode: Double Width Graphics
C05F 49247 SETAN3       OE G WR   If IOUDIS off: Annunciator 3 On
           Y0EDGE         C  WR   If IOUDIS on: Interrupt on Y0 Falling
           DHIRESOFF     ECG WR   In 80-Column Mode: Single Width Graphics
C060 49248 TAPEIN       OE    R7  Read Cassette Input
                          C   R7  Status of 80/40 Column Switch
           BUTN3           G  R7  Switch Input 3
C061 49249 RDBTN0        ECG  R7  Switch Input 0 / Open Apple
C062 49250 BUTN1         E G  R7  Switch Input 1 / Solid Apple
C063 49251 RD63          E G  R7  Switch Input 2 / Shift Key
                          C   R7  Bit 7 = Mouse Button Not Pressed
C064 49252 PADDL0       OECG  R7  Analog Input 0
C065 49253 PADDL1       OECG  R7  Analog Input 1
C066 49254 PADDL2       OE G  R7  Analog Input 2
           RDMOUX1        C   R7  Mouse Horiz Position
C067 49255 PADDL3       OE G  R7  Analog Input 3
           RDMOUY1        C   R7  Mouse Vert Position
C068 49256 STATEREG        G    V b0=INTCXROM b1=ROMBANK b2=LCBNK2 b3=RDROM
                                  b4=RAMWRT b5=RAMRD b6=PAGE2 b7=ALTZP
C06D 49261 TESTREG      ????      Test Mode Bit Register
C06E 49262 CLRTM        ????      Clear Test Mode
C06F 49263 ENTM         ????      Enable Test Mode
C070 49264 PTRIG         E    R   Analog Input Reset
                          C  WR   Analog Input Reset + Reset VBLINT Flag
C073 49267 BANKSEL       ECG W    Memory Bank Select for > 128K
C077 49271 BLOSSOM           W    Appleblossom Special I/O Address
                                      $C1=Install clock driver, $CC=Get time in input
                                      buffer, $CF=get time in ProDOS global page.
C078 49272                C  W    Disable IOU Access
C079 49273                C  W    Enable IOU Access
C07E 49278 IOUDISON      EC  W    Disable IOU
           RDIOUDIS      EC   R7  Status of IOU Disabling
C07F 49279 IOUDISOFF     EC  W    Enable IOU
           RDDHIRES      EC   R7  Status of Double HiRes
C080 49280              OECG  R   Read RAM bank 2; no write
C081 49281 ROMIN        OECG  RR  Read ROM; write RAM bank 2
C082 49282              OECG  R   Read ROM; no write
C083 49283 LCBANK2      OECG  RR  Read/write RAM bank 2
C084 49284              OECG  R   Read RAM bank 2; no write
C085 49285 ROMIN        OECG  RR  Read ROM; write RAM bank 2
C086 49286              OECG  R   Read ROM; no write
C087 49287 LCBANK2      OECG  RR  Read/write RAM bank 2
C088 49288              OECG  R   Read RAM bank 1; no write
C089 49289              OECG  RR  Read ROM; write RAM bank 1
C08A 49290              OECG  R   Read ROM; no write
C08B 49291              OECG  RR  Read/write RAM bank 1
C08C 49292              OECG  R   Read RAM bank 1; no write
C08D 49293              OECG  RR  Read ROM; write RAM bank 1
C08E 49294              OECG  R   Read ROM; no write
C08F 49295              OECG  RR  Read/write RAM bank 1
C090--C09F                     slot 1
C0A0--C0AF                     slot 2
C0B0--C0BF                     slot 3
C0C0--C0CF                     slot 4
C0D0--C0DF                     slot 5
C0E0--C0EF                     slot 6
C0F0--C0FF                     slot 7

Return to Index