The system software of the Commodore 64 has been extensively reverse-engineered. Next to disassemblies of the ROM, several “memory maps” have been published: tables that document system variables in the first kilobyte of RAM, and how to tweak the system software with
POKE. Now, I’m presenting the Ultimate C64 Memory Map: A C64 memory reference that shows eight sources side-by-side.
These are the references that have been adapted for this:
- Reference from Mapping the Commodore 64 by Sheldon Leemon, ISBN 0-942386-23-X.
- German-language reference from Memory Map mit Wandervorschlägen by Dr. H. Hauck, in 64’er Sonderheft 1986/07.
- German-language reference from Das neue Commodore-64-intern-Buch by Data Becker, ISBN 3890113079.
- Reference by Joe Forster/STA, with awsm’s changes applied.
- Comments from the original M6502 BASIC source by Microsoft and the original C64 KERNAL source by Commodore
- Reference from Commodore 64 Programmer’s Reference Guide.
- Reference as found in Commodore 64 Memory Maps.txt by anonymous.
- Reference by Jim Butterfield in COMPUTE! #29 (October 1982).
You can enable and disable columns by clicking the checkboxes next to the sources, and you can expand/collapse all details with the corresponding button above the table. Here are four different expanded explanations of the
And here is the collapsed version of the range $2B-$48, comparing the comments in the original sources with the Programmer’s Reference Manual:
The symbols (second column) are taken from the original sources. Sometimes, a single memory location has several meanings and thus several symbols. Some descriptions have been adapted to describe the different meanings independently:
KERNAL and BASIC ROM addresses link to the respective spots in the disassembly:
And in the disassembly, zero page addresses (like
$CC) and symbols (like
BLNSW) link back to the memory map:
The memory map table is generated from independent formatted ASCII files that look like this:
It consists of three columns: the address range in hex, the symbol name and the description in MarkDown format.
The Ultimate C64 Reference is being developed as an open source project at github.com/mist64/c64ref – contributions in the form of additions, corrections etc. are welcome!