A Z80-based MP/M II emulator with SSH terminal access. Multiple users can connect simultaneously to run CP/M-compatible software.
Features:
- MP/M II V2.0 or V2.1, from Digital Research's binaries or built from DRI's source code
- 4 consoles over SSH, 7 memory banks, and five resident system processes
- SFTP and HTTP access to the files on the MP/M II disk
- Access log of HTTP, SSH and SFTP connections
MP/M II Command Reference - Complete guide to all commands and utilities
# Build with DRI binaries (default, fast)
./scripts/build_all.sh
# Or build from source (requires uplm80/um80/ul80)
./scripts/build_all.sh --tree=src # MP/M II V2.0
./scripts/build_all.sh --tree=src --version=2.1 # MP/M II V2.1
# Run with local console
./build/mpm2_emu -l -d A:disks/mpm2_system.img
# Or run with SSH access (connect from another terminal)
./build/mpm2_emu -d A:disks/mpm2_system.img
ssh -p 2222 user@localhostPre-built packages are available for Linux systems. Download the appropriate package and disk image from the Releases page.
# Download and install
wget https://github.com/avwohl/mpm2/releases/latest/download/mpm2-emu-0.3.7-Linux.deb
sudo dpkg -i mpm2-emu-0.3.7-Linux.deb
sudo apt-get install -f # Install dependencies if needed
# Download disk image
wget https://github.com/avwohl/mpm2/releases/latest/download/mpm2_system.img
# Run
mpm2_emu -l -d A:mpm2_system.img# Download and install
wget https://github.com/avwohl/mpm2/releases/latest/download/mpm2-emu-0.3.7-Linux.rpm
sudo dnf install ./mpm2-emu-0.3.7-Linux.rpm
# Download disk image
wget https://github.com/avwohl/mpm2/releases/latest/download/mpm2_system.img
# Run
mpm2_emu -l -d A:mpm2_system.img| Package | Contents |
|---|---|
.deb / .rpm |
mpm2_emu emulator binary |
mpm2_system.img |
Pre-built 8MB disk image with MP/M II and utilities |
The disk image is required - it contains the MP/M II operating system, boot loader, and standard utilities.
Building needs CMake 3.16+, a C++17 compiler, Python 3.10+ and cpmemu 4.10.0 (github.com/avwohl/cpmemu, make in cpmemu/src).
The build also needs um80/ul80 and uplm80 (pip install um80 uplm80), and libssh for SSH access.
docs/building.md has the required tool releases, the build steps and the build_all.sh options.
- Building - prerequisites, tool releases, build steps, source build, V2.0 and V2.1, GENSYS, resident system processes
- Running - SSH setup, command-line options, examples, access logging, troubleshooting
- SFTP and HTTP file access - SFTP paths and commands, the HTTP file browser, the SFTP RSP
- Testing -
run_tests.shtests andverify_dri.py - Project structure and internals - source layout and how the emulator boots MP/M II
- MP/M II V2.1 reconstruction - every change between V2.0 and V2.1, and the evidence
- MP/M II command summary - commands and utilities
- CHANGELOG - release notes
GPL-3.0-or-later
- MP/M II Command Reference - Quick reference for all commands
- MP/M II System Guide - Original Digital Research documentation
- RomWBW - hd1k disk format
- cpmemu - Z80 emulator with cpm_disk.py utility
- 80un - Unpacker for the CP/M archive and compression formats LBR, ARC, squeeze, crunch, and CrLZH.
- cpmdroid - Z80/CP/M emulator for Android phones and tablets. It emulates the RomWBW HBIOS interface and a VT100 terminal.
- cpmemu - Z80/CP/M emulator for Linux and Windows, with Z80 and 8080 CPU cores. It translates the BDOS and BIOS calls of CP/M 2.2 programs to the host file system.
- ioscpm - Z80/CP/M emulator for iOS and macOS. It emulates the RomWBW HBIOS interface and runs CP/M 2.2 and CP/M 3.
- learn-ada-z80 - Collection of more than 90 Ada example programs for uada80, the Ada compiler for the Z80 processor and CP/M.
- mbasic - Python interpreter for MBASIC 5.21, the Microsoft BASIC-80 for CP/M. Two compiler backends compile the programs to CP/M .COM files or to JavaScript.
- mbasic2025 - Reconstruction of the lost source code of MBASIC 5.21, the Microsoft BASIC-80 for CP/M. The MACRO-80 source code assembles to a binary that matches mbasic.com byte for byte.
- mbasicc - C++17 interpreter for MBASIC 5.21, the Microsoft BASIC-80 for CP/M. It runs on Linux and macOS.
- mbasicc_web - Web browser interpreter for MBASIC 5.21, the Microsoft BASIC-80 for CP/M. Emscripten compiles the mbasicc interpreter to WebAssembly.
- romwbw_emu - Hardware-level Z80/CP/M emulator for Linux and macOS. It emulates the RomWBW HBIOS interface and switches banks in 512 KB of ROM and 512 KB of RAM.
- scelbal - Floating-point BASIC interpreter for the 8080 processor and CP/M. A translator converts the original 8008 source code to 8080 source code.
- uada80 - Ada compiler for the Z80 processor and CP/M 2.2. It compiles a subset of Ada 2012 to CP/M .COM files.
- uc80 - C compiler for the Z80 processor and CP/M. It optimizes for small code size.
- ucow - Cowgol compiler for the Z80 processor and CP/M. It runs on Linux in Python.
- um80_and_friends - Linux toolchain that is compatible with Microsoft MACRO-80. It has an assembler, a linker, a librarian, and a disassembler.
- upeepz80 - Peephole optimizer for Z80 compilers that write lowercase Z80 assembly language. It shortens jumps to jr, builds djnz loops, and removes dead stores.
- uplm80 - PL/M-80 compiler for the Z80 processor and CP/M. It writes Intel 8080 and Zilog Z80 assembly language.
- z80cpmw - Z80/CP/M emulator for Windows. It emulates the RomWBW HBIOS interface and boots CP/M from disk images.