HARDWARE LAB 19 · MEMORY EXPANSION
CARTRIDGE BUS
+ BANK SWITCHING
Hold the CPU address steady, change one mapper register, and watch a different physical ROM bank appear in the same address-space window.
LIVE BUS PROBE
BUS IDLEAddress, data, and active-low control lines
Cycle 0. BUS IDLE. Address 0x9234. Data floating. Bank 0. /RD INACTIVE. /WR INACTIVE. /ROM_CS INACTIVE. /MAPPER_CS INACTIVE.
A151A140A130A121A110A100A91A80A70A60A51A41A30A21A10A00
D7ZD6ZD5ZD4ZD3ZD2ZD1ZD0Z
/RD1INACTIVE
/WR1INACTIVE
/ROM_CS1INACTIVE
/MAPPER_CS1INACTIVE
Data-bus driver: NO DEVICE / HIGH-Z. A slash means the signal is active at logic 0.
ADDRESS DECODE
SWITCHABLE 16 KiB WINDOWCPU-visible address → physical ROM address
CPU ADDRESS0x9234→SELECTED BANK0→ROM OFFSET0x1234→BYTE VALUE0x7C
0 × 0x4000 + 0x1234 = 0x01234CPU ADDRESS SPACE
128 KiB PHYSICAL ROM / 32 KiB VISIBLEOne fixed window, one switchable window
BANK 00x00000–0x03FFFSWITCH WINDOW
BANK 10x04000–0x07FFFOFF BUS
BANK 20x08000–0x0BFFFOFF BUS
BANK 30x0C000–0x0FFFFOFF BUS
BANK 40x10000–0x13FFFOFF BUS
BANK 50x14000–0x17FFFOFF BUS
BANK 60x18000–0x1BFFFOFF BUS
BANK 70x1C000–0x1FFFFFIXED WINDOW
SAFE FETCH SCRIPT
0 / 7 OPSProve what changes—and what does not
- 01WRITE BANK 1Select ROM bank 1
- 02READ 0x9234Read switchable window
- 03WRITE BANK 5Select ROM bank 5
- 04READ 0x9234Read same CPU address again
- 05READ 0xD234Read fixed window
- 06WRITE BANK 2Select ROM bank 2
- 07READ 0xD234Re-read fixed window
COMPARE BOTH WINDOWS
Read one switchable address through two banks, then read one fixed-window address through two banks.
The safe script completes this diagnostic, or reproduce it manually with the address field and bank-write buttons.
BUS TRACE
Every address, strobe, sample, and release
| # | CYCLE | PHASE | OP | CPU ADDR | DATA | /RD | /WR | /ROM | /MAP | BANK | ROM ADDR |
|---|---|---|---|---|---|---|---|---|---|---|---|
| No transactions yet. Step a CPU read or write a bank register. | |||||||||||