Z80 Control Board

posted in: Z80 Projects | 0

Through the late 80s and early 90s the Zilog Z80 was my favorite CPU to work with. I loved the architecture, instruction set, capabilities and vast array of support chips available. I started designing commercial Z80 boards around 1992 and the early designs were built on perf-board and wire-wrapped. This article discusses a couple of early boards I made, the design, the development tools I used and even some example code.

This was a prototype controller for many other later designs. It was wire-wrapped on a Radio Shack perf board. It was built using a Zilog Z80 CPU with a 32K EPROM and a 32K SRAM. There was an Intel 8255 Programmable Peripheral Interface (PPI) which was used for various I/O functions. A 74LS244 and 74LS374 formed an 8×8 matrix keyboard interface which was designed to use surplus Commodore 64 keyboards. Another port allowed the connection of up to two Hitachi HD44780 LCD Modules or one with 4×40 configuration (these required two enable lines).

There is a 74LS14 which is used to generate the RESET pulse (using a resistor and capacitor) as well as to clean up the IRQ and NMI signals. The NMI signal is derived from an opto-isolator on the power supply AC line. The 60 Hz pulses were used to update certain functions like the internal clock and the key-scan routine, which stored data in a 256-byte ring-buffer.

A 4 MHz TTL Oscillator clocks the Z80 CPU via a 74LS76 flip-flop used to divide the clock by 2. The other 40-pin chip is an 8255 PPI which connects to a 40-pin SIP Header (not shown). The 27C256 EPROM stored the program data while a 62256 SRAM provided 32K of static RAM. Some versions used a battery-backed version of this chip manufactured by Dallas Semiconductor or, in some cases a smart socket. A 74LS139 was used to decode both the memory and I/O sides of the Z80.

For the code I programmed in assembly language and used an old DOS table assembler called TASM (Table-driven ASeMbler, attached below). I originally had a script (DOS batch file) which called my editor, then passed the file through the assembler and finally imported it into the EPROM programmer with a macro to initiate programming. I used to use a Needham’s Electronics PB-10 Device Programmer for my early work. This was an ISA card for the PC which a ribbon-cable terminating to a 40-pin ZIF socket. I later obtained a Needham’s EMP-20 which connected to the PC Printer Port. I no longer have either programmer and Needham’s went out of business some time later. For erasing my EPROMs I used a Datarase II EPROM Eraser that I purchased from BG Micro.

This is a photo of the original first prototype sitting on the graph paper schematic I drew before building it. It was also wire-wrapped and used many of the same components. The LCD shown is a 4×20 parallel display. This design was originally shared freely on the Usenet newsgroups, but I have since lost the schematic.

I lost a lot of information on this project over the years moving from place to place and eventually to another state. The photos are pretty small and scanned from old 4×3 photos I took all those years ago. In 1998 I sold all my Z80-related parts to someone in Denmark. I regret that now. I am currently working on a Z80 retro project. When it is ready it will appear in the projects section and I will link it from here as well. I just need to find an updated assembler that will run on a modern PC. Below are download links for the cross-assembler I used as well as some Z80 test code for the hardware used in this project. Please leave a comment below with any questions, suggestions or feedback.

KNIGHT – Knight Designs Hardware Test Assembly Source Code [ZIP]

tasm32 – Table-Driven Assembler V3.2 for DOS [ZIP]


Follow Chris Savage:


Electronics Engineer, Hacker and Programmer. Host of Savage///Circuits TV, reviewer of test equipment and Musician.

Latest posts from

Leave a Reply