A CP/M-inspired operating system

Try it Online License: MIT

cpm-neo main

CP/M Neo requires a RISC-V bare-metal toolchain (riscv64-unknown-elf-gcc + binutils), make, and sh.

make -C sysgen
./sysgen/build/sysgen new --disk-size=2048K --mem=64K --platform=vemu --march=rv32im

Everything outputs directly to sysgen/build/:

File Purpose
disk.img Final disk image
bootloader.bin Boot image
core/int/kernel.bin kernel binary
core/int/ccp.bin Console Command Processor (CCP) binary
apps/ Bundled Apps

To clean up the build environment, run:

See the User Guide for the full build and execution walkthrough.


sysgen is the host utility for building and inspecting CP/M Neo disk images. Commands other than new support appending --disk=path to target a specific image; new always writes to sysgen/build/disk.img.

Command Description
new --disk-size=KB --mem=KB --platform=NAME --march=isa Build the OS and create a disk image
add <file> [--dst=Vn] [--attr=R/W|R/O|SYS] Add an external file to an image
install <folder> [--dst=Vn] [--attr=...] Compile a source folder and install the binaries
dir [Vn] List files on a volume
type <name> [Vn] Print a file
era <name> [Vn] Delete a file
ren <old> <new> [Vn] Rename a file
stat Show volume usage and metadata

Platforms are defined in platform/<name>/bios.c.

See the Developer Guide to add your own.


CP/M Neo has 4 volumes:

Switch volume:

Each volume contains 16 user areas:

Switch user area:

Or use the short form:

Switch volume and user area:

Type help at the command prompt for the full list of commands.

CP/M Neo is structured to isolate user applications from the host hardware, with the Console Command Processor (CCP) and user applications sharing the Transient Program Area (TPA).

os arch

boot process


Contributions to CP/M Neo are welcome!

If you'd like to contribute, see CONTRIBUTING.md for more info.


CP/M Neo is distributed under the terms of the open-source MIT.