b8008 runs programs end to end, and every test checks its own answers
What I tried
From 2025-11-22 to 11-27 the modules went in one per commit, each with a testbench: state timing generator, machine cycle control, instruction decoder, register and ALU control, temp registers, ALU and condition flags, interrupt and ready flip-flops, instruction register, I/O buffer, stack and register selectors. b8008_top came together on 11-25 with a ROM component, and the assembler flow followed on 11-26. By 11-27 HLT, conditional JMP and CALL, INR and DCR and a RAM-heavy test program were running through the top.
After a December gap, the decoder got its remaining signals, rotates went into the ALU, RST landed, and INP and OUT got I/O support. On 2025-12-23 the assembler switched to the AS assembler with 8080 mnemonics.
What changed on 12-24
The checkpoint system. An OUT 31 in a test program captures the CPU state into the simulation log. A check script per program asserts the expected register values at each checkpoint. Tests track their progress in D and E so a script can tell where a run stopped. The ALU, INR/DCR, MOV, I/O, flags, RAM and search tests all got checkpoints the same day, and the run_all script filters on the check_ prefix.
Interrupt handling and tests went in the same day, along with a bit-banged UART adapter and a hello sample, plus the first FPGA project framework with a blinky for the Versa.
What I measured
By 2026-01-08 the count was 26 automated tests passing and about 6100 lines of VHDL across 27 modules.
Next
Hardware. A b8008 blinky top with power-on reset was in by 12-30.