Retro Challenge – Half-time Catch-up

We’re at the halfway mark of the Retro Challenge, and there’s a slight lull in activity, so this seems like a good chance to catch up on what’s been done so far, and what’s still to come.

Firstly, a quick review of the challenge I set myself; write my name in LED lights.  These must, however, be controlled by a Z80 computer, which I’ve got to design and build myself, and written in assembly language which I need to learn.

Well, the start of the challenge saw me dive headlong in to KiCad, learning some of the intricacies of printed circuit board layout.  I’d used KiCad for a couple of little projects before, but certainly wouldn’t have described myself as competent.  I’m still not a master of it, but I’m a lot more familiar with it than I was.

I split my breadboard based Z80 down in to several modules, each of which will plug in to a Veroboard backplane.  6 of these have been designed and sent off for manufacture which will give me a basic Z80 computer that I can use via a terminal emulator.  The boards are;

  • CPU
  • Eprom (for BASIC eprom)
  • Eprom (for my Z80 code)
  • RAM
  • Clock
  • Serial I/O

2014-07-04 18.58.00

I put a lot of energy in to getting these done early on as they take about 2-3 weeks to get manufactured.  I did actually get notification today that they’ve been made, and are currently being shipped from the United States.  Hopefully they’ll be here early next week.

I left the ‘LED’ part of my challenge fairly vague as I didn’t have any particular display in mind when I started this.  Maybe 7-segment display? Maybe a bunch of individual lights? Maybe even LCD display with LED backlight?  Well, I found a huge amount of mini 8×8 dot matrix LED displays at the local Hackspace.  I tracked down the datasheets and got one tested out with the breadboard Z80 and BASIC.

This works fine, so I’ve now worked out a circuit to drive 7 of them.  7 is an ideal number, not just because there’s 7 letters in SPENCER but 7 * 8 X-axis plus 1 * 8 Y-axis maps really well on to the 8-bit Z80 data bus!  I missed the window to get this manufactured as a PCB by OSHPark, so decided to build it up on breadboard.  This proved too time consuming, so I decided to go for a more expensive UK based PCB company, but this turns out to be really hard to fit on to the size board I want to use, so have abandoned that idea too.

I’ve started teaching myself Z80 assembly language from introduction websites and also reading the book “Programming the Z80”.  It turns out that assembly language is really hard! Who’d have thought!  I’ve found an on-line compiler which works pretty good, and an online emulator.  I can only use the emulator by manually entering the hex code though, as I can’t get it to load programs, so although it’s great for checking very low level stuff, it won’t scale up to larger stuff.

Talking of larger stuff, I’ve been through the Sinclair ZX Spectrum ROM and extracted out the character set from that.  This will mean I don’t have to worry about plotting every single dot on the matrix displays myself, and will also mean I can easily write things other than my name!


Wow, that sounds like a lot so far!  Well, there’s still plenty more to do.

Firstly, I’ve got to learn a LOT more assembly language.  Then come up with a flow chart for a program, and actually write the program.  I also have to wire up the LED displays (currently wondering about Veroboard) and their driver chips.  Plus, the PCBs should be here soon, so I have a lot of soldering to do.  Of course, all of these steps will need to be tested at each stage, which, inevitably will mean fixing stuff, redesigning bits or even having a total rethink.

Then, all I need to do is put everything together and write my name in LEDs. Simples!