External EEPROM executes code, when it boots

/ Intel 8008 VHDL / from intel-8008-vhdl 8008 b8008 eeprom at28c64b level-shifter ecp5

What I tried

An external ROM interface on the core: 14 address lines, 8 data lines, control signals, and the monitor project switched over to fetch from it. The Makefile grew a .bin target and a flashing step for the EEPROM. The part is an AT28C64B, 8K by 8, 5 V. Between it and the 3.3 V FPGA sit HW-221 breakout boards, which are TXS0108E auto-direction shifters. Pull-ups went on the control signals.

The external ROM rig, January 2026. ECP5-5G Versa on the bubble wrap, AT28C64B on a ZIF adapter at the right, HW-221 level shifter boards in between.
The external ROM rig, January 2026. ECP5-5G Versa on the bubble wrap, AT28C64B on a ZIF adapter at the right, HW-221 level shifter boards in between.

What I measured

Code executes from the EEPROM when the board boots. Boot is unreliable. The monitor banner shows artifacts, and spurious ‘0’ characters show up on the serial line. Power-cycling the shifter board changed boot reliability and power-cycling nothing else did.

What I didn’t know yet

The cause. I chased address-dependent corruption for months after this: programs that broke when code moved a few bytes, random freezes, characters from nowhere. On 2026-03-14 the RAM moved to 0x2000 to leave room for a bigger ROM, still on the theory that the memory map was the problem. The answer is in the July 1 log.

Next

Keep the EEPROM path and keep looking for the fault.