Warning: This site is under construction, most links will be broken.
Electronics -> The Z80 project
Last modified on Wed, 16th Apr 2008 at 14:41 BST by zipplet
Click to enlarge
Latest updates
Wednesday, 16th April 2008 - I've been very busy with work and life hence the lack of progress. Anyway, I've found out that I can use the Parallel Slave Port in the 16F877A to easily interface the supervisor to the Z80 I/O bus. This greatly simplifies design, improves speed and frees up 8255A pins.
Monday, 7th April 2008 - Swapping chips to test a single opcode change in the BIOS is beginning to get on my nerves so I am looking into making a simple EPROM emulator I can leave plugged into the Z80 board. This way I can upload and test a code change pretty much instantly, without almost snapping a pin on a £10 part! Update: I've decided to instead for now build a small bus interface card that will plug into one of the expansion sockets and allow a PC to read and write to the address bus on demand. I've tidied up the BIOS code and gotten it to partially complete POST - tomorrows task is to start work on the supervisor PIC.
Saturday, 5th April 2008 - I've been busy but tonight I am going to get that second SRAM socket working. Also I found a nicer assembler which I am now using.
Wednesday, 2nd April 2008 - Motherboard working! I've soldered down enough for the LCD display to work again. I need to solder up the second RAM socket and then look at some way of adding input.
Monday, 31st March 2008 - I've laid out the motherboard, soldered down the connectors and IC sockets, and prepared it for populating. Soon I should have a working motherboard for this system with expansion card sockets! Also, today my Z80 CTCs arrived, another crucial component of my system which will generate interrupts on a timer for multitasking. The current motherboard design has 2 expansion card ports, adding more is impractical right now. I've left an empty space so I can incorporate the supervisor PIC + Z80 CTC directly onto the motherboard later.
Saturday, 29th March 2008 - On the picture above you can see a nice 20x4 HD77480 LCD being driven by the hardware. Nice isn't it?
Friday, 28th March 2008 late night update - I got the 8255A PIO chip working successfully!
Friday, 28th March 2008 - Today I got a basic system working on breadboard, with a simple 8-bit parallel port connected to LEDs. Video -> http://uk.youtube.com/watch?v=wntSq63LX48 - in this video I give a brief overview of the core of the system.
Documentation
I aim to eventually provide enough documentation for someone else to be able to build a compatible clone of my system for fun or to learn how such a system works. Later on I'll have fancy circuit schematics and firmware downloads.
- Memory and I/O map
- HD44780 LCD details
- Bus details
- Parts list (not very detailed yet)
- Supervisor PIC (not detailed yet)
What is it?
The Z80 project is something I've wanted to do for a long time - build a complete microcomputer system from parts.
At the moment the specs will be:
- Z80 CPU
- Z80 CTC (counter timer circuit)
- 8255A PIO (parallel I/O controller)
- 68681 dual UART (serial I/O controller)
- 40 pin 16Fxxx series PIC as an I/O supervisor
- 8KB BIOS stored in NVRAM
- 8KB fixed SRAM + 128KB bankable SRAM
- 512KB internal solid state NVRAM disk for OS + user files
- 20x4 backlit character LCD
- PS/2 keyboard interface
- 1x RS232 port
- 1x Parallel port
- 1x SPI port
- 1x I2C port
Addon cards I intend to make:
- Ethernet controller using ENC28J60
- TV out video card
- NES controller port card
- 3-channel arbitary waveform sound
- IDE disk controller
I've ordered some variable frequency oscillator modules so I can use a rotary switch to set a range of CPU clock speeds. There will be a row of LEDs used to show bus status on the front panel, like those old Altair computers.
The Zipplet80 OS
A small OS called Zipplet80 will run on this machine. It will provide very primitive semi-preemptive multitasking. Multiple programs may be loaded into memory at once and interrupts will be used to switch between them.
A few things I need to implement:
- TCP/IP stack for ethernet board
- FAT-like simple filesystem
- Possible support for true FAT32?
- BASIC interpreter.. relive the past!
- IRC client
More pictures in roughly chronical order

Click to enlarge
This is the first breadboard version you can see in my first youtube video.

Click to enlarge
LCD display working! Still on breadboard.

Click to enlarge
Initial prototyping of the first motherboard layout.

Click to enlarge
Yay, it lives! At this point I still need to wire up the second SRAM socket. This is a lot more stable than the breadboard version and of a much better design with pullup resistors in the right places and more capacitors added for filtering.