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.
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.



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.