6526 CIA

Pinout

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

Registers

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