Codex, Claude, and local AI agents on the Commodore 64 Ultimate.
prompt64 docs memory-map.md
1.5 kB
Markdown
at main

Prompt64 0.2 memory map #

Range Use
$0801-$85FF PRG header, text, constants, initialized data, BSS budget
$8600-$87FF enforced low-memory growth reserve
$8800-$89FF top border sprite buffer
$8A00-$8BFF bottom sprite buffer A
$8C00-$8DFF bottom sprite buffer B
$8E00-$8FFF guard/free area
$9000-$A3FF NOLOAD 64×40 transcript characters and colors
$A400-$A7FF 40×25 VIC-II screen
$A800-$BFFF NOLOAD dashboard row store and remaining high RAM
$C000-$CFFF NOLOAD compiler scratch; software stack grows below $D000
$D000-$DFFF I/O window

The project-owned client/link.ld shadows Rust-MOS's C64 script but retains its unmap-basic.o startup and $D000 stack policy. Prompt64 does not add duplicate $01 banking.

The screen moved from $8400 to $A400 so low code and BSS can grow toward the fixed sprite buffers without reducing the transcript. VIC-II memory control selects the $A400 screen and the character ROM visible at $9000; the screen's sprite-pointer table is at $A7F8.

The transcript and dashboard are explicitly initialized at runtime because their sections are NOLOAD. The build emits build/PROMPT64.map, limits the PRG to 32,257 bytes, asserts that low sections end before $8600, and checks every fixed NOLOAD region. The physical sprite boundary is $8800, so both the PRG size gate and linker assertion preserve a 512-byte reserve.