;	Commodore 64 I/O Map
;	V1.1	1 Jun 1994


	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 (O=Swith Char. ROM In)
			3	Cassette Data Output Line
			4	Cassette Switch Sense: 1 = Switch Closed
			5	Cassette Motor Control
				O = ON, 1 = OFF
			6-7	Undefined


D000-D02E	53248-54271	MOS 6566 VIDEO INTERFACE CONTROLLER (VIC)

D000		53248		Sprite O X Pos
D001		53249		Sprite O 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: O = 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

D017	53271			Sprites O-7 Expand 2x Vertical (Y)

D018	53272			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

D019	53273			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 O-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 O
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 O 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
D02E	53294			Sprite 7 Color

D400-D7FF	54272-55295	MOS 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: O-15
			3-0	Select Decay Cycle Duration: 0-15

D406	54278			Envelope Generator 1: Sustain / Release Cycle Control
			7-4	Select Sustain Cycle Duration: O-15
			3-0	Select Release Cycle Duration: O-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: O-15
			3-0	Select Decay Cycle Duration: 0-15

D40D	54285			Envelope Generator 2: Sustain / Release Cycle Control
			7-4	Select Sustain Cycle Duration: O-15
			3-0	Select Release Cycle Duration: O-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-4	Unused
			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: Attac/Decay Cycle Control 
			7-4	Select Attack Cycle Duration: O-15
			3-0	Select Decay Cycle Duration: 0-15

D414	54285			Envelope Generator 3: Sustain / Release Cycle Control
			7-4	Select Sustain Cycle Duration: O-15
			3-0	Select Release Cycle Duration: O-15


D415	54293			Filter Cutoff Frequency: Low-Nybble (Bits 2-O)
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
				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, O = 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 (O-255)
D41A	54298			Analog/Digital Converter Game Paddle 2 (O-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

DD00	56576			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-O	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

DD02	56578			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


DEOO-DEFF	56832-57087	Reserved for Future I/O Expansion
DFOO-DFFF	57088-57343	Reserved for Future I/O Expansion


    Source: geocities.com/timessquare/arcade/2045/docs/C64

               ( geocities.com/timessquare/arcade/2045/docs)                   ( geocities.com/timessquare/arcade/2045)                   ( geocities.com/timessquare/arcade)                   ( geocities.com/timessquare)