home *** CD-ROM | disk | FTP | other *** search
-
- 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 Secong 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
-
-