A Linux toolchain that is compatible with Microsoft MACRO-80. The um80 assembler, the ul80 linker, the ulib80 librarian, and the ud80 disassembler build and examine CP/M .COM files for the 8080 and Z80.
An unpacker for the CP/M archive and compression formats LBR, ARC, squeeze, crunch, and CrLZH. A Python 3 program and a native CP/M program give the same output.
A peephole optimizer for Z80 compilers that write lowercase Z80 assembly language. It shortens jumps to jr, builds djnz loops, changes call and ret pairs to jp, and removes dead stores.
A Python interpreter for MBASIC 5.21, the Microsoft BASIC-80 for CP/M. It runs the original programs without changes, and two compiler backends compile them to CP/M .COM files or to JavaScript.
A Cowgol compiler for the Z80 processor and CP/M. It runs on Linux in Python and analyzes the call graph across modules, so subroutines that never overlap share the same local storage.
A C compiler for the Z80 processor and CP/M. It optimizes for small code size, and it made smaller binaries than z88dk in all 47 tests of a public test suite.
A peephole and AST optimizer for 8080 and Z80 compilers. It folds constants, removes dead code, replaces instruction patterns, and converts 8080 mnemonics to Z80 mnemonics. The author no longer maintains this code.
An Ada compiler for the Z80 processor and CP/M 2.2. It compiles a subset of Ada 2012 to Z80 assembly language for CP/M .COM files, and it works toward ACATS conformance.