CP/M software
04 nov 2025
There is a surprising amount of good software available for CP/M. (There
was a lot of bad software too, but most of that has been forgotten.) I
have a limited amount for download here, things I have tried out, and some that
I use regularly. Some, like WordStar, PMATE, SuperCalc2, BDS C 1.60, and
others, have been customized to work on fZ80. Most of that customization is
for screen formatting, something for which there was never any standardization
at all. Below that find a list of external CP/M software repositories.
Software packages here are in folders I call bundles. Each bundle contains
all of the CP/M files related to that package. There is often a README.TXT file
about the bundle.
An excellent source of crucial tools,
TechTinkering.com.
.LBR (and .LQR) files and .ZIP files
.LBR ("library") files are analogous to modern ZIP files in that they are
used to containerize many, usually related, files into one file. .LBR files
contain a compact directory of the contents. Specific tools are needed to
remove, add, list or manage LBR/library contents.
Unlike .ZIP files .LBR files are not compressed. LBR files predate .ZIP
files by about a decade; here's two Wikipedia pages on the subject: .LBR and .ZIP.
File-compression with the intent of saving disk space does exist on CP/M
using a method called "squeeze"; common names for squeeze and un-squeeze
programs are SQ.COM, USQ.COM, and variants. SQ/USQ change the middle character
of the filename extention to "Q" to indicate that the file is squeezed;
therefore FILE.LBR squeezed with SQ.COM would be renamed to FILE.LQR. (SQ and
USQ save and restore the missing middle letter.)
The relationship between libraries and squeezing is analogous to that
between unix tar and compress or pack, which predate lbr/sq by a few years.
There is essentially no .ZIP support for CP/M, and little support for .LBR
outside of CP/M.
Extracting files from .LBR files
LU.COM (LU300.COM, etc) on CP/M both extracts and builds .LBR files. The
command line syntax is a bit wordy but it is a good program and very
consistent. The LU.COM program is on the bootable A-drive disk image, or
downloadable. The basic syntax is:
LU -O filename.LBR -E filename
Where -O filename.LBR specifies the .LBR file to extract from,
and -E filename is which file to extract, but can be -E
*.* to extract all files. Use -L (filename optional) to
list files in the library. For further usage read the help file.
Moving files between CP/M and modern computers
CP/M has it's own unique filesystem and is not directly readable by other
computers. On linux there is the cpmtools package that can read CP/M disk
images but I have not yet set it up. The fZ80 CP/M filesystem is stored within
a single 32-megabyte file on the SD card, stored in /CPM/CPMDISK.SYS, which
file can be easily read on any modern computer.
fZ80 comes with two CP/M programs that move files to the "other side" of the
SD card: IMPORT.COM and EXPORT.COM. See the Operator's Manual on how to use
those two programs; essentially they move files between the CP/M file system
and that of the SD card's native filesystem, usually FAT32.
Copying file(s) into CP/M.
- Put a CP/M-formatted SD card into your modern computer. Open the SD card
IMPORT folder.
- Copy the files destined for CP/M into the import folder. There is no
advantage here to squeezing or libraries.
- Unmount/eject the SD card (let writes complete) from the modern
computer.
- Insert the SD card into an fZ80 slot. The LED lights green.
- "Log in" the drive; type command "C:" at the CP/M prompt.
- Run
IMPORT -L. You should see a list of the files you just
copied.
- Import using
IMPORT *.*. to import all files, or replace *.*
with a more specific name. IMPORT prints file names and sizes as
progress.
Copying file(s) from CP/M to a modern computer.
The EXPORT process is the reverse of IMPORT. The method below is the
simplest; read the manual for more options.
- Insert a removable SD card into a free fZ80 slot if you have not already.
- It's easiest to export files already stored on the SD card. Use PIP to
copy files to the removeable card as necessary.
- Type the command
EXPORT afn where afn ("ambiguous filename")
specifies the file(s) you want to export; FILENAME.EXT, FILENAME.*, etc.
EXPORT lists file names and sector sizes as progress.
- When the SD card's LED turns green again (it is red during writing) you
can remove the card and insert into a modern computer. The files so
exported will be in the /EXPORT folder.
- Adventure-350 COLLOSAL CAVE, aka ADVENTURE. 350 point version, compiled with TDL FORTRAN. The file named KEITH.COM is a play saved by Keith in 1980. Doesn't seem to start in the right place. Works though.
- Algol-M-v11 Algol-M was created in 1976 at the Naval Postgraduate School and was the first high-level block-structured language to execute on a microprocessor. It was written by John Flynn and Mark Moranville who were Naval Officers in the computer science master's degree program at the Naval Postgraduate School in Monterey, CA. Algol-M was developed as their combined thesis project. Their thesis advisor was Dr. Gary Kildall.
- Aztec-C-WS MANX Axtec C, version 1.06.
- BASCOM-5 (No description.)
- BASIC-GAMES BASIC games... this collection was found at http://www.vintage-basic.net/games.html. They have been renamed such that they fit in CP/M's filename convention. I cannot vouch for these games; and welcome to hobbiest programming circa late 1970's. You might find umm quality variable. Many programs simply say hello and prompt for input, mysteriously. You'll have to LIST the program and puzzle out what it wants. Errors generally bomb out. And so it goes. MBASIC.COM will or should run these. It distro distro.include interesting to slow down, lower expectations, and see how people were thinking about writing code, within the fairly horrible confines of the BASIC languge.
- BASIC-PROGS BASIC PROGRAMS For MBASIC of BASCOM. Can be found on http://www.z80.eu/basic.html STARTREK.BAS The classic 1978 Star Trek. TREKINST.BAS Instructions, chained to by STARTREK TAXMANCL.BAS TaxMan game, a clever number game.
- BDS-C-1.6 BD Software's C compiler, verion 1.6. Courtesy Leor Zolman, who put this great code in the public domain. NOTE: This is a small subset of the package. There is a full ZCPR version, sources to everything, tools, all sorts of stuff, but for compiling programs eg. on fZ80, this subset is the core of it all. You can download the entire package and more from: https://www.bdsoft.com/resources/bdsc.html
- Bootable-CPMFILE.SYS (No description.)
- CPM-MPM-v6-A-drive-contents LBR, SQUEEZE, CRUNCH, ARC Library and compression/decompression tools Tom Jennings 08 jan 2026 This is a curated set of tools derived from downloads from TECHTINKERING.COM. It's a great site, but the files downloadable there are a mess. (NULU152.LBR contained files were all CRUNCHed; the UNCRUNCH program was in a .ARC file; etc. .DOC files were cut short when extracted; NULU152.COM arrived with some terminal's ESCape sequences embedded and other customizations.) The programs below were prepared for fZ80 but should work on any CP/M machine; there are no fZ80 dependencies. There are patch docs with which you can customize them. Enclosed also are the .LBRs downloaded from TECHTINKERING. The various .COM and other files below may not be the ones in those .LBRs! Don't overwrite them by extracting in place! Extract them on another disk or user number. The files below with comments are clean working copies of the intended files as tested by me. Note that each program has it's own peculiar and sometimes difficult command line syntax. NULU is consistent and very unix-like with its -X type options. NULU.COM This is NULU152.CPM from the .LBR of similar name, with the following patches REMOVED (see NULUMOD.DOC): 024e: 01, exit after command line. 0252: No prefix commands. 027d: All ESCape sequences removed. Other settings are default. NULUMOD.DOC How-to PATCH for NULU.COM; the file in the .LBR was truncated. UNARC.COM Directly from the .LBR; works. NULU152.COM The working but oddly-customized binary from the .LBR. CRUNCH28.CFG CRUNCH28.COM CRUNCH28.DOC BDSC160.LBR CRUNCH28.NEW UNCR28.COM BDSCPAT.LBR EXAMPLES.LBR SOURCES.LBR NULU152.INF -READ.ME NULU15.DOC NULUTERM.ASM
- DR-ASM-tools Digital Research ASM and MAC and DDT, etc, distributed with CP/M 2.2.
- DR-CPM-2.2-Distribution (No description.)
- fZ80-63K-CPM-2.2-4-drive-source fZ80 system software: sources for boot, CBIOS, and the ROM Monitor. The EVRST60.ASM and .HEX files are the keyboard table that maps "IBM PC type" scancode keyboards into character codes used by CP/M and MP/M. Modify as necessary (note ID byte info in the .ASM file). Note however that the arrow keys are defined to be WordStar compatible (and same used by PMATE editor) so change those at your own risk. Also the F-keys map to "IBM PC" function keys. Use the KEYMAP program to display keyboard codes.
- fZ80-MPM-II-2.1-5-drive-source (No description.)
- fZ80-utilities-BDS-C 02 Jan 2026 fZ80 system utilities for CP/M and MP/M. Both binaries and sources. This folder is in constant flux; feel free to contact me. As of early Jan 2026 I'm doing things manually and moving towards an fZ80-specific library. getOpts() for now, but it's handled in the C.SUB script. CCTOA.SUB Copies basic BDS tools and libs to 0A:, and sets attributes for MP/M to find them automatically (there is no PATH). BACKUP.SUB This is a crude backup script that copies critical files from this folder (10B:) to C: and EXPORTs for copy to an outside machine. PIP gets upset copying .SUB files (BACKUP.SUB is open) so probably attribute tweaks will fix. This requires RTFM. C.SUB Executed eg SUBMIT C progmane this compiles progname.C and links it to .COM. At the moment GETOPTS is in the link command line, it will eventually be a library. INSTALL.SUB Executed as SUBMIT INSTALL progname, copies progname.COM to 0A: and sets permissions for it to be found by MP/M command search, and to share open files. This requires that the BDS C 1.6 compiler be installed.
- MBASIC-521 MBASIC 5.1 The manual for MBASIC can be found at https://www.bleeve.me/fZ80/documents.html. There are a few "classic" games and programs in this bundle, I'll add more as I find them. If you find some let me know!
- MPM-distribution-OEM (No description.)
- NULU-ARC-CRUNCH LBR, SQUEEZE, CRUNCH, ARC Library and compression/decompression tools Tom Jennings 08 jan 2026 This is a curated set of tools derived from downloads from TECHTINKERING.COM. It's a great site, but the files downloadable there are a mess. (NULU152.LBR contained files were all CRUNCHed; the UNCRUNCH program was in a .ARC file; etc. .DOC files were cut short when extracted; NULU152.COM arrived with some terminal's ESCape sequences embedded and other customizations.) These work on MP/M. Unfortunately the otherwise excellent LU310.COM does not. The programs below were prepared for fZ80 but should work on any CP/M machine; there are no fZ80 dependencies. There are patch docs with which you can customize them. Enclosed also are the .LBRs downloaded from TECHTINKERING. The various .COM and other files below may not be the ones in those .LBRs! Don't overwrite them by extracting in place! Extract them on another disk or user number. The files below with comments are clean working copies of the intended files as tested by me. Note that each program has it's own peculiar and sometimes difficult command line syntax. Bugger-in-process-ZASM-ZLINK bundle-index.html Cabinet Contributions-multiple-raw CPM-bundles CPM DOWNLOADS CPM-Operating-Manual-subset CPM synchronization error Customers distro distro.include ebay-text ERRATA.txt External for-upload fZ80-biz Hardware HELP-design HELP-syntax linux-emulator MBASIC.PDF MPM2-source MPM-documentation MPM-downloads-raw MPMII_2.1_RelNotes.pdf MPM-notes.txt Nevada_BASIC_Sep83.pdf Obso OBSO-bundles Other-CPM paths-not-followed Photos-5-nov-2025 PMATE-card PMATE-cheat-sheet.html README Release Release-documentation ReleaseNotes sample-RSP.asm SQUEEZE source SuperCalc2.pdf todcnv.plm toddate.asm toddate.c WordMaster WordMaster-Manual-Fix NULU is consistent and very unix-like with its -X type options. Bugger-in-process-ZASM-ZLINK bundle-index.html Cabinet Contributions-multiple-raw CPM-bundles CPM DOWNLOADS CPM-Operating-Manual-subset CPM synchronization error Customers distro distro.include ebay-text ERRATA.txt External for-upload fZ80-biz Hardware HELP-design HELP-syntax linux-emulator MBASIC.PDF MPM2-source MPM-documentation MPM-downloads-raw MPMII_2.1_RelNotes.pdf MPM-notes.txt Nevada_BASIC_Sep83.pdf Obso OBSO-bundles Other-CPM paths-not-followed Photos-5-nov-2025 PMATE-card PMATE-cheat-sheet.html README Release Release-documentation ReleaseNotes sample-RSP.asm SQUEEZE source SuperCalc2.pdf todcnv.plm toddate.asm toddate.c WordMaster WordMaster-Manual-Fix UNARC is unobvious, and only extracts if you include a drive letter in the command tail! UNARC FILE.ARC PROG.NAM will list details about the file PROG.NAM inside the ARC file. UNARC FILE.ARC C:PROG.NAM will extract that file! Very confusing command line, but the program seems to work well. NULU.COM This is NULU152.CPM from the .LBR of similar name, with the following patches REMOVED (see NULUMOD.DOC): 024e: 01, exit after command line. 0252: No prefix commands. 027d: All ESCape sequences removed. Other settings are default. NULUMOD.DOC How-to PATCH for NULU.COM; the file in the .LBR was truncated. UNARC.COM Directly from the .LBR; works. NULU152.COM The working but oddly-customized binary from the .LBR. UNCR.COM This is UNCRUNCH28.COM. UNCRUNCH allegedly handles LZH encrypted files but I have not tested it. CRUNCH28.NEW and .DOC contain useful information. CRUNCH.COM This is CRUNCH28.COM. LSWEEP.COM This is LSWEEP13.COM, a SWEEP type program with command line options. LSWEEP file.LBR and you can choose which files to extract.
- PMATE-3.21-fZ80 (No description.)
- PMATE-3.21-original PMATE distribution for Friendly fZ80 computer PMATE (Phoenix's Mike Aronson's Text Editor) customized for fZ80. PMATE321.LBR LBR file containing files below PM.COM 24 x 80 editor PM24.COM 24 x 80 editor PM36.COM 36 x 100 editor PM48.COM 48 x 1280 editor PM-FZ80.CNF The fZ80 customized confifguration file; run CONPMATE PM-FZ80 to configure PMATE, then xdfilename.com$$ to save. CONPMATE.COM The configurator program (PMATE with funny macros). CONFIG.CNF Distribution configuration file. *.PMA Permanent macros to add FILLPMA.PMA IOPATCH.ASM KBD.HLP KBD.PMA MACLIB.PMA PERMAC.PMA PERMACS1.PMA PERMACS2.PMA PMATE.HLP README.DOC README.TXT
- SQ-USQ-LU LU, SQ, USQ file-library, compression and uncompression tools
- SuperCalc2 SuperCalc 2, with manual and configurator, plus SC2.COM pre-convigured for fZ80. Make sure video resolution is 800 x 600. ("vga m/1"). You can of course use VGA.COM to set 1024 x 768, and reconfigure for the larger screen (VGA s displays resolution).
- TDL-Phoenix TDL (Technical Design Labs) macro assembler and linker, called ZASM and ZLINK, respectively. The Phoenix Software Associates versions, PASM and PLINK, I believe to be exactly the same. I found the CP/M overlay sources -- but no instructions. They may be in the PLINK manual; I have not checked. If so, this will be a major win. PLINK and overlays on (much later) MSDOS was great.
- WordStar-4.0-H19 WordStar release 4, the latest and best version for CP/M. Tom Jennings 05 nov 2025 This copy has been customized for Friendly fZ80. Instructions on how this was done are below. WS.COM WordStar configured for fZ80 Bugger-in-process-ZASM-ZLINK bundle-index.html Cabinet Contributions-multiple-raw CPM-bundles CPM DOWNLOADS CPM-Operating-Manual-subset CPM synchronization error Customers distro distro.include ebay-text ERRATA.txt External for-upload fZ80-biz Hardware HELP-design HELP-syntax linux-emulator MBASIC.PDF MPM2-source MPM-documentation MPM-downloads-raw MPMII_2.1_RelNotes.pdf MPM-notes.txt Nevada_BASIC_Sep83.pdf Obso OBSO-bundles Other-CPM paths-not-followed Photos-5-nov-2025 PMATE-card PMATE-cheat-sheet.html README Release Release-documentation ReleaseNotes sample-RSP.asm SQUEEZE source SuperCalc2.pdf todcnv.plm toddate.asm toddate.c WordMaster WordMaster-Manual-Fix It will auto-adjust for the current window size. Bugger-in-process-ZASM-ZLINK bundle-index.html Cabinet Contributions-multiple-raw CPM-bundles CPM DOWNLOADS CPM-Operating-Manual-subset CPM synchronization error Customers distro distro.include ebay-text ERRATA.txt External for-upload fZ80-biz Hardware HELP-design HELP-syntax linux-emulator MBASIC.PDF MPM2-source MPM-documentation MPM-downloads-raw MPMII_2.1_RelNotes.pdf MPM-notes.txt Nevada_BASIC_Sep83.pdf Obso OBSO-bundles Other-CPM paths-not-followed Photos-5-nov-2025 PMATE-card PMATE-cheat-sheet.html README Release Release-documentation ReleaseNotes sample-RSP.asm SQUEEZE source SuperCalc2.pdf todcnv.plm toddate.asm toddate.c WordMaster WordMaster-Manual-Fix It expects all of it's working files (overlays, help files, etc) on drive A: You can put the executable (WS.COM, etc) anywhere; it's currently on A:. The customization notes have move into a file called CUSTOM.DOC.
1
PMATE command cheat chart
Until I find a manual, this will have to do. an original Phoenix Pmate command
summary card as a correctly sized PDF.
Here is the PMATE cheat sheet command
list.
External sources
Nearly everything above was obtained from one of these retro/vintage
software repositories. If you have others let me know I'll add them.
Website contents, unless otherwise specified, © 2025 by
Tom Jennings. Permission is granted for personal use with no renumeration.
Corporations or any legal organization or their agents (employees or
consultants or other relationships) expressly prohibited from using any
material without written permission.