-
2026-09-07: SAM Coupé starts
a day ago • 0 commentsThe MiSTer SAM Coupé core (GPL-2.0-or-later throughout, audited per file) has been imported behind the same platform layer. Three builds in one day: the machine with its ROM and the scaler, then the USB keyboard mapped to the SAM's 9-row matrix, then disk images mounted from the SD card through a WD1793 bridge.
All build-verified with zero timing violations, at 85% of block RAM and almost no setup margin. Nothing has been programmed yet; the first bench load is next. The Raspberry Pi 5 for the debug host also arrived this week.
-
2026-09-01: SD card, USB in fabric, 128K, and a 22-game sweep
a day ago • 0 commentsThe 48K and 128K machines now load tapes from a FAT32 card through a menu, with the 128K machine playing Spellbound for three minutes with six banks in DDR3. A USB keyboard and controller are hosted directly by the FPGA on both USB-A ports; the earlier failure was a keyboard emitting a vendor report prefix, not a port problem.
All 22 Spec256 packs the 48K format can express were run on the board: 14 passed on the day, five more were fixed by one correction to how the graphical lanes follow the master's addresses, and two remain open.
Episode 5: Giving the ZX Spectrum 256 Colours on Real FPGA Hardware
-
2026-08-20: Spec256, 256 colours on the actual game code
a day ago • 0 commentsSpec256 is a 2000s format where artists recoloured Spectrum games into eight extra bit-planes, and a second "graphical" Z80 propagates those colours through the game's own drawing routines. On the FPGA that is one master Z80 plus eight graphical lanes in lockstep.
The first moving Jetpac exposed a real bug, the lanes picking up DD/FD prefixes one fetch late, caught by comparing 72,000 instructions against the GZX emulator. After the fix: clean enhanced Jetpac and Chuckie Egg, with game packs loaded at runtime over a UART without reprogramming the FPGA.
-
2026-08-18: A 1982 ROM boots
a day ago • 0 commentsThe imported T80 CPU and the upstream ULA raster ran a user-supplied 48K ROM at 3.5 MHz, printed BASIC, and ran a typed program. The Spectrum's 50 Hz frame is captured whole into a triple buffer and scan-converted to 720p60 without tearing.
A status UART on a PMOD pin now reports PLL lock, opcode fetches and memory writes, so a blank screen is no longer the only diagnostic. The same day the upper 32 KiB of the 48K machine moved into DDR3 and the ROM still printed the same loop, five loads out of five.
Episode 4: We Gave the Tang Console a 1982 ZX Spectrum ROM. It Booted.
-
2026-08-17: DDR3 wasn't broken. I was.
a day ago • 0 commentsThe DDR3 controller timed out in calibration on every attempt for two days: more power, the other SOM geometry, each x16 device on its own, external VREF, nothing moved it. Then Sipeed's own reference image passed on the same board, and the difference was the clock.
The board clock is 50 MHz, not the 27 MHz I had assumed, and Gowin derives the PLL's charge-pump and loop-filter settings from the declared input frequency string, so my hand-written PLL had never been right. Along the way the HDMI capture card was rejecting valid signals as blank frames, which cost a night chasing a lock failure that did not exist.
With the generated PLL restored, calibration passed, then every address line in the 1 GiB map, then a logo streamed continuously from DDR3.
Episode 3: The Tang Console's Memory Wasn't Broken. We Were.
-
2026-08-16: Board arrives, factory menu boots, and the first NextTang image
a day ago • 0 commentsThe Console 138K arrived with a 32001C carrier and a 30354 1 GB SOM. The factory TangCore menu came up from the supplied card, the included controller navigated it, and NESTang and SnesTang switched cores.
Loading my own bitstream over JTAG took a detour: passing the packaged .bin files straight to openFPGALoader left HDMI black, and only the original .fs record boundaries load. The first NextTang image, colour bars and a moving logo at 720p, worked once the PLL matched the values a known-good Console design uses.
A lesson that would repeat: a timing-clean build that programs cleanly and shows nothing is the normal failure mode on this board.
Episode 2: We Got Our First Video Output from the Tang Console