0000 | 6510 On-chip Data Direction Register |
0001 | 6510 On-chip 8-bit Input/Output Register |
0002 | Unused |
0003-0004 | Jump Vector: Convert FAC to Integer in (A/Y) ($B1AA) |
0005-0006 | Jump Vector: Convert Integer in (A/Y) to Floating point in (FAC); ($B391) |
0007 | Search Character/Temporary Integer during INT |
0008 | Flag: Scan for Quote at end of String |
0007-0008 | Temporary Integer during OR/AND |
0009 | Screen Column for last TAB |
000A | Flag: 0 = Load, 1 = Verify |
000B | Input Buffer Pointer/Number of Subscripts |
000C | Flag: Default Array dimension |
000D | Data type Flag: $00 = Numeric, $FF = String |
000E | Data type Flag: $00 = Floating point, $80 = Integer |
000F | Flag: DATA scan/List Quote/Garbage collection |
0010 | Flag: Subscript reference/User Function call |
0011 | Input Flag: $00 = INPUT, $40 = GET, $98 = READ |
0012 | Flag: TAN sign/Comparative result |
0013 | File number of current Input Device |
0014-0015 | Temporary: Integer value |
0016 | Pointer: Temporary String Stack |
0017-0018 | Last temporary String Address |
0019-0021 | Stack for temporary Strings |
0022-0025 | Utility Pointer Area |
0022-0023 | First Utility Pointer |
0024-0025 | Secong Utility Pointer |
0026-002A | Floating point product of Multiply and Divide |
002B-002C | Pointer: Start of BASIC Text Area ($0801) |
002D-002E | Pointer: Start of BASIC Variables |
002F-0030 | Pointer: Start of BASIC Arrays |
0031-0032 | Pointer: End of BASIC Arrays + 1 |
0033-0034 | Pointer: Bottom of String space |
0035-0036 | Utility String Pointer |
0037-0038 | Pointer: Highest Address available to BASIC ($A000) |
0039-003A | Current BASIC Line number |
003B-003C | Previous BASIC Line number |
003D-003E | Pointer: BASIC Statement for CONT |
003F-0040 | Current DATA Line number |
0041-0042 | Pointer: Used by READ - current DATA Item Address |
0043-0044 | Pointer: Temporary storage of Pointer during INPUT Routine |
0045-0046 | Name of Variable being sought in Variable Table |
0047-0048 | Pointer: to value of (VARNAM) if Integer, to descriptor if String |
0049-004A | Pointer: Index Variable for FOR/NEXT loop |
004B-004C | Temporary storage for TXTPTR during READ, INPUT and GET |
004D | Mask used during FRMEVL |
004E-0052 | Temporary storage for FLPT value |
0053 | Length of String Variable during Garbege collection |
0054-0056 | Jump Vector used in Function Evaluation |
0057-005B | Temporary storage for FLPT value |
005C-0060 | Temporary storage for FLPT value |
0061-0066 | Main Floating point Accumulator |
0061 | FAC Exponent |
0062-0065 | FAC Mantissa |
0066 | FAC Sign |
0067 | Pointer: Series Evaluation Constant |
0068 | Bit Overflow Area during normalisation Routine |
0069-006E | Auxiliary Floating point Accumulator |
0069 | AFAC Exponent |
006A-006D | AFAC Mantissa |
006E | AFAC Sign |
006F | Sign of result of Arithmetic Evaluation |
0070 | FAC low-order rounding |
0071-0072 | Pointer: Used during CRUNCH/ASCII conversion |
0073-008A | Subroutine: Get next Byte of BASIC Text |
0079 | Entry to Get same Byte again |
007A-007B | Pointer: Current Byte of BASIC Text |
008B-008F | Floating RND Function Seed Value |
0090 | Kernal I/O Status Word ST |
0091 | Flag: $7F = STOP key |
0092 | Timing Constant for Tape |
0093 | Flag: 0 = Load, 1 = Verify |
0094 | Flag: Serial Bus - Output Character buffered |
0095 | Buffered Character for Serial Bus |
0096 | Cassette Sync. number |
0097 | Temporary storage of X Register during CHRIN |
0097 | Temporary storage of Y Register during RS232 fetch |
0098 | Number of Open Files/Index to File Table |
0099 | Default Input Device (0) |
009A | Default Output Device (3) |
009B | Parity of Byte Output to Tape |
009C | Flag: Byte received from Tape |
009D | Flag: $00 = Program mode: Suppress Error Messages, $40 = Kernal Error Messages only, $80 = Direct mode: Full Error Messages |
009E | Index to Cassette File name/Header ID for Tape write |
009E | Tape Error log pass 1 |
009F | Tape Error log pass 2 |
00A0-00A2 | Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B) |
00A3 | Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag |
00A4 | Pulse Counter Tape Read or Write/Serial Bus shift Counter |
00A5 | Tape Synchronising count down |
00A6 | Pointer: Tape I/O buffer |
00A7 | RS232 temporary for received Bit/Tape temporary |
00A8 | RS232 Input Bit count/Tape temporary |
00A9 | RS232 Flag: Start Bit check/Tape temporary |
00AA | RS232 Input Byte Buffer/Tape temporary |
00AB | RS232 Input parity/Tape temporary |
00AC-00AD | Pointer: Tape Buffer/Screen scrolling |
00AE-00AF | Tape End Address/End of Program |
00B0-00B1 | Tape timing Constants |
00B2-00B3 | Pointer: Start Address of Tape Buffer ($033C) |
00B4 | RS232 Write bit count/Tape Read timing Flag |
00B5 | RS232 Next Bit to send/Tape Read - End of Tape |
00B6 | RS232 Output Byte Buffer/Tape Read Error Flag |
00B7 | Number of Characters in Filename |
00B8 | Current File - Logical File number |
00B9 | Current File - Secondary Address |
00BA | Current File - First Address (Device number) |
00BB-00BC | Pointer: Current File name Address |
00BD | RS232 Output Parity/Tape Byte to be Input or Output |
00BE | Tape Input/Output Block count |
00BF | Serial Word Buffer |
00C0 | Tape Motor Switch |
00C1-00C2 | Start Address for LOAD and Cassette Write |
00C3-00C4 | Pointer: Type 3 Tape LOAD and general use |
00C5 | Matrix value of last Key pressed; No Key = $40 |
00C6 | Number of Characters in Keyboard Buffer queue |
00C7 | Flag: Reverse On/Off; On = $01, Off = $00 |
00C8 | Pointer: End of Line for Input (Used to suppress trailing spaces) |
00C9-00CA | Cursor X/Y (Line/Column) position at start of Input |
00CB | Flag: Print shifted Characters |
00CC | Flag: Cursor blink; $00 = Enabled, $01 = Disabled |
00CD | Timer: Count down for Cursor blink toggle |
00CE | Character under Cursor while Cursor Inverted |
00CF | Flag: Cursor Status; $00 = Off, $01 = On |
00D0 | Flag: Input from Screen = $03, or Keyboard = $00 |
00D1-00D2 | Pointer: Current Screen Line Address |
00D3 | Cursor Column on current Line, including Wrap-round Line, if any |
00D4 | Flag: Editor in Quote Mode; $00 = Not |
00D5 | Current logical Line length: 39 or 79 |
00D6 | Current Screen Line number of Cursor |
00D7 | Screen value of current Input Character/Last Character Output |
00D8 | Count of number of inserts outstanding |
00D9-00F2 | Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location |
00F3-00F4 | Pointer: Current Colour RAM Location |
00F5-00F6 | Vector: Current Keyboard decoding Table. ($EB81) |
00F7-00F8 | RS232 Input Buffer Pointer |
00F9-00FA | RS232 Output Buffer Pointer |
00FB-00FE | Free Zero Page space for User Programs |
00FF | BASIC temporary Data Area |
00FF-010A | Assembly Area for Floating point to ASCII conversion |
0100-013E | Tape Input Error log |
0100-01FF | 6510 Hardware Stack Area |
013F-01FF | BASIC Stack Area |
0200-0258 | BASIC Input Buffer (Input Line from Screen) |
0259-0262 | Kernal Table: Active logical File numbers |
0263-026C | Kernal Table: Active File First Addresses (Device numbers) |
026D-0276 | Kernal Table: Active File Secondary Addresses |
0277-0280 | Keyboard Buffer Queue (FIFO) |
0281-0282 | Pointer: Bottom of Memory for Operating System ($0800) |
0283-0284 | Pointer: Top of Memory for Operating System ($A000) |
0285 | Serial IEEE Bus timeout defeat Flag |
0286 | Current Character Colour code |
0287 | Background Colour under Cursor |
0288 | High Byte of Screen Memory Address ($04) |
0289 | Maximum number of Bytes in Keyboard Buffer ($0A) |
028A | Flag: Repeat keys; $00 = Cursors, INST/DEL & Space repeat, $40 no Keys repeat, $80 all Keys repeat ($00) |
028B | Repeat Key: Speed Counter ($04) |
028C | Repeat Key: First repeat delay Counter ($10) |
028D | Flag: Shift Keys: Bit 1 = Shift, Bit 2 = CBM, Bit 3 = CTRL; ($00 = None, $01 = Shift, etc.) |
028E | Last Shift Key used for debouncing |
028F-0290 | Vector: Routine to determine Keyboard table to use based on Shift Key Pattern ($EB48) |
0291 | Flag: Upper/Lower Case change: $00 = Disabled, $80 = Enabled ($00) |
0292 | Flag: Auto scroll down: $00 = Disabled ($00) |
0293 | RS232 Pseudo 6551 control Register Image |
0294 | RS232 Pseudo 6551 command Register Image |
0295-0296 | RS232 Non-standard Bits/Second |
0297 | RS232 Pseudo 6551 Status Register Image |
0298 | RS232 Number of Bits left to send |
0299-029A | RS232 Baud Rate; Full Bit time microseconds |
029B | RS232 Index to End of Input Buffer |
029C | RS232 Pointer: High Byte of Address of Input Buffer |
029D | RS232 Pointer: High Byte of Address of Output Buffer |
029E | RS232 Index to End of Output Buffer |
029F-02A0 | Temporary store for IRQ Vector during Tape operations |
02A1 | RS232 Enables |
02A2 | TOD sense during Tape I/O |
02A3 | Temporary storage during Tape READ |
02A4 | Temporary D1IRQ Indicator during Tape READ |
02A5 | Temporary for Line Index |
02A6 | Flag: TV Standard: $00 = NTSC, $01 = PAL |
02A7-02FF | Unused |
02C0-02FE | Sprite #11 Data Area. (SCREEN + $03F8 + SPR number) |
0300-0301 | Vector: Indirect entry to BASIC Error Message, (X) points to Message ($E38B) |
0302-0303 | Vector: Indirect entry to BASIC Input Line and Decode ($A483) |
0304-0305 | Vector: Indirect entry to BASIC Tokenise Routine ($A57C) |
0306-0307 | Vector: Indirect entry to BASIC LIST Routine ($A71A) |
0308-0309 | Vector: Indirect entry to BASIC Character dispatch Routine ($A7E4) |
030A-030B | Vector: Indirect entry to BASIC Token evaluation ($AE86) |
030C | Storage for 6510 Accumulator during SYS |
030D | Storage for 6510 X-Register during SYS |
030E | Storage for 6510 Y-Register during SYS |
030F | Storage for 6510 Status Register during SYS |
0310 | USR Function JMP Instruction ($4C) |
0311-0312 | USR Address ($LB,$MB) |
0313 | Unused |
0314-0315 | Vector: Hardware IRQ Interrupt Address ($EA31) |
0316-0317 | Vector: BRK Instruction Interrupt Address ($FE66) |
0318-0319 | Vector: Hardware NMI Interrupt Address ($FE47) |
031A-031B | Vector: Indirect entry to Kernal OPEN Routine ($F34A) |
031C-031D | Vector: Indirect entry to Kernal CLOSE Routine ($F291) |
031E-031F | Vector: Indirect entry to Kernal CHKIN Routine ($F20E) |
0320-0321 | Vector: Indirect entry to Kernal CHKOUT Routine ($F250) |
0322-0323 | Vector: Indirect entry to Kernal CLRCHN Routine ($F333) |
0324-0325 | Vector: Indirect entry to Kernal CHRIN Routine ($F157) |
0326-0327 | Vector: Indirect entry to Kernal CHROUT Routine ($F1CA) |
0328-0329 | Vector: Indirect entry to Kernal STOP Routine ($F6ED) |
032A-032B | Vector: Indirect entry to Kernal GETIN Routine ($F13E) |
032C-032D | Vector: Indirect entry to Kernal CLALL Routine ($F32F) |
032E-032F | User Defined Vector ($FE66) |
0330-0331 | Vector: Indirect entry to Kernal LOAD Routine ($F4A5) |
0332-0333 | Vector: Indirect entry to Kernal SAVE Routine ($F5ED) |
0334-033B | Unused |
033C-03FB | Tape I/O Buffer |
0340-037E | Sprite #13 |
0380-03BE | Sprite #14 |
03C0-03FE | Sprite #15 |
03FC-03FF | Unused |
0400-07E7 | Default Screen Video Matrix |
07E8-07F7 | Unused |
07F8-07FF | Default Sprite Data Pointers |
0800-9FFF | Normal BASIC Program space |
8000-9FFF | Optional Cartridge ROM space |
A000-BFFF | BASIC ROM (Part) or 8 KB RAM |
C000-CFFF | 4 KB RAM |
D000-DFFF | Input/Output Devices and Colour RAM or 4 KB RAM or Character ROM |
D000-D02E | 6566 Video Interface Chip, VIC II |
D400-D41C | 6581 Sound Interface Device, SID |
D500-D7FF | SID Images |
D800-DBE7 | Colour RAM (Nybbles = 4 Bit RAM, LSB) |
DBE8-DBFF | Unused |
DC00-DC0F | 6526 Complex Interface Adaptor, CIA |
DD00-DD0F | 6526 Complex Interface Adaptor, CIA |
E000-FFFF | BASIC (Part)/Kernal ROM or 8 KB RAM |
E000-E4FF | BASIC ROM (Part) or RAM |
Kernal ROM or RAM |