Z180 Mark IV Single Board Computer

There is a thriving community of enthusiasts who design and build their own computers from scratch, not just buying ready-built parts, but laying out pcb's, writing the firmware etc.

Check out:

A few years back I thought I'd have a go at assembling my own system from some of the designs on that site. I chose the Z180 Mark IV, a turbocharged variant of the venerable Z80 8bit processor with a memory management unit, 512KBytes of RAM, a multi-slot backplane and modern(ish!) storage, keyboard and display support.

8 slot ECB backplane board

… see if you can spot the deliberate mistake with the 2 reversed slots 8-O

Building and programming the PropIO peripheral controller

Testing VGA and keyboard functionality of the peripheral controller

Running the Z180 Mark IV test rom

Output from UNA BIOS on the Mark IV, using a traditional serial terminal

Output from UNA BIOS on the Mark IV, using the peripheral controller board

In addition to a specific firmware which needs to be programmed into the peripheral controller, to make the Mark IV board work, you need at least some level of firmware/rom written to it, otherwise it's just a fancy paperweight.

Then once you have a rom for the board(s), you need an operating system, unless you're going to write applications direct for the hardware:

  • OS: UNACPM - by Will Sowerbutts
  • OS: ROMWBW - by Wayne Warthen
  • OS: Fuzix - By Alan Cox (of Linux kernel fame)

There are others, but UNACPM and ROMWBW are the main ones and are CP/M 2.2 platforms and actively used and developed by the community. Fuzix is a very interesting project, and has come on leaps and bounds in the last few years; a unix-like system for various 8-and-16-bit micro computers.


How do you display graphics on a text-mode Z80 based system? Well you don't, without some serious ingenuity or workarounds!

My idea is to interface to a Raspberry Pi (Zero) and essentially use it as a command-driven GPU accelerator; uploading any needed data to its GPU ram and manipulating that data using calls that are re-mapped to libSDL calls.

On the Mark IV side we'll need some translation layer that turns (for example) SDL_CreateSurface() or SDL_BlitSurface() calls into simple ASCII strings that can be sent over an interface we can talk to the Pi on (serial? i2c? spi?), then remap them to native Linux SDL functions once they're decoded.

Work in progress is here:

Main article page yet to be created…

  • blog/retro_z80_mark4.txt
  • Last modified: 2019/11/21 21:42
  • by john