Skip to main content

um80 - Microsoft MACRO-80 Compatible Toolchain for Linux

A complete Unix/Linux implementation of Microsoft's classic CP/M development tools from the 1980s:

  • um80 - MACRO-80 compatible assembler for 8080/Z80
  • ul80 - LINK-80 compatible linker
  • ulib80 - LIB-80 compatible library manager
  • ucref80 - Cross-reference utility
  • ud80 - 8080/Z80 disassembler for CP/M .COM files
  • ux80 - 8080 to Z80 assembly source translator
  • udb80 - source-level debugger for programs that run in cpmemu (0.4.0 and later)
  • dbg2elf - writes an ELF file with DWARF from prog.dbg, for GDB (0.4.0 and later)

These tools can assemble, link, and manage 8080/Z80 assembly code to produce CP/M-compatible .COM executables on modern Linux systems.

Installation

pip install um80

From source

git clone https://github.com/avwohl/um80_and_friends.git
cd um80_and_friends
pip install -e .

Quick Start

# Assemble source files
um80 -o main.rel main.mac
um80 -o util.rel util.mac

# Create a library
ulib80 -c mylib.lib helper.rel support.rel

# Link everything together
ul80 -o program.com main.rel util.rel mylib.lib

# Run in CP/M emulator
cpm program.com

Each tool has many more options. docs/tools.md has a command summary for each tool.

Documentation

  • docs/tools.md: command summary, tools reference, file formats, installing the man pages
  • docs/compatibility.md: compatibility notes, extended symbol names, DRI syntax extensions (summary)
  • docs/EXTENSIONS.md: extensions beyond M80/L80, in full detail
  • docs/ul80_rom.md: ul80 options for ROM images (data origin, ROM data copy, raw binary, size checks)
  • docs/debug_info.md: debug information (--debug-info): the ;# markers, the .dbm and .dbg files
  • docs/udb80.md: udb80, the source-level debugger for cpmemu: break, step, next, bt, print of C variables, addr2line, sizes
  • docs/gdb.md: GDB for Z80 programs: build GDB 18.1, dbg2elf (prog.dbg to an ELF file with DWARF), the Python unwinder, variables
  • docs/frame_records.md: backtrace from the frame records of prog.dbg (no shadow call stack needed), udb80 bt-dump
  • docs/testing.md: the test suite, the M80 compatibility tests, the mbasic2025 byte-for-byte test
  • docs/mbasic2025.md: mbasic2025 built with um80/ul80 and with the genuine M80/L80
  • docs/index.md: quick reference, examples, troubleshooting
  • docs/ISSUES.md: open issues
  • CHANGELOG.md: release history
  • Man pages: man um80, man ul80, man ulib80, man ucref80, man ud80, man ux80, man udb80, man dbg2elf
  • Original Microsoft manuals, in the retro_docs archive:

License

GPL-3.0-or-later. See LICENSE.

  • 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.
  • mpm2 - Z80 emulator for MP/M II, the multi-user CP/M operating system. Users connect over SSH, and SFTP clients transfer files.
  • 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.
  • 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.

Metadata

Release files for um80 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for um80 0.4.1
File Size Uploaded Provenance Actions
um80-0.4.1.tar.gz 550.7 kB With provenance Details for um80-0.4.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for um80 0.4.1
File Interpreter ABI Platform Actions
um80-0.4.1-py3-none-any.whl Python 3 none any Details for um80-0.4.1-py3-none-any.whl

Total release size: 810.0 kB

Release files / um80-0.4.1.tar.gz

Download URL um80-0.4.1.tar.gz
Size 550.7 kB
Tags Source
SHA-256 checksum
How to use checksums
342c04a829a79fe9de32f2511b0e0d10b61b4e4bd21bcdc3ebb7449253b22ef0
BLAKE2b-256 checksum
How to use checksums
9e8e5e852a9bcb0d03a253db492e08897ab8a07c8537dbf05645dcb6d340f211
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Release files / um80-0.4.1-py3-none-any.whl

Download URL um80-0.4.1-py3-none-any.whl
Size 259.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
682a43e1e3bbcf62c1de73c5b5792ab3473c6e1e0e7facd05da709514c3d5b2a
BLAKE2b-256 checksum
How to use checksums
31ad835bcd23ba8f85a0e606471e999b9044fdbac10cffc67232707306606e1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

Security for um80 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for um80-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page