Friendly eZ80 CP/M computer

21 apr 2025

I really like the idea of using or having vintage machinery, but the reality of them is always so messy... chips in bad sockets, rotting media... and emulation on modern gear is amazing, but an over 9000 gigahertz Z80 is fun why? I like the dedicated, in-context experience of using something approaching the real thing, and to me, this means dedicated hardware. A BOX.

So I made one. OK I made five, because that's what JCLPCB.com requires as minimum order.

I got a bit carried away with the authentic-experience thing, and wrote a lot of code to make a super sweet CP/M-80 machine. It's very loosely a 60 - 100 MHz equivalent Z80, hard disk and two removable drives using full size SD cards.

I wrote all of the software on the machine itself, after bootstrapping with ntvcm, so work flow is nice because it was tuned and fixed during heavy use. Our standards today are umm a wee bit higher than 1978 so it has real error checking and recovery, fancy I/O devices that don't suddenly fail (S100 buss masters...).

There is easy (Ok, easier) file transportability -- IMPORT and EXPORT easily move files from the CP/M filesystem to the SD card FAT system.

HARDWARE SETUP

The reality of using 1970's hardware I find fraught; everything sucked then and is now worn out, expensive and/or scarce. This machine uses:

What's the plan, man?

The plan is to get this iteration of code/hardware stable (v3 will be that) as step 1; probably 1st week of May 2025. Step 2 will be to sort out and bundle up the software I've got so far: firmware, boot/bios, the fundamental system tools onto bootable media. This is de facto complete, as I've been using it for some time, but it's undocumented. Step 3 will be to go through the CP/M abandonware I've been collecting and package for download and use: this means sorting out LBR and squish utilities, making web gunk to download them here, and some sort of documentation for the worse of it (OMFG the command tails for some of the LBR/compression utilities are *baffling*.) At this point I'll be "done" (ha ha).

After I'm done I intend to write (again) a real CCP ("shell") which everyone has done by mine is better (aren't they all). With that, CP/M will be quite usable, I mean actually usable to do moderate tasks like writing.

After THAT, actually in parallel, I will get the 8-inch floppy drive given to me by @tubetime with the GreaseWeazle and suck the data off the ancient floppies I still have, if the oxide is still attached. And maybe re-start the ADVENTUR.COM game where I left off in 1980. (Compiled from the original sources with TDL/Xitan's FORTRAN compiler.)

FEETCH

The devices within the Z80 space are plentiful and easy to write code for. Rather than slavishly emulate horrid old chips like the 8250, I made up my own devices. They mostly use 8080/Z80 I/O ports, a few use DMA (disk). The Programmer's Manual below describes them in enough detail to write code (also the BIOS, boot and utilities are functional examples). Here's a partial list of devices:

DOCUMENTATION

The version 3 boards were just sent out for fabrication, but except for the LPT port and serial port status lines, is complete-ish. Shortcomings are missing keyboard map upload, LPT and SER control line API. The version 2 (current) code will run as-is on version 3 though it will be soon superceded.

Source code availability

I will make it all available soon. Though I've beeb writing code forever and I gladly share it, few are interested because all of my code is tied to hardware that I make that does very specific things; I'm not a generalized *nix desktop tool coder. It will be available for download here. Maybe on codeberg if I can do so simply. (I've used github in the past and hate it; I have no intent in serving industry anyway.)

Also I code within the Arduino IDE, which seems to induce cringe with many folk; tough tootsies. I know how to use make, though I'm fantastically rusty; but that's a future possibility, it would be a mere day's work.

AVAILABILITY

Though I made this for myself, and can't imagine needing more than one, or a 2nd as spare, modern economies of scale make it very easy to run off more. Completely assembled and booting probably $100, the Teensy 4.1 board is 40 bucks. Boards with components closer to $25. Ask me. I ordered 10 version 3 boards.

CP/M SOURCE

Until I work up something more orderly, here's a couple program listings of working code assembled with Digital Research's MAC.COM macro assembler. The complete and self-contained macro assembler is 11,776 bytes long!

MONITOR.PRN Boot ROM monitor
BOOT.PRN Boot record in track 0 sector 0
BIOS.PRN The CP/M CBIOS for eZ80

System tools

Utility programs written in BDS C 1.6.

FORMAT Creates a CP/M 2.2 filesystem and supporting folders on SD card
IMPORT Imports files from SD card VFAT into CP/M filesystem.
EXPORT Exports files from CP/M filesystem to SD card VFAT filesystem.
SYSGEN Copies boot, BIOS, CP/M files (bootable system) from one disk to another
SYSBOOT Writes boot or BIOS hex files to system sectors (new system).
VGA Sets VGA display characteristics.
BURNMON Burn a boot monitor ROM image to E(E)PROM.


Website contents, unless otherwise specified, © 2025 by Tom Jennings. Permission is granted for personal use with no renumeration. Corporations or any legal organization or their agents (employees or consultants or other relationships) expressly prohibited from using any material without written permission.