It's been over two years since I've posted anything about my Z80 project. I haven't given up, I've been working on odds and ends on and off for the last couple of years, but no huge advances. The reason the posts dried up is that I actually got the original Z80 project working! But it was quite under-whelming. After weeks of work I managed to get a program that could write data to an 8 bit latch with LEDs attached. So what was the point of it all, and what have I done since?
Outcome of the first Z80 project Z80s are really hard to get up and running compared to modern micro-controllers. That's the basic thing I realised after the first project.
The idea of connecting up an oscillator, CPU, RAM and some IO devices is simple enough, but developing software for it is really hard. This is because you need some way to get data into the system. Now, if you look at the articles I wrote on this site about programming and reading parallel memory chips you'll see it's not that hard to program a memory chip if you can get it out of the system, but the wear and tear of repeatedly unplugging and plugging a memory chip all the time would destroy it pretty quick. To overcome the need to remove the memory from the board in my Z80 project I wired up a PIC16F874 into the bus and attached it to my PC's serial port, this let me download data to the memory as the PIC could control the whole memory bus with the assistance of a latch. This made development relatively painless, but I never perfected the system so you had to unplug it to let the Z80 take over.
The other problem I had was that I didn't have time to get any kind of proper display working. With no display and no keyboard input the Z80 could be doing the most amazing things but I wouldn't have any idea what they were or any way to affect them. With only a couple of weeks left before I had to go back to Uni, I ended up making a clock instead.
Other Z80 related tinkerings Since the end of the Z80 mark 1, I have not built anything more from scratch. However I've been experimenting with the Sinclair Spectrum a lot. Last summer I designed and built an expansion card that replaces the ROM with my own version which uses a Vinculum USB host chip instead of tape for storage. I managed to get loading times down to a few seconds for the largest programs that you can run on the 48k Spectrum, even coping with some of the copy protection in some games I found. This was a tough project as it required understanding the way the spectrum worked and editing a ROM image without changing the entry points for the routines stored there. Helpfully I found that there is a Spectrum ROMs package in the Ubuntu repository with original ROM images, and managed to get a Z80 assembler file that loaded and edited one of these ROMs. I actually got a pair of these modules made as proper PCBs with the expansion edge connector still available. Hopefully I will get around to publishing some of that work on here over the next few months.
I've also been designing a Mark 2 and Mark 3 version of the Z80 project. I'm working on building the Mark 2 now, which is what has spurred me to update this site, and if that goes well the Mark 3 may get built, however that is a large PCB project due to the complexity so will be quite expensive.