All The Good Ones Were Taken

Z1a - The CPU Card

My original plan was to use a Z80 CPU in 40-PIN DIP. I'm somewhat familiar with its assembly language and its pinout from my ZX Spectrum days. They're still in production, and available at speeds up to 20 MHz. They're CMOS parts, and have no minimum clock speed.

But, while looking for suppliers (I've variously used Farnell, Mouser and Digi-Key over the course of this project), I found the Zilog Z180 available in a thru-hole friendly PLCC format. This is Zilog's version of the Hitachi 64180, which was a Z80 clone with additional hardware built in; it includes timers, serial ports, and a simple memory management unit allowing it to address a whole megabyte of physical RAM. It's more-or-less software compatible, though it adds a few new instructions and doesn't appear to support the undocumented Z80 instructions.

Having been expecting to work within the Z80's limitations, the prospect of all this extra stuff to play with quite exciting, so I upgraded my plans accordingly.

Little white PCB with a Z180 CPU on it

The CPU board also hosts a socketed oscillator providing the system clock, a reset controller, and a bunch of pin headers for pins that I didn't add to the bus connector. The Z180 I'm using is rated for 33 MHz, though so far I haven't run it above 12 MHz.

I hooked up a power supply to the CPU card, pulled the data pins low, and watched some address pins with a scope to make sure it was cycling through what it thought was empty memory. At first that seemed like all the testing I could do until it had some proper system RAM and associated chip-select logic. Then I wondered if I could just connect the CPU and video cards together. Bypassing the missing chip-select logic with a jumper wire, the CPU would see 64k of uninitialised video memory and try to execute it. The results are an art form:

Screenshot of coloured stripes and other patterns

Screenshot of coloured stripes and other patterns

Screenshot of coloured stripes and other patterns

Screenshot of coloured stripes and other patterns

But to do anything else, it would need some more memory...