| Vss | --- | 1 | -6526 CIA- | 40 | -- | cnt |
| pa0 | <-> | 2 | 39 | -- | sp | |
| pa1 | <-> | 3 | 38 | <-- | rs0 | |
| pa2 | <-> | 4 | 37 | <-- | rs1 | |
| pa3 | <-> | 5 | 36 | <-- | rs2 | |
| pa4 | <-> | 6 | 35 | <-- | rs3 | |
| pa5 | <-> | 7 | 34 | <-- | !rst | |
| pa6 | <-> | 8 | 33 | <-> | d0 | |
| pa7 | <-> | 9 | 32 | <-> | d1 | |
| pb0 | <-> | 10 | 31 | <-> | d2 | |
| pb1 | <-> | 11 | 30 | <-> | d3 | |
| pb2 | <-> | 12 | 29 | <-> | d4 | |
| pb3 | <-> | 13 | 28 | <-> | d5 | |
| pb4 | <-> | 14 | 27 | <-> | d6 | |
| pb5 | <-> | 15 | 26 | <-> | d7 | |
| pb6 | <-> | 16 | 25 | <-- | ph2 | |
| pb7 | <-> | 17 | 24 | -- | !flag | |
| !pc | -- | 18 | 23 | <-- | !cs | |
| tod | --> | 19 | 22 | <-- | r/!w | |
| Vcc | --- | 20 | 21 | <-- | !irq |
Base = DC00 for CIA1, DD00 for CIA2.
| Offset | Bits, CIA1 | Bits, CIA2 | |||
| 00 | Data Port A |
(Serial Bus, RS-232, VIC Memory Control) |
|||
| 7-0 | Write Keyboard Column Values for Keyboard Scan | ||||
| 7-6 | Read Paddles on Port A / B (01 = Port A, 10 = Port B) |
7 | Serial Bus Data Input | ||
| 6 | Serial Bus Clock Pulse Input | ||||
| 5 | Serial Bus Data Output | ||||
| 4 | Joystick A Fire Button: 1 = Fire | 4 | Serial Bus Clock Pulse Output | ||
| 3-2 | Paddle Fire Buttons | ||||
| 3-0 | Joystick A Direction (0-15) | 3 | Serial Bus ATN Signal Output | ||
| 2 | RS-232 Data Output (User Port) | ||||
| 1-0 | VIC Chip System Memory Bank Select (Default = 11) | ||||
| 01 | Data Port B |
7-0 | Read: Keyboard Row Values for Keyboard Scan |
||
| 7 | Timer B Toggle/Pulse Output | 7 | User / RS-232 Data Set Ready | ||
| 6 | Timer A: Toggle/Pulse Output | 6 | User / RS-232 Clear to Send | ||
| 5 | Joystick 1 Fire Button: 1 = Fire. | 5 | User | ||
| 4 | User / RS-232 Carrier Detect | ||||
| 3-2 | Paddle Fire Buttons | ||||
| 3-0 | Joystick 1 Direction | 3 | User / RS-232 Ring Indicator | ||
| 2 | User / RS-232 Data Terminal Ready | ||||
| 1 | User / RS-232 Request to Send | ||||
| 0 | User / RS-232 Received Data | ||||
| 02 | Data Direction Register - Port A | ||||
| 03 | Data Direction Register - Port B | ||||
| 04,05 | Timer A: Low-Byte, High-Byte | ||||
| 06,07 | Timer B: Low-Byte, High-Byte | ||||
| 08 | Time-of-Day Clock: 1/10 Seconds | ||||
| 09 | Time-of-Day Clock: Seconds | ||||
| 0A | Time-of-Day Clock: Minutes | ||||
| 0B | Time-of-Day Clock: Hours + AM/PM Flag (Bit 7) | ||||
| 0c | Synchronous Serial I/O Data Buffer | ||||
| 0d | Interrupt Control Register (Read IRQs /Write Mask) |
0 | Timer A Interrupt | 0 | |
| 1 | Timer B Interrupt | 1 | |||
| 2 | Time-of-Day Clock Alarm Interrupt | 2 | |||
| 3 | Serial Port Interrupt | 3 | |||
| 4 | FLAG1 IRQ (Cassette Read / Serial Bus SRQ Input) |
4 | FLAG1 NMI (User/RS-232 Received Data Input) | ||
| 5 | 5 | ||||
| 6 | 6 | ||||
| 7 | IRQ Flag (1 = IRQ Occurred) / Set-Clear Flag |
7 | NMI Flag (1 = NMI Occurred) / Set-Clear Flag | ||
| 0e | Control Register A |
7 | Time-of-Day Clock Frequency: 1 = 50 Hz, 0 = 60 Hz | ||
| 6 | Serial Port I/O Mode Output, 0 = Input | ||||
| 5 | Timer A Counts: 1 = CNT Signals, 0 = System 02 Clock |
||||
| 4 | Force Load Timer A: 1 = Yes | ||||
| 3 | Timer A Run Mode: 1 = One-Shot, 0 = Continuous | ||||
| 2 | Timer A Output Mode to PB6: 1 = Toggle, 0 = Pulse | ||||
| 1 | Timer A Output on PB6: 1 = Yes, 0 = No | ||||
| 0 | Start/Stop Timer A: 1 = Start, 0 = Stop | ||||
| 0f | Control Register B |
7 | Set Alarm/TOD-Clock: 1 = Alarm, 0 = Clock | ||
| 6-5 | Timer B Mode Select: 00 = Count System 02 Clock Pulses 01 = Count Positive CNT Transitions 10 = Count Timer A Underflow Pulses 11 = Count Timer A Underflows While CNT Positive |
||||
| 4-0 | Same as CIA Control Reg. A - for Timer B | ||||