- Added `state.c` to handle saving and loading the state of the CPU and Bus. - Implemented CRC32 checksum for data integrity verification during state operations. - Enhanced `README.md` in tests/roms to document new test commands for decimal, interrupt, Apple I, and nestest. - Created new test files: `run_apple1.c`, `run_decimal.c`, `run_interrupt.c`, `run_nestest.c`, and `run_vectors.c` to validate the new features. - Updated `run_tests.c` to include tests for state saving/loading and other functionalities. - Introduced `test_vectors.py` to facilitate downloading and running JSON test vectors for opcode verification.
External validation ROMs
make fetch-roms downloads the official Klaus Dormann NMOS 6502 functional
test from the upstream GPL-3.0 repository.
The download is pinned by SHA-256 and is not committed here.
make test-functional fetches and runs it. Success is the documented loop at
$3469.
The decimal image is Bruce Clark's public-domain test configured by Gopher2600
for NMOS accumulator and N/V/Z/C flag validation. make test-decimal runs all
valid and invalid BCD operand combinations and requires ERROR == 0.
make test-interrupt assembles Klaus Dormann's GPL-3.0 interrupt test with the
upstream bundled AS65 assembler and verifies IRQ, NMI, BRK, vectors, flags, and
concurrent interrupt priority through its success trap at $06F5.
make test-apple1 assembles the original Woz Monitor source maintained in
Jeff Tranter's 6502 repository, boots its $FF00 reset vector, injects a memory
examine command through the emulated PIA, and verifies the monitor's output.
make test-nestest downloads Kevtris's canonical NROM test and Nintendulator
golden log, then compares all 8,991 CPU states and cumulative cycle counts.