====== 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: https://www.retrobrewcomputers.org/doku.php 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 [[https://www.retrobrewcomputers.org/doku.php?id=boards:sbc:z180_mark_iv:z180_mark_iv|Z180 Mark IV]], a turbocharged variant of the venerable [[https://en.m.wikipedia.org/wiki/Zilog_Z180|Z80]] 8bit processor with a memory management unit, 512KBytes of RAM, a multi-slot [[https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:backplane-8:start|backplane]] and modern(ish!) [[https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:propio:start|storage, keyboard and display support]]. ---- ==== Initial Mark IV Build, Backplane and IO ==== 8 slot ECB backplane board {{:blog:p1050445-.jpg?400|}} {{:blog:p1050446-.jpg?400|}} ... see if you can spot the //deliberate// mistake with the 2 reversed slots 8-O Building and programming the PropIO peripheral controller {{:blog:p1050449-.jpg?400|}} {{:blog:p1050450-.jpg?400|}} Testing VGA and keyboard functionality of the peripheral controller {{:blog:p1050451-.jpg?600|}} Running the Z180 Mark IV test rom {{:blog:p1050757-.jpg?400|}} Output from UNA BIOS on the Mark IV, using a traditional serial terminal {{:blog:p1050777-.jpg?400|}} Output from UNA BIOS on the Mark IV, using the peripheral controller board {{:blog:p1050780-.jpg?600|}} ---- ==== Z180 Mark IV Software ==== 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. * ROM: [[https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:una:start|UNA BIOS]] - by Will Sowerbutts * ROM: [[https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:romwbw:start|ROMWBW]] - by Wayne Warthen 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: [[https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:una:cpm:start|UNACPM]] - by Will Sowerbutts * OS: [[https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:romwbw:start|ROMWBW]] - by Wayne Warthen * OS: [[http://www.fuzix.org/|Fuzix]] - By Alan Cox (of Linux kernel fame) There are others, but //UNACPM// and //ROMWBW// are the main ones and are [[https://en.wikipedia.org/wiki/CP/M|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. ---- ==== Upgrades - USB Interface ==== TBD ---- ==== Upgrades - Accelerated Graphics ==== 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: https://github.com/megatron-uk/PyPiGFX Main article page yet to be created...