CP/M 2.2 in the MicroBasement

CP/M 2.2 is a classic operating system from the microcomputer era, widely used on 8-bit machines in the late 1970s–early 1980s. In the MicroBasement, CP/M 2.2 runs on several machines, including the Altair 8800, IMSAI 8080, Big Board I & II, and Osborne 1/1A, each with its own custom CBIOS (Custom BIOS). CP/M 2.2 runs on either a Z80 or 8080 processor (or compatible). For the most part, application programs can be run on any CP/M machine as long as they are not specific to the processor or hardware. Building and booting CP/M on these systems requires custom boot disks, often created with floppy emulators like the HXC on Gotek hardware. This write-up focuses on CP/M 2.2's use in the MicroBasement, the process for creating a CBIOS and boot disk, functions supported in the CBIOS, and steps to port CP/M to a new machine.

CP/M 2.2 in the MicroBasement

CP/M 2.2 is the primary OS for many 8-bit machines in the MicroBasement. It runs on the Altair 8800, IMSAI 8080, Big Board I & II, Osborne 1/1A, and others. Each machine requires a custom CBIOS to handle hardware-specific I/O. For some, boot disks are on physical floppies; for others, floppy emulators like the HXC on Gotek hardware simulate disks, allowing easy loading from modern files. This setup lets us boot CP/M quickly and experiment with period-correct software.

Creating a CBIOS

The CBIOS (Custom BIOS) is the hardware-dependent part of CP/M that interfaces the OS with the machine's console, disk drives, and other peripherals. To create a CBIOS:

  1. Start with a template CBIOS assembly source code (available from CP/M archives or tools like Z80ASM).
  2. Implement hardware-specific routines for console I/O (keyboard/screen), disk I/O (read/write sectors), and boot processes.
  3. Assemble the CBIOS code into a binary file using a Z80 assembler.
  4. Patch the CBIOS binary into the CP/M system image (CCP + BDOS + CBIOS) at the correct address (usually near the top of memory).

For MicroBasement machines, each CBIOS is tailored — e.g., IMSAI uses SIO for console, while Big Board uses onboard UART.

Building a CP/M Boot Disk

To build a bootable CP/M 2.2 disk:

  1. Obtain CP/M 2.2 distribution files (CCP.COM, BDOS.SPR, etc.) from archives like Walnut Creek or cpm.z80.de.
  2. Create or modify the CBIOS binary as above.
  3. Use tools like CPMTOOLS or 22DISK to format a blank disk image in the machine's format (e.g., 8-inch single-density for Altair).
  4. Combine CCP, BDOS, and CBIOS into a system image using a hex editor or SYSGEN tool.
  5. Write the system to the boot tracks (sectors 0–1 or similar) using IMAGEDISK or cpmtools.
  6. Copy essential files (PIP.COM, STAT.COM, etc.) to the disk using cpmtools or a running CP/M system.

For floppy emulators like HXC on Gotek, convert the disk image to .HFE format and load it onto a USB drive for emulation.

Functions Supported in the CBIOS

The CBIOS must implement 17 standard entry points (jump table) for CP/M 2.2:

These handle all hardware I/O; the OS calls them via the jump table.

Steps to Port CP/M to a New Machine

Porting CP/M 2.2 to a new machine involves adapting the OS to the hardware:

  1. Design or have a Z80-based system with at least 48–64 KB RAM, console (serial or keyboard/video), and disk storage (floppy or emulator).
  2. Write a custom CBIOS in Z80 assembly, implementing the 17 jump table functions for your hardware's I/O (use templates from CP/M archives).
  3. Assemble and test the CBIOS using a ROM monitor or emulator (e.g., Altair SIMH).
  4. Combine with standard CCP and BDOS binaries into a system image.
  5. Create a boot disk as above, or load via emulator.
  6. Boot and test; debug CBIOS as needed (e.g., console output first).

For MicroBasement ports, we used floppy emulators like HXC on Gotek for diskless testing.

Legacy

CP/M 2.2 was the OS that made microcomputers serious tools for business and development. In the MicroBasement, customizing CBIOS and building boot disks keeps the spirit of 8-bit computing alive — a hands-on way to relive the era when every machine was unique.

Back to Collection


Copyright 2026 - MicroBasement