FA-89833 / Instruction set emulation / Member archive
Writes to unmapped space do not drive the bus · case 03
A read of unmapped space after an unmapped write returns an older bus value.
Case contract
Input [rom_size, sram_enabled, ops] with ops ['r', addr] or ['w', addr, value] on a 16-bit bus. 0x0000-0x1FFF: 2 KiB RAM mirrored every 0x800. 0x2000-0x3FFF: 8 video registers mirrored every 8 bytes. 0x4000-0x4017: I/O registers. 0x4018-0x5FFF: unmapped. 0x6000-0x7FFF: SRAM when enabled, else unmapped. 0x8000-0xFFFF: ROM of rom_size bytes mirrored to fill the window, byte at offset o = (7o + (o >> 8) + 3) & 0xFF, writes ignored. Every write drives its value onto the data bus; reads of unmapped space return the last bus value, other reads drive the bus. Unwritten RAM/register/SRAM bytes read 0. Writes yield None, reads the value.
Why this case matters
Console and microcontroller emulators depend on exact address decoding; mirroring and open-bus behaviour are relied on by real software.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| open bus after unmapped write | [null, 0, null, 19] | [null, 119, null, 19] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗