
COMMODORE 64  MEMORY MAPS

          ADDRESS
LABEL     HEX         DEC     DESCRIPTION
-----------------------------------------------------------------------------
D6510     0000        0       6510 On-chip Data Direction Register.
R6510     0001        1       6510 On-chip 8-bit Input/Output Register.
TEMP      0002        2       Unused. Free for user programs.
ADRAY1    0003-0004   3       Jump Vector: Convert FAC to Integer in (A/Y)
                              ($B1AA).
ADRAY2    0005-0006   5       Jump Vector: Convert Integer in (A/Y) to
                              Floating point in (FAC); ($B391).
CHARAC    0007        7       Search Character/Temporary Integer during INT.
ENDCHR    0008        8       Flag: Scan for Quote at end of String.
INTEGR    0007-0008   7       Temporary Integer during OR/AND.
TRMPOS    0009        9       Screen Column for last TAB.
VERCK     000A        10      Flag: 0 = Load, 1 = Verify.
COUNT     000B        11      Input Buffer Pointer/Number of Subscripts.
DIMFLG    000C        12      Flag: Default Array dimension.
VALTYP    000D        13      Data type Flag: $00 = Numeric, $FF = String.
INTFLG    000E        14      Data type Flag: $00 = Floating point, $80 =
                              Integer.
GARBFL    000F        15      Flag: DATA scan/List Quote/Garbage collection.
SUBFLG    0010        16      Flag: Subscript reference/User Function call.
INPFLG    0011        17      Input Flag: $00 = INPUT, $40 = GET, $98 =
                              READ.
TANSGN    0012        18      Flag: TAN sign/Comparative result.
CHANNL    0013        19      File number of current Input Device.
LINNUM    0014-0015   20      Temporary: Integer value.
TEMPPT    0016        22      Pointer: Temporary String Stack.
LASTPT    0017-0018   23      Last temporary String Address.
TEMPST    0019-0021   25      Stack for temporary Strings.
INDEX     0022-0025   34      Utility Pointer Area.
INDEX1    0022-0023   34      First Utility Pointer.
INDEX2    0024-0025   36      Second Utility Pointer.
RESHO     0026-002A   38      Floating point product of Multiply and
                              Divide.
TXTTAB    002B-002C   43      Pointer: Start of BASIC Text Area ($0801).
VARTAB    002D-002E   45      Pointer: Start of BASIC Variables.
ARYTAB    002F-0030   47      Pointer: Start of BASIC Arrays.
STREND    0031-0032   49      Pointer: End of BASIC Arrays + 1.
FRETOP    0033-0034   51      Pointer: Bottom of String space.
FRESPC    0035-0036   53      Utility String Pointer.
MEMSIZ    0037-0038   55      Pointer: Highest Address available to BASIC
                              ($A000).
CURLIN    0039-003A   57      Current BASIC Line number.
OLDLIN    003B-003C   59      Previous BASIC Line number.
OLDTXT    003D-003E   61      Pointer: BASIC Statement for CONT.
DATLIN    003F-0040   63      Current DATA Line number.
DATPTR    0041-0042   65      Pointer: Used by READ - current DATA Item
                              Address.
INPPTR    0043-0044   67      Pointer: Temporary storage of Pointer during
                              INPUT Routine.
VARNAM    0045-0046   69      Name of Variable being sought in Variable
                              Table.
VARPNT    0047-0048   71      Pointer: to value of (VARNAM) if Integer, to
                              descriptor if String.
FORPNT    0049-004A   73      Pointer: Index Variable for FOR/NEXT loop.
VARTXT    004B-004C   75      Temporary storage for TXTPTR during READ,
                              INPUT and GET.
OPMASK    004D        77      Mask used during FRMEVL.
TEMPF3    004E-0052   78      Temporary storage for FLPT value.
FOUR6     0053        83      Length of String Variable during Garbege
                              collection.
JMPER     0054-0056   84      Jump Vector used in Function Evaluation -
                              JMP followed by Address ($4C,$LB,$MB).
TEMPF1    0057-005B   87      Temporary storage for FLPT value.
TEMPF2    005C-0060   92      Temporary storage for FLPT value.
FAC       0061-0066   97      Main Floating point Accumulator.
FACEXP    0061        97      FAC Exponent.
FACHO     0062-0065   98      FAC Mantissa.
FACSGN    0066        102     FAC Sign.
SGNFLG    0067        103     Pointer: Series Evaluation Constant.
BITS      0068        104     Bit Overflow Area during normalisation
                              Routine.
AFAC      0069-006E   105     Auxiliary Floating point Accumulator.
ARGEXP    0069        105     AFAC Exponent.
ARGHO     006A-006D   106     AFAC Mantissa.
ARGSGN    006E        110     AFAC Sign.
ARISGN    006F        111     Sign of result of Arithmetic Evaluation.
FACOV     0070        112     FAC low-order rounding.
FBUFPT    0071-0072   113     Pointer: Used during CRUNCH/ASCII conversion.
CHRGET    0073-008A   115     Subroutine: Get next Byte of BASIC Text.
            ,0073  INC $7A       ,0082  BEQ $0073
            ,0075  BNE $0079     ,0084  SEC
            ,0077  INC $7B       ,0085  SBC #$30
          ! ,0079  LDA $0801     ,0087  SEC
            ,007C  CMP #$3A      ,0088  SBC #$D0
            ,007E  BCS $008A     ,008A  RTS
            ,0080  CMP #$20
CHRGOT    0079        121     Entry to Get same Byte again.
TXTPTR    007A-007B   122     Pointer: Current Byte of BASIC Text.
RNDX      008B-008F   139     Floating RND Function Seed Value.
STATUS    0090        144     Kernal I/O Status Word  ST.
STKEY     0091        145     Flag: $7F = STOP key.
SVXT      0092        146     Timing Constant for Tape.
VERCKK    0093        147     Flag: 0 = Load, 1 = Verify.
C3PO      0094        148     Flag: Serial Bus - Output Character buffered.
BSOUR     0095        149     Buffered Character for Serial Bus.
SYNO      0096        150     Cassette Sync. number.
TEMPX     0097        151     Temporary storage of X Register during CHRIN.
TEMPY     0097        151     Temporary storage of Y Register during RS232
                              fetch.
LDTND     0098        152     Number of Open Files/Index to File Table.
DFLTN     0099        153     Default Input Device (0).
DFLTO     009A        154     Default Output Device (3).
PRTY      009B        155     Parity of Byte Output to Tape.
DPSW      009C        156     Flag: Byte received from Tape.
MSGFLG    009D        157     Flag: $00 = Program mode: Suppress Error
                              Messages, $40 = Kernal Error Messages only,
                              $80 = Direct mode: Full Error Messages.
FNMIDX    009E        158     Index to Cassette File name/Header ID for
                              Tape write.
PTR1      009E        158     Tape Error log pass 1.
PTR2      009F        159     Tape Error log pass 2.
TIME      00A0-00A2   160     Real-time jiffy Clock (Updated by IRQ
                              Interrupt approx. every 1/60 of Second);
                              Update Routine: UDTIMK ($F69B).
TSFCNT    00A3        163     Bit Counter Tape Read or Write/Serial Bus
                              EOI (End Of Input) Flag.
TBTCNT    00A4        164     Pulse Counter Tape Read or Write/Serial Bus
                              shift Counter.
CNTDN     00A5        165     Tape Synchronising count down.
BUFPNT    00A6        166     Pointer: Tape I/O buffer.
INBIT     00A7        167     RS232 temporary for received Bit/Tape
                              temporary.
BITC1     00A8        168     RS232 Input Bit count/Tape temporary.
RINONE    00A9        169     RS232 Flag: Start Bit check/Tape temporary.
RIDATA    00AA        170     RS232 Input Byte Buffer/Tape temporary.
RIPRTY    00AB        171     RS232 Input parity/Tape temporary.
SAL       00AC-00AD   172     Pointer: Tape Buffer/Screen scrolling.
EAL       00AE-00AF   174     Tape End Address/End of Program.
CMPO      00B0-00B1   176     Tape timing Constants.
TAPE1     00B2-00B3   178     Pointer: Start Address of Tape Buffer ($033C).
BITTS     00B4        180     RS232 Write bit count/Tape Read timing Flag.
NXTBIT    00B5        181     RS232 Next Bit to send/Tape Read - End of
                              Tape.
RODATA    00B6        182     RS232 Output Byte Buffer/Tape Read Error Flag.
FNLEN     00B7        183     Number of Characters in Filename.
LA        00B8        184     Current File - Logical File number.
SA        00B9        185     Current File - Secondary Address.
FA        00BA        186     Current File - First Address (Device number).
                                OPEN LA,FA,SA;  OPEN 1,8,15,"I0":CLOSE 1
FNADR     00BB-00BC   187     Pointer: Current File name Address.
ROPRTY    00BD        189     RS232 Output Parity/Tape Byte to be Input or
                              Output.
FSBLK     00BE        190     Tape Input/Output Block count.
MYCH      00BF        191     Serial Word Buffer.
CAS1      00C0        192     Tape Motor Switch.
STAL      00C1-00C2   193     Start Address for LOAD and Cassette Write.
MEMUSS    00C3-00C4   195     Pointer: Type 3 Tape LOAD and general use.
LSTX      00C5        197     Matrix value of last Key pressed; No Key = $40.
NDX       00C6        198     Number of Characters in Keyboard Buffer
                              queue.
RVS       00C7        199     Flag: Reverse On/Off; On = $01, Off = $00.
INDX      00C8        200     Pointer: End of Line for Input (Used to
                              suppress trailing spaces).
LXSP      00C9-00CA   201     Cursor X/Y (Line/Column) position at start of
                              Input.
SFDX      00CB        203     Flag: Print shifted Characters.
BLNSW     00CC        204     Flag: Cursor blink; $00 = Enabled, $01 =
                              Disabled.
BLNCT     00CD        205     Timer: Count down for Cursor blink toggle.
GDBLN     00CE        206     Character under Cursor while Cursor Inverted.
BLNON     00CF        207     Flag: Cursor Status; $00 = Off, $01 = On.
CRSW      00D0        208     Flag: Input from Screen = $03, or Keyboard =
                              $00.
PNT       00D1-00D2   209     Pointer: Current Screen Line Address.
PNTR      00D3        211     Cursor Column on current Line, including
                              Wrap-round Line, if any.
QTSW      00D4        212     Flag: Editor in Quote Mode; $00 = Not.
LNMX      00D5        213     Current logical Line length: 39 or 79.
TBLX      00D6        214     Current Screen Line number of Cursor.
SCHAR     00D7        215     Screen value of current Input Character/Last
                              Character Output.
INSRT     00D8        216     Count of number of inserts outstanding.
LDTB1     00D9-00F2   217     Screen Line link Table/Editor temporaries.
                              High Byte of Line Screen Memory Location.
USER      00F3-00F4   243     Pointer: Current Colour RAM Location.
KEYTAB    00F5-00F6   245     Vector: Current Keyboard decoding Table.
                              ($EB81)
RIBUF     00F7-00F8   247     RS232 Input Buffer Pointer.
ROBUF     00F9-00FA   249     RS232 Output Buffer Pointer.
FREKZP    00FB-00FE   251     Free Zero Page space for User Programs.
BASZPT    00FF        255     BASIC temporary Data Area.
ASCWRK    00FF-010A   255     Assembly Area for Floating point to ASCII
                              conversion.
BAD       0100-013E   256     Tape Input Error log.
STACK     0100-01FF   256     6510 Hardware Stack Area.
BSTACK    013F-01FF   319     BASIC Stack Area.
BUF       0200-0258   512     BASIC Input Buffer (Input Line from Screen).
LAT       0259-0262   601     Kernal Table: Active logical File numbers.
FAT       0263-026C   611     Kernal Table: Active File First Addresses
                              (Device numbers).
SAT       026D-0276   621     Kernal Table: Active File Secondary
                              Addresses.
KEYD      0277-0280   631     Keyboard Buffer Queue (FIFO).
MEMSTR    0281-0282   641     Pointer: Bottom of Memory for Operating
                              System ($0800).
MEMSIZ    0283-0284   643     Pointer: Top of Memory for Operating
                              System ($A000).
TIMOUT    0285        645     Serial IEEE Bus timeout defeat Flag.
COLOR     0286        646     Current Character Colour code.
GDCOL     0287        647     Background Colour under Cursor.
HIBASE    0288        648     High Byte of Screen Memory Address ($04).
XMAX      0289        649     Maximum number of Bytes in Keyboard
                              Buffer ($0A).
RPTFLG    028A        650     Flag: Repeat keys; $00 = Cursors, INST/DEL &
                              Space repeat, $40 no Keys repeat, $80 all
                              Keys repeat ($00).
KOUNT     028B        651     Repeat Key: Speed Counter ($04).
DELAY     028C        652     Repeat Key: First repeat delay Counter ($10).
SHFLAG    028D        653     Flag: Shift Keys: Bit 1 = Shift, Bit 2 = CBM,
                              Bit 3 = CTRL; ($00 = None, $01 = Shift, etc.).
LSTSHF    028E        654     Last Shift Key used for debouncing.
KEYLOG    028F-0290   655     Vector: Routine to determine Keyboard table
                              to use based on Shift Key Pattern ($EB48).
MODE      0291        657     Flag: Upper/Lower Case change: $00 = Disabled,
                              $80 = Enabled ($00).
AUTODN    0292        658     Flag: Auto scroll down: $00 = Disabled ($00).
M51CTR    0293        659     RS232 Pseudo 6551 control Register Image.
M51CDR    0294        660     RS232 Pseudo 6551 command Register Image.
M51AJB    0295-0296   661     RS232 Non-standard Bits/Second.
RSSTAT    0297        663     RS232 Pseudo 6551 Status Register Image.
BITNUM    0298        664     RS232 Number of Bits left to send.
BAUDOF    0299-029A   665     RS232 Baud Rate; Full Bit time microseconds.
RIDBE     029B        667     RS232 Index to End of Input Buffer.
RIDBS     029C        668     RS232 Pointer: High Byte of Address of Input
                              Buffer.
RODBS     029D        669     RS232 Pointer: High Byte of Address of Output
                              Buffer.
RODBE     029E        670     RS232 Index to End of Output Buffer.
IRQTMP    029F-02A0   671     Temporary store for IRQ Vector during Tape
                              operations.
ENABL     02A1        673     RS232 Enables.
TODSNS    02A2        674     TOD sense during Tape I/O.
TRDTMP    02A3        675     Temporary storage during Tape READ.
TD1IRQ    02A4        676     Temporary D1IRQ Indicator during Tape READ.
TLNIDX    02A5        677     Temporary for Line Index.
TVSFLG    02A6        678     Flag: TV Standard: $00 = NTSC, $01 = PAL.
TEMP      02A7-02FF   679     Unused.
SPR11     02C0-02FE   704     Sprite #11 Data Area.
                                (SCREEN + $03F8 + SPR number)
                                POKE 1024+1016+0,11  to use Sprite#0 DATA
                                from ($02C0-$02FE).
IERROR    0300-0301   768     Vector: Indirect entry to BASIC Error
                              Message, (X) points to Message ($E38B).
IMAIN     0302-0303   770     Vector: Indirect entry to BASIC Input Line
                              and Decode ($A483).
ICRNCH    0304-0305   772     Vector: Indirect entry to BASIC Tokenise
                              Routine ($A57C).
IQPLOP    0306-0307   774     Vector: Indirect entry to BASIC LIST
                              Routine ($A71A).
IGONE     0308-0309   776     Vector: Indirect entry to BASIC Character
                              dispatch Routine ($A7E4).
IEVAL     030A-030B   778     Vector: Indirect entry to BASIC Token
                              evaluation ($AE86).
SAREG     030C        780     Storage for 6510 Accumulator during SYS.
SXREG     030D        781     Storage for 6510 X-Register during SYS.
SYREG     030E        782     Storage for 6510 Y-Register during SYS.
SPREG     030F        783     Storage for 6510 Status Register during SYS.
USRPOK    0310        784     USR Function JMP Instruction ($4C).
USRADD    0311-0312   785     USR Address ($LB,$MB).
TEMP      0313        787     Unused.
CINV      0314-0315   788     Vector: Hardware IRQ Interrupt Address ($EA31).
CNBINV    0316-0317   790     Vector: BRK Instruction Interrupt Address
                              ($FE66).
NMINV     0318-0319   792     Vector: Hardware NMI Interrupt Address ($FE47).
IOPEN     031A-031B   794     Vector: Indirect entry to Kernal OPEN
                              Routine ($F34A).
ICLOSE    031C-031D   796     Vector: Indirect entry to Kernal CLOSE
                              Routine ($F291).
ICHKIN    031E-031F   798     Vector: Indirect entry to Kernal CHKIN
                              Routine ($F20E).
ICKOUT    0320-0321   800     Vector: Indirect entry to Kernal CHKOUT
                              Routine ($F250).
ICLRCH    0322-0323   802     Vector: Indirect entry to Kernal CLRCHN
                              Routine ($F333).
IBASIN    0324-0325   804     Vector: Indirect entry to Kernal CHRIN
                              Routine ($F157).
IBSOUT    0326-0327   806     Vector: Indirect entry to Kernal CHROUT
                              Routine ($F1CA).
ISTOP     0328-0329   808     Vector: Indirect entry to Kernal STOP
                              Routine ($F6ED).
IGETIN    032A-032B   810     Vector: Indirect entry to Kernal GETIN
                              Routine ($F13E).
ICLALL    032C-032D   812     Vector: Indirect entry to Kernal CLALL
                              Routine ($F32F).
USRCMD    032E-032F   814     User Defined Vector ($FE66).
ILOAD     0330-0331   816     Vector: Indirect entry to Kernal LOAD
                              Routine ($F4A5).
ISAVE     0332-0333   818     Vector: Indirect entry to Kernal SAVE
                              Routine ($F5ED).
TEMP      0334-033B   820     Unused.
TBUFFR    033C-03FB   828     Tape I/O Buffer.
SPR13     0340-037E   832     Sprite #13.
SPR14     0380-03BE   896     Sprite #14.
SPR15     03C0-03FE   960     Sprite #15.
TEMP      03FC-03FF   1020    Unused.
VICSCN    0400-07E7   1024    Default Screen Video Matrix.
TEMP      07E8-07F7   2024    Unused.
SPNTRS    07F8-07FF   2040    Default Sprite Data Pointers.


          0800-9FFF   2048    Normal BASIC Program space.
          8000-9FFF   32768   Optional Cartridge ROM space.
          A000-BFFF   40960   BASIC ROM (Part) or 8 KB RAM.
          C000-CFFF   49152   4 KB RAM.
          D000-DFFF   53248   Input/Output Devices and Colour RAM or
                              4 KB RAM or Character ROM.
          D000-D02E   53248   6566 Video Interface Chip, VIC II.
          D400-D41C   54272   6581 Sound Interface Device, SID.
          D500-D7FF   54528   SID Images.
          D800-DBE7   55296   Colour RAM (Nybbles = 4 Bit RAM, LSB).
          DBE8-DBFF   56296   Unused Nybbles.
          DC00-DC0F   56320   6526 Complex Interface Adaptor, CIA.
          DD00-DD0F   56576   6526 Complex Interface Adaptor, CIA.
          E000-FFFF   57344   BASIC (Part)/Kernal ROM or 8 KB RAM.
          E000-E4FF   57344   BASIC ROM (Part) or RAM.
          E500-FFFF   58624   Kernal ROM or RAM.



	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

