Address | Len | Name | Description | Default | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 1 | D6510 | 6510 On-Chip I/O DATA Direction Register
| 0xEF | ||||||||||||||||
0001 | 1 | R6510 | 6510 On-Chip I/O Port
| 0x37 | ||||||||||||||||
0002 | 1 | Unused | ||||||||||||||||||
0003 | 2 | ADRAY1 | Vector to routine to convert Number from Floating Point to Signed Integer | 0xB1AA | ||||||||||||||||
0005 | 2 | ADRAY2 | Vector to routine to convert Number from Integer to Floating Point | 0xB391 | ||||||||||||||||
0007 | Used by BASIC and/or Kernal | |||||||||||||||||||
000A | 1 | VERCK | Flag: LOAD or VERIFY
| |||||||||||||||||
000B | Used by BASIC and/or Kernal | |||||||||||||||||||
002B | 2 | TXTTAB | Pointer to start of BASIC program text | 0x0801 | ||||||||||||||||
002D | 2 | VARTAB | Pointer to start of BASIC Variable storage area | End of program +1 | ||||||||||||||||
002F | 2 | ARYTAB | Pointer to start of array variable area | |||||||||||||||||
0031 | 2 | STREND | End of Basic array storage (+1), Start of free ram | |||||||||||||||||
0033 | 2 | FRETOP | Pointer to bottom of string text area Grows downwards from end of BASIC area | |||||||||||||||||
0035 | 2 | FRESPC | Temp pointer for strings | |||||||||||||||||
0037 | 2 | BASMEMSIZ | Highest address used by basic RS232 device can reduce this by 512 bytes for it's buffers | 0x9FFF | ||||||||||||||||
0039 | Used by BASIC | |||||||||||||||||||
0090 | Used by Kernal | |||||||||||||||||||
00CC | 1 | BLNSW | Cursor Blink Enable
| |||||||||||||||||
00CD | Used by Kernal | |||||||||||||||||||
00F7 | 2 | RIBUF | RS232 Input Buffer Pointer 00xx for no buffer, allocate on input, any other value buffer exists | |||||||||||||||||
00F9 | 2 | ROBUF | RS232 Output Buffer Pointer 00xx for no buffer, allocate on output, any other value buffer exists | |||||||||||||||||
00FB | 4 | FREKZP | 4 free bytes of Zero Page for User Programs Guaranteed BASIC will not use these 4 bytes | |||||||||||||||||
00FF | 12 | BASZPT | BASIC temp data area for floating point to ASCII conversion Runs into start of page 1, free for use if conversions not needed |
The C64 uses the 6510 Microprocessor, a variant of the 6502. The main difference is that this Microprocessor contains a built-in 8-bit I/O port, with 6 pins exposed on the 6510. This port is mapped into memory at addresses 0000 & 0001.