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.


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

  • Boot Process Diagrams

    jessexm2 days ago 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 3 project logs

  • 1
    Programming the Bootloader

    Program the ZDI bootloader using the flash utility included with the dbgutils package.

    ./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?



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