MBED emulates complete ZX81 (2012)

This small project spun out of control after I got (almost) componentless fullgraphic VGA output working on a mbed LPC1768 module.

The mbed module is connected with only a few resistors to a VGA monitor displaying 640×480/640×240 in monochrome.

On the mbed site I found a project from Ivo van Poorten whom had created a 80×25 VGA monochrome text output from the mbed.

Tinkering with the code and some serious datasheet reading I managed to turn it into a full 640×480 monochrome bitmap VGA output. The bitshifter (I2S output) is running in full-DMA mode so there is hardly any impact on the CPU speed.

Alas it is only monochrome so what could you use it for?

Hmm, my first computer was a Sinclair ZX81 which did only monochrome. Could the mbed emulate such a system ?

First step Z80 emulation, having tried several ‘off-the-shelf’ Z80 emulator code bases I decided to rewrite/modify the leanest Z80 emulator I could find so it would compile to the optimal and smallest C code on the mbed . Next step, inserting the ZX81 ROM code and get some picture on the screen. After that I inserted SD card storage code, added PS2 keyboard input and finally with the left-over IO pins I managed to connect an original ZX81 keyboard membrane to the mbed too, add zxpand joystick compatibility and did a rudimentary AY-3-8910 sound chip emulator in software too.

All these things work without extra logic or such, just some diodes and resistors.

To be true to the original I built the whole system into the original casing of a ZX81.

The software was modified quite some times, it even includes a Z80 disassembler, register viewer, hexdumper and the full ZX81 manual.