Monday, 26 August 2013

ZX81 Clone Part 2 - ZX80 Clone

Following on from the previous article where I built a ZX81 on breadboard using the original chips and then modern equivalents of all but the irreplaceable ULA, I moved onto the next step, which was to replace the ULA. There are many alternative circuits on the next (I've already admitted I'm reinventing a wheel that's already been reinvented), however, the simplest circuit and a good starting point is actually the ZX80, so I started with that. There are rather a lot of chips required, so first I'm going to need a bigger breadboard. The one I had been using for many years seemed quite good, so I got another one of those to double the area. However, I took the opportunity took make a small improvement. The previous builds have taken power from the posts via wires to the top rails, and then via wires down the sides, and via smaller jumpers, across the top. Having all the rails separate does give increased flexibility, but pretty much everything I had built on there had been using the same 5V rails all wired together.
This had worked fine, but was a little untidy and limited the usable space a bit. So before I started, I took the new one apart to see if I could wire up all the rails up behind the board. Firstly the left and right sides of each rail were wired together.
Next each rail was soldered to a wire at one end.
These were there threaded through holes, glued in place and bolted to the posts.
This gave me a clean board with power to all 6 rails.
So no more delaying tactics, time to build a ZX80 clone. I followed the ZX80 circuit more or less. I made a couple of changes for layout and practicality, I kept with the 16K RAM and 74LS04 for the crystal oscillator that I'd used on the ZX81 and used a single 74LS245 instead of a pair of 74LS05's for the NOP generator (I ran out of space!).
I also jumped the gun on the next modification and added a couple of gates to generate the back porch and make the video signal suitable for a modern TV (the 'white level restoration' section from Grant Searle's ZX80 page).
So here is the ZX80 clone, next to the original I was using to compare signals. The top of the left hand board has the Z80, RAM and EPROM, below that, the things which use the address and data buses: the NOP generator, the input port at 0xFE, the character latch, address generation and video shift register. The top right is the rest of the glue logic, and the bottom right is the additional video tidying up and output buffer.
Next, I added the remainder of the NMI generation circuit as per Grant's page, which should in theory make it fully compatible with a ZX81. That has filled up the right hand side of the breadboard as well and it is looking rather messy now.
Unfortunately, somewhere there is at least one of these wires in the wrong hole - it may take some time to find out which.

To be continued......

UPDATE - I did just about get this working, but the breadboard version had some intermittent connections, so I didn't get much further with that. I have now revisited this and built a PCB version, a ZX80 clone I have called Minstrel.