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 8x8 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 4x40 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 4x20 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 4x3 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.