CP/M 50 Mk II

Fast, small, available. Pick any three.

Similar projects worth following
A one square inch 50MHz Z80-compatible CP/M computer built from stocked parts. Like its predecessor, the Mk II is based on the Zilog eZ80L92 microprocessor. Leveraging the L92's native interfaces and careful part selection packs a great deal of functionality into a small footprint.

The design is built around a ZiLOG eZ80L92 Z80-compatible microprocessor.  System memory is provided by a 128KiB SRAM. Disk storage is provided by a microSD card connected to the L92's SPI bus.  A USB to Dual UART bridge provides connectivity for a serial console.  A ZiLOG Z8 Encore! XP microcontroller bootstraps the system using the L92's ZDI debug interface.  An LDO regulator powers the system from the USB bus.  Below is a block diagram of the system.

The board runs CP/M 2.2 that consists of a custom BIOS and the standard CCP and BDOS modules.  The custom BIOS provides serial console and disk access using the L92's UART and SPI interfaces.

The default disk manager configuration emulates four 8" single density floppy disks and two 4MB hard disk.  Disk images on the microSD card are associated with a drive using the mount command, e.g. mount mbasic.dsk b.

Both the bootloader and disk manager access the microSD card in its native FAT format using the Petit FatFs and FatFs modules respectively.

Use of a microSD card and the FAT file system makes loading disk images as simple as copying files.  The choice of disk geometries matches many of the disk images provided for the z80pack development system.

This project would not have many of its features without projects like FatFs, z80pack and others.


Here's a short video of the board in action.

Hardware done! Software source to follow available in links section.

Software Development Tools

The Zilog Developer Studio packages now appear to be gratis.


Parts list for revision -

plain - 2.89 kB - 07/29/2019 at 02:10



Gerber files

x-compressed-tar - 28.40 kB - 10/01/2018 at 04:02



EAGLE PCB schematic and board files.

x-compressed-tar - 88.09 kB - 10/01/2018 at 04:00


QuickTime video showing board in action. 0:04 starting piccom, resetting board, directory listing of drive A 0:15 starting disk manager, list mounted disk images, mounting microsoft basic disk image 0:52 changing to drive B, running STARTREK on microsoft basic 1:22 changing to drive C, directory listing

quicktime - 13.96 MB - 10/01/2018 at 01:28


Adobe Portable Document Format - 74.28 kB - 09/30/2018 at 01:57


  • 1 × EZ80L92AZ050SG Zilog 50MHz Z80-Compatible Microprocessor
  • 1 × AS7C31024B-10TCN 10ns 128KiB Static RAM
  • 1 × BAT54 SCHOTTKY Diode
  • 2 × Red, LED Fiber Optics / Emitters
  • 11 × 10K Resistor Resistor

View all 17 components

  • Rev A Boards Out for Production

    jessexm10/21/2018 at 22:27 0 comments

    Revision A boards should be back in a week or so.  The first revision required a blue wire to correct an issue with reset and the addition of a resistor and capacitor.  The new revision fixes these issues and also simplifies repurposing the Z8 programming serial port.  New features include RTS/CTS connections for hardware flow control and connecting a previously unused Z8 pin to the L92 RTC clock.  The Z8 clock source is a trimmable internal  precision oscillator and the unused pin happened to be a timer output, so we'll see if the RTC proves to be useful.

    The new EDA files will be posted to the projects github repo; with the return of the square inch contest completed, congratulations to the winners, the current EDA files will be removed from the files section. 

    If you are contemplating building one of these boards I would wait for the new revision to be released; the rework is a bit fiddly.

  • Boot Process Diagrams

    jessexm10/15/2018 at 00:50 0 comments

    Here are a couple of diagrams of the boot process.

    1. at reset, push first bootloader into external RAM then reset eZ80 to start first bootloader
    2. first bootloader loads second bootloader/disk manager/disk operations binary from microSD
    3. second bootloader mounts virtual disks for drives A and B, loads CP/M from reserved tracks of drive A, jump to BIOS coldboot entry point
    4. CP/M running, virtual disk access provided by BIOS and mixed-memory mode disk I/O function

    The limited amount of flash in the Z8 drives the need for two bootloaders. The largest Flash for an 8-pin Z8 is 8KiB.  The desire to keep the µP and µC Zilog drives the Z8 and the board size drives 8-pins.

  • I2C expandability

    jessexm10/08/2018 at 19:35 0 comments

    The L92's I2C interface along with power and ground are available for external use.

    Here are a couple of action shots showing off the Hackaday logo on an I2C 128x64 OLED display.

    Here's the I2C pinout.

  • Software repos are up

    jessexm10/08/2018 at 04:03 0 comments

    Just added software repos to the projects links section.

View all 4 project logs

  • 1
    Programming the Bootloader

    Program the ZDI bootloader using the flash utility included with the dbgutils package that is part of the Z8 Encore Tools repo.

    ./flashutil -u -c 5330000  -p /dev/ttyUSB0 zdiloader.hex


    • -u enables 8-pin device OCD Interface unlock sequence
    • -c sets the clock frequency during programming
    • -p specifies the first CP/M 50 Mk II serial port
    • zdiloader.hex is the firmware

View all instructions

Enjoy this project?



h.crawford.griffith wrote 12/19/2020 at 13:22 point


Hi, love this project and looking for an interesting build.  Did you post the latest h/w updates to this repository? I couldn’t tell.

thanks, Crawford

  Are you sure? yes | no

jockm wrote 07/06/2020 at 15:42 point

I am a bit confused about something: How is the z8 getting programmed?  I don't see a programming header for it.  Is the CP2105 doing it through the DBG line?  There is no source or programming instructions I can find

  Are you sure? yes | no

T. Gerbic wrote 05/18/2019 at 02:30 point

Looks great.  I would be interested in a couple of these. When will the next rev of boards be ready?

  Are you sure? yes | no

nemfield wrote 11/28/2018 at 21:19 point


This is a great project, If you have Facebook can you please join the 

"Z80 DIY/Homebrew Computers & Projects" group as they have a lot of interest in CP/M and DIY. I'm sure you'll spark a lot of interest for circuit boards and excellent feedback and lots of compliments. cheers;



  Are you sure? yes | no

nemfield wrote 11/28/2018 at 11:27 point

Fantastic design using the 50Mhz Z80. Excellent work. I hope boards will be available sometime. It would be fun to put this in an altoids tin and strapping it to my Laptop in order to have a decent computer..

  Are you sure? yes | no

Just4Fun wrote 10/08/2018 at 13:29 point


Never used the EZ family, just wondering the function of the  Z8F082ASB020EG (may be to program the EZ80L92...?)

  Are you sure? yes | no

Just4Fun wrote 10/08/2018 at 13:36 point

Ok... fund it reading more slowly the Details paragraph... :)

  Are you sure? yes | no

Martian wrote 10/06/2018 at 09:21 point

Great project, always nice to see another CP/M machine!  ;)

  Are you sure? yes | no

Mike Szczys wrote 10/02/2018 at 18:15 point

Impressive work on this one!

  Are you sure? yes | no

jessexm wrote 10/04/2018 at 01:42 point

Thanks for the complement.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates