So! This morning, I built a clock circuit, and wired it across to the Z80. The breadboard on the left hand side is the clock circuit. All those black leads on the left of the Z80 are the data bus, which I’ve wired to the ground to set up a NOP, instruction 0.
By constantly providing NOPs each time the processor requests an instruction, the system ought to start at address zero, go all the way to address 65535, and cycle around again. The LEDs are wired to the address bus, to give us an idea of the behaviour of the CPU as it cycles through the address range.
Here’s a video of me running it. I connect the battery once, and after a few seconds with the lights on, they start to blink (it’s a bit difficult to see in the video, sorry). This is the CPU cycling through the address space. Then I connect a 5V line to one of the data lines. This changes the instruction which the CPU receives. When I connect the battery, after a few seconds, the lights die out, as the CPU is not cycling through addresses.
I’ve learned a bunch of things from this -
1) An oscilloscope would have been really useful - I essentially got the free run working by trial and error, I didn’t realise that the chip had a sort of reset cycle when it was first turned on, and being able to look at the clock cycle would have really helped.
2) I could really do with an All-in-one 4Mhz oscillator - as used by Mike Tsao on his 6809 project. The home-built oscillator with a crystal takes up loads of room, and the weird 6809 timing circuit is going to be really complex without me adding my giant ceramic resistors or whatever the hell it was I accidentally bought from Maplin.
3) Pages like this one - Minimum Z80 tester - are really useful. I didn’t use this circuit in its entirety (mine has a much faster and completely different clock circuit, which came from Grant Searle), but all these things make life so very much easier. It’s not like being back in the 1970s.
Next up is either the video circuitry or the 6809 free run, depending on which components arrive first.