- Tari's opportunistic Z80 computer
- 27 Jul 2025 06:27:04 am
- Last edited by Tari on 28 Jul 2025 08:44:25 pm; edited 1 time in total
Some time ago (uh, about two years), I came across a little single board computer in a scrap pile:
This seemed interesting because it has a Z80 CPU and several other Zilog chips. Namely:
It also has a 32-kilobyte SRAM and 32-kilobyte EPROM to fill up the 64k address space, a little RTC and a modem adapter chip.
Given my familiarity with the Z80 in calculators, I rescued this board from the scrap heap even though I didn't have any plans to use it for anything. I did try to power it up to see if it did anything interesting (and found that it expected AC input to the barrel jack in the top left of the photo), but although I could see activity on the address bus that seemed consistent with the CPU executing code there didn't seem to be any meaningful activity on any of the ports.
(I later happened to learn from the person who had left the board on the scrap heap that this was the brain of an old point-of-sale terminal, where the pin header to the right of the CPU connected to a keypad and vacuum fluorescent display.)
After this sat for a while, I decided it would be interesting to scavenge the Zilog chips from it and use them to build my own little Z80 computer.
In designing a system, I didn't take any cues from other Z80 systems and simply sought to build something that I could get running some kind of software with relative ease. It also seemed like it would be fun (and somewhat convenient) if I could design it such that it was possible to start with completely blank memory and get the system running without any external tools, but manually flipping switches on a front panel and feeding data in.
Some initial design sketches put the entire computer on a single board with serial ports and all of the memory, but I grew uncomfortable with the complexity. It would be somewhat difficult to test and debug all of the components on a single board, so I instead chose to split the design up into a series of cards, with the Z80 system bus broken out to a card slot where I could connect additional features incrementally as I designed them.
As it turns out, both a front panel with lights and switches for bootstrap and a mainboard that's basically just a backplane for plugging cards into it are both characteristics of the Altair 8800 computer from the 70s! It was encouraging to realize that the overall design I had come up with resembled one of the earliest microcomputers that came before the Z80-based home computers of the 1980s which this thing has similar technologies to.
Here's what my brain board looks like, with everything you need to get the CPU running:
I've included 32 kilobytes of RAM and 32 kilobytes of ROM (which is actually a FM18W08 FRAM for ease of programming, so I don't need to use higher voltages to write), and 1 MHz and 4 MHz clocks which can be manually switched between (or neither used, and clock sourced from elsewhere). There are provisions to disable the ROM either in software (by writing values into the 74HC174 4-bit register mapped to I/O address 0xFF), or manually by putting a jumper across a header for that purpose, so expansion cards can provide extra RAM (which might be pageable) or do something else with the bottom half of the system address space.
There's still some complexity here that I'm a bit nervous of in how the bus control signals get decoded to the chips here, and I haven't yet been able to do any real verification because I don't have a backplane yet. The design looks like this:
This board has four 58-pin card sockets (using Samtec MECF-30s), and are meant to be daisy-chainable with the 64-pin DIN41612 connectors on either end. To assist with debugging I also included some LEDs to show the values on the data and address buses, since it costs almost nothing to add a few LEDs to a board that's being assembled commercially. I haven't been able to get this built yet because the lead time on the card edge connectors was very long (they're currently estimated to arrive at the assembler near the end of August), so the brain board has been sitting while I wait.
I haven't been idle while I wait, but I'll discuss that in another post soon since this one is getting long.
This seemed interesting because it has a Z80 CPU and several other Zilog chips. Namely:
- Z84C0006 Z80 CPU, rated for operation at up to 6 MHz, and it's built with a CMOS process so also has no minimum operating frequency (no dynamic logic inside!)
- Z8470 dual UART (DART), providing two serial ports
- Z8420 PIO, providing two 8-bit GPIO ports usable for input, output and interrupts
- Z8430 CTC, a clock generator and timer with three timer channels and two clock outputs
It also has a 32-kilobyte SRAM and 32-kilobyte EPROM to fill up the 64k address space, a little RTC and a modem adapter chip.
Given my familiarity with the Z80 in calculators, I rescued this board from the scrap heap even though I didn't have any plans to use it for anything. I did try to power it up to see if it did anything interesting (and found that it expected AC input to the barrel jack in the top left of the photo), but although I could see activity on the address bus that seemed consistent with the CPU executing code there didn't seem to be any meaningful activity on any of the ports.
(I later happened to learn from the person who had left the board on the scrap heap that this was the brain of an old point-of-sale terminal, where the pin header to the right of the CPU connected to a keypad and vacuum fluorescent display.)
After this sat for a while, I decided it would be interesting to scavenge the Zilog chips from it and use them to build my own little Z80 computer.
In designing a system, I didn't take any cues from other Z80 systems and simply sought to build something that I could get running some kind of software with relative ease. It also seemed like it would be fun (and somewhat convenient) if I could design it such that it was possible to start with completely blank memory and get the system running without any external tools, but manually flipping switches on a front panel and feeding data in.
Some initial design sketches put the entire computer on a single board with serial ports and all of the memory, but I grew uncomfortable with the complexity. It would be somewhat difficult to test and debug all of the components on a single board, so I instead chose to split the design up into a series of cards, with the Z80 system bus broken out to a card slot where I could connect additional features incrementally as I designed them.
As it turns out, both a front panel with lights and switches for bootstrap and a mainboard that's basically just a backplane for plugging cards into it are both characteristics of the Altair 8800 computer from the 70s! It was encouraging to realize that the overall design I had come up with resembled one of the earliest microcomputers that came before the Z80-based home computers of the 1980s which this thing has similar technologies to.
Here's what my brain board looks like, with everything you need to get the CPU running:
I've included 32 kilobytes of RAM and 32 kilobytes of ROM (which is actually a FM18W08 FRAM for ease of programming, so I don't need to use higher voltages to write), and 1 MHz and 4 MHz clocks which can be manually switched between (or neither used, and clock sourced from elsewhere). There are provisions to disable the ROM either in software (by writing values into the 74HC174 4-bit register mapped to I/O address 0xFF), or manually by putting a jumper across a header for that purpose, so expansion cards can provide extra RAM (which might be pageable) or do something else with the bottom half of the system address space.
There's still some complexity here that I'm a bit nervous of in how the bus control signals get decoded to the chips here, and I haven't yet been able to do any real verification because I don't have a backplane yet. The design looks like this:
This board has four 58-pin card sockets (using Samtec MECF-30s), and are meant to be daisy-chainable with the 64-pin DIN41612 connectors on either end. To assist with debugging I also included some LEDs to show the values on the data and address buses, since it costs almost nothing to add a few LEDs to a board that's being assembled commercially. I haven't been able to get this built yet because the lead time on the card edge connectors was very long (they're currently estimated to arrive at the assembler near the end of August), so the brain board has been sitting while I wait.
I haven't been idle while I wait, but I'll discuss that in another post soon since this one is getting long.





