[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]

COMMODORE 64 INPUT/OUTPUT ASSIGNMENTS

HEX DECIMAL BITS DESCRIPTION
0000 0 7-0 MOS 6510 Data Direction Register (xx101111)
Bit= 1: Output, Bit=0: Input, x=Don't Care
0001 1  MOS 6510 Micro-Processor On-Chip I/O Port
0 /LORAM Signal (0=Switch BASIC ROM Out)
1 /HIRAM Signal (0=Switch Kernal ROM Out)
2 /CHAREN Signal (0=Switch Char. ROM In)
3 Cassette Data Output Line
4 Cassette Switch Sense: 1 = Switch Closed
5 Cassette Motor Control 0 = ON, 1 = OFF
6-7 Undefined
D000-D02E53248-54271 MOS 6566 VIDEO INTERFACE CONTROLLER (VIC)
D00053248Sprite 0 X Pos
D001 53249 Sprite 0 Y Pos
D002 53250 Sprite 1 X Pos
D003 53251 Sprite 1 Y Pos
D004 53252 Sprite 2 X Pos
D005 53253 Sprite 2 Y Pos
D006 53254 Sprite 3 X Pos
D007 53255 Sprite 3 Y Pos
D008 53256 Sprite 4 X Pos
D009 53257 Sprite 4 Y Pos
D00A 53258 Sprite 5 X Pos
D00B 53259 Sprite 5 Y Pos
D00C 53260 Sprite 6 X Pos
D00D 53261 Sprite 6 Y Pos
D00E 53262 Sprite 7 X Pos
D00F 53263 Sprite 7 Y Pos
D010 53264 Sprites 0-7 X Pos (msb of X coord.)
D011 53265   VIC Control Register
7 Raster Compare: (Bit 8) See 53266
6 Extended Color Text Mode: 1 = Enable
5 Bit Map Mode: 1 = Enable
4 Blank Screen to Border Color: 0 = Blank
3 Select 24/25 Row Text Display: 1=25 Rows
2-0 Smooth Scroll to Y Dot-Position (0-7)
D012 53266  Read Raster/Write Raster Value for Compare IRQ
D013 53267 Light-Pen Latch X Pos
D014 53268 Light-Pen Latch Y Pos
D015 53269 Sprite display Enable: 1 = Enable
D016 53270   VIC Control Register
7-6 Unused
5 ALWAYS SET THIS BIT TO 0 !
4 Multi-Color Mode: 1 = Enable (Text or Bit-Map)
3 Select 38/40 Column Text Display: 1 = 40 Cols
2-0 Smooth Scroll to X Pos
D01753271  Sprites 0-7 Expand 2x Vertical (Y)
D01853272 VIC Memory Control Register
7-4 Video Matrix Base Address (inside VIC)
3-1 Character Dot-Data Base Address (inside VIC)
0 Select upper/lower Character Set
D01953273 VIC Interrupt Flag Register (Bit = 1: IRQ Occurred)
7 Set on Any Enabled VIC IRQ Condition
3 Light-Pen Triggered IRQ Flag
2 Sprite to Sprite Collision IRQ Flag
1 Sprite to Background Collision IRQ Flag
0 Raster Compare IRQ Flag
D01A 53274  IRQ Mask Register: 1 = Interrupt Enabled
D01B 53275 Sprite to Background Display Priority: 1 = Sprite
D01C 53276 Sprites 0-7 Multi-Color Mode Select: 1 = M.C.M.
D01D 53277 Sprites 0-7 Expand 2x Horizontal (X)
D01E 53278 Sprite to Sprite Collision Detect
D01F 53279 Sprite to Background Collision Detect
D020 53280 Border Color
D021 53281 Background Color 0
D022 53282 Background Color 1
D023 53283 Background Color 2
D024 53284 Background Color 3
D025 53285 Sprite Multi-Color Register 0
D026 53286 Sprite Multi-Color Register 1
D027 53287 Sprite 0 Color
D028 53288 Sprite 1 Color
D029 53289 Sprite 2 Color
D02A 53290 Sprite 3 Color
D02B 53291 Sprite 4 Color
D02C 53292 Sprite 5 Color
D02D 53293 Sprite 6 Color
D02E53294Sprite 7 Color
D400-D7FF54272-55295MOS 6581 SOUND INTERFACE DEVICE (SID)
D400 54272 Voice 1: Frequency Control - Low-Byte
D401 54273 Voice 1: Frequency Control - High-Byte
D402 54274 Voice 1: Pulse Waveform Width - Low-Byte
D403 54275 7-4 Unused
3-0 Voice 1: Pulse Waveform Width - High-Nybble
D404 54276 Voice 1: Control Register
7 Select Random Noise Waveform, 1 = On
6 Select Pulse Waveform, 1 = On
5 Select Sawtooth Waveform, 1 = On
4 Select Triangle Waveform, 1 = On
3 Test Bit: 1 = Disable Oscillator 1
2 Ring Modulate Osc. 1 with Osc. 3 Output, 1 = On
1 Synchronize Osc.1 with Osc.3 Frequency, 1 = On
0 Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release
D405 54277 Envelope Generator 1: Attack/Decay Cycle Control
7-4 Select Attack Cycle Duration: 0-15
3-0 Select Decay Cycle Duration: 0-15
D406 54278 Envelope Generator 1: Sustain/Release Cycle Control
7-4 Select Sustain Cycle Duration: 0-15
3-0 Select Release Cycle Duration: 0-15
D407 54279 Voice 2: Frequency Control - Low-Byte
D408 54280 Voice 2: Frequency Control - High-Byte
D409 54281 Voice 2: Pulse Waveform Width - Low-Byte
D40A 54282 7-4 Unused
3-0 Voice 2: Pulse Waveform Width - High-Nybble
D40B 54283 Voice 2: Control Register
7 Select Random Noise Waveform, 1 = On
6 Select Pulse Waveform, 1 = On
5 Select Sawtooth Waveform, 1 = On
4 Select Triangle Waveform, 1 = On
3 Test Bit: 1 = Disable Oscillator 1
2 Ring Modulate Osc. 2 with Osc. 1 Output, 1 = On
1 Synchronize Osc.2 with Osc. 1 Frequency, 1 = On
0 Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release
D40C 54284  Envelope Generator 2: Attack / Decay Cycle Control
7-4 Select Attack Cycle Duration: 0-15
3-0 Select Decay Cycle Duration: 0-15
D40D 54285  Envelope Generator 2: Sustain / Release Cycle Control
7-4 Select Sustain Cycle Duration: 0-15
3-0 Select Release Cycle Duration: 0-15
D40E 54286  Voice 3: Frequency Control - Low-Byte
D40F 54287 Voice 3: Frequency Control - High-Byte
D410 54288 Voice 3: Pulse Waveform Width - Low-Byte
D411 54289 7-4Unused
3-0 Voice 3: Pulse Waveform Width - High-Nybble
D412 54290 Voice 3: Control Register
7 Select Random Noise Waveform, 1 = On
6 Select Pulse Waveform, 1 = On
5 Select Sawtooth Waveform, 1 = On
4 Select Triangle Waveform, 1 = On
3 Test Bit: 1 = Disable Oscillator 1
2 Ring Modulate Osc. 3 with Osc. 2 Output, 1 = On
1 Synchronize Osc. 3 with Osc.2 Frequency, 1 = On
0 Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release
D413 54291 Envelope Generator 3: Attack/Decay Cycle Control
7-4 Select Attack Cycle Duration: 0-15
3-0 Select Decay Cycle Duration: 0-15
D414 54285 Envelope Generator 3: Sustain / Release Cycle Control
7-4 Select Sustain Cycle Duration: 0-15
3-0 Select Release Cycle Duration: 0-15
D415 54293 Filter Cutoff Frequency: Low-Nybble (Bits 2-0)
D416 54294 Filter Cutoff Frequency: High-Byte
D417 54295 Filter Resonance Control / Voice Input Control
7-4 Select Filter Resonance: 0-15
3 Filter External Input: 1 = Yes, 0 = No
2 Filter Voice 3 Output: 1 = Yes, 0 = No
1 Filter Voice 2 Output: 1 = Yes, 0 = No
0 Filter Voice 1 Output: 1 = Yes, 0 = No
D418 54296 Select Filter Mode and Volume
7 Cut-Off Voice 3 Output: 1 = Off, 0 = On
6 Select Filter High-Pass Mode: 1 = On
5 Select Filter Band-Pass Mode: 1 = On
4 Select Filter Low-Pass Mode: 1 = On
3-0 Select Output Volume: 0-15
D419 54297 Analog/Digital Converter: Game Paddle 1 (0-255)
D41A 54298 Analog/Digital Converter: Game Paddle 2 (0-255)
D41B 54299 Oscillator 3 Random Number Generator
D41C 54230 Envelope Generator 3 Output
D500-D7FF 54528-55295 SID IMAGES
D800-DBFF 55296-56319 Color RAM (Nybbles)
DC00-DCFF 56320-56575 MOS 6526 Complex Interface Adapter (CIA) #1
DC00 56320  Data Port A (Keyboard, Joystick, Paddles, Light-Pen)
7-0 Write Keyboard Column Values for Keyboard Scan
7-6 Read Paddles on Port A / B (01 = Port A, 10 = Port B)
4 Joystick A Fire Button: 1 = Fire
3-2 Paddle Fire Buttons
3-0 Joystick A Direction (0-15)
DC01 56321 Data Port B (Keyboard, Joystick, Paddles): Game Port 1
7-0 Read Keyboard Row Values for Keyboard Scan
7 Timer B Toggle/Pulse Output
6 Timer A: Toggle/Pulse Output
4 Joystick 1 Fire Button: 1 = Fire
3-2 Paddle Fire Buttons
3-0 Joystick 1 Direction
DC02 56322 Data Direction Register - Port A (56320)
DC03 56323 Data Direction Register - Port B (56321)
DC04 56324 Timer A: Low-Byte
DC05 56325 Timer A: High-Byte
DC06 56326 Timer B: Low-Byte
DC07 56327 Timer B: High-Byte
DC08 56328 Time-of-Day Clock: 1/10 Seconds
DC09 56329 Time-of-Day Clock: Seconds
DC0A 56330 Time-of-Day Clock: Minutes
DC0B 56331 Time-of-Day Clock: Hours + AM/PM Flag (Bit 7)
DC0C 56332 Synchronous Serial I/O Data Buffer
DC0D 56333  CIA Interrupt Control Register (Read IRQs/Write Mask)
7 IRQ Flag (1 = IRQ Occurred) / Set-Clear Flag
4 FLAG1 IRQ (Cassette Read / Serial Bus SRQ Input)
3 Serial Port Interrupt
2 Time-of-Day Clock Alarm Interrupt
1 Timer B Interrupt
0 Timer A Interrupt
DC0E 56334 CIA 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
DC0F 56335  CIA 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
DD00-DDFF 56576-56831 MOS 6526 Complex Interface Adapter (CIA) #2
DD0056576 Data Port A (Serial Bus, RS-232, VIC Memory Control)
7 Serial Bus Data Input
6 Serial Bus Clock Pulse Input
5 Serial Bus Data Output
4 Serial Bus Clock Pulse Output
3 Serial Bus ATN Signal Output
2 RS-232 Data Output (User Port)
1-0 VIC Chip System Memory Bank Select (Default = 11)
DD01 56577 Data Port B (User Port, RS-232)
7 User / RS-232 Data Set Ready
6 User / RS-232 Clear to Send
5 User
4 User / RS-232 Carrier Detect
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
DD0256578 Data Direction Register - Port A
DD03 56579 Data Direction Register - Port B
DD04 56580 Timer A: Low-Byte
DD05 56581 Timer A: High-Byte
DD06 56582 Timer B: Low-Byte
DD07 56583 Timer B: High-Byte
DD08 56584 Time-of-Day Clock: 1/10 Seconds
DD09 56585 Time-of-Day Clock: Seconds
DD0A 56586 Time-of-Day Clock: Minutes
DD0B 56587 Time-of-Day Clock: Hours + AM/PM Flag (Bit 7)
DD0C 56588 Synchronous Serial I/O Data Buffer
DD0D 56589 CIA Interrupt Control Register (Read NMls/Write Mask)
7 NMI Flag (1 = NMI Occurred) / Set-Clear Flag
4 FLAG1 NMI (User/RS-232 Received Data Input)
3 Serial Port Interrupt
1 Timer B Interrupt
0 Timer A Interrupt
DD0E 56590 CIA 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
DD0F 56591  CIA 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
DE00-DEFF 56832-57087  Reserved for Future I/O Expansion
DF00-DFFF 57088-57343  Reserved for Future I/O Expansion

[Prev] [Next] [Contents] [Commodore] [New] [Search] [Home]
This page has been created by Sami Rautiainen.
Read the small print. Last updated January 10, 2003.