Ultimate C64 Memory Map

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 PEEK and 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:

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 STATUS byte:

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!

6 thoughts on “Ultimate C64 Memory Map”

Leave a Comment