Memory Map¶
The CPU sees a single 64 KB address space split by A15, which doubles as the chip-select. No external address decoder is required.
$0000 ─┬─────────────────────────┐
│ RAM (AS6C62256-55PCN) │ A15 = 0
│ │
$7FFF ─┤ │
$8000 ─┼─────────────────────────┤
│ ROM (Pico) │ A15 = 1
│ │
$FFFF ─┴─────────────────────────┘
When A15 = 0 → RAM is selected (
$0000–$7FFF). The Pico keeps its data pins Hi-Z. With OE# tied high, the AS6C62256-55PCN never drives the data bus (write-only). CPU reads from RAM see floating lines.When A15 = 1 → the Pico (acting as ROM) drives the bus (
$8000–$FFFF), servingrom_image[addr & 0x7FFF].
A15 itself does all the decoding: it drives the RAM’s active-low CE# directly, so
A15 = 0 selects the RAM and A15 = 1 deselects it, a perfect match with no inverter.
Virtual print port¶
The demo program stores results at $4000. Use the Hardware API read or monitor
commands to observe CPU stores over USB. Avoid addresses whose high byte matches common
data values on a noisy breadboard (for example, $5000 often reads back as $50 due to
address-line crosstalk onto D0–D7).