ZX Spectrum in an FPGA
After doing the Apple-2 and BK0010 my next system on a chip was the ZX
Spectrum.
Actually it is still work in progress. The project is based on the TV80
code - z80 in Verilog, allegedly cycle accurate. At least I didn't
notice anything wrong so far.
In standard mode the x80 code is executed at 3.5 MHz to be compatible
with all the games and demos. There is also a "turbo" mode. I tried it
at 28 MHz clock, but the tools tell me it will run at at least 56 MHz.
I didn't try it because apart from a brief claim to the fastest ZX on
the planet I see no point in it.
I tried to make the timing as close as possible to the real Speccy with
one notable exception - my video output is intended for the VGA
monitors rather than a TV set. One reason is that a bad VGA screen
looks better than a good TV in a monitor role.
And LCD screens look real good. My frame rate is still 50 Hz but the
line rate is double that of the conventional Speccy. I compensate by
doubling the number of lines, but of course 2 consecutive lines display
the same pixels.
As you can see the result is pretty decent.

The plan is to make an IDE interface and use a Compact Flash card to
load the software. Right now I only have this interface to a "tape
recorder". In fact I'm using a sound card output to play .TAP files.
Works fine, but it is so damn slow...

The small chip is a 256K EEPROM that holds the code that is normally
stored in a PROM. My verilog code loads the software from the serial
EEPROM to RAM before the system boots. Doesn't take long with 32K of
code and 28 MHz clock :)