Misc CP/M formats processing programs
A collection of lightweight, console-based tools for reading, listing, and extracting legacy archive formats from the CP/M era. Designed for retrocomputing enthusiasts, data archaeologists, and developers working with historical software collections.
π A Brief Note on CP/M
CP/M (Control Program for Microcomputers) was the dominant operating system for 8-bit microcomputers in the late 1970s and early 1980s. Created by Gary Kildall and released by Digital Research, it introduced concepts that later shaped MS-DOS and early Windows:
- 8.3 filename convention
- 128-byte logical sectors and fixed-size directory records
- Flat, drive-centric file system (A:, B:, etc.)
- Standardized BIOS/BDOS/CCP architecture enabling hardware portability
- Widespread use via BBS, floppy disks, and early modem networks
Though superseded by 16-bit systems, CP/M archives remain a vital part of software preservation. This repository provides modern, reliable tools to access those archives without relying on emulators or obsolete binaries.
π¦ Repository Overview
This project contains three independent console utilities, each targeting a historically significant CP/M/DOS archive format. All tools are:
- Pure C (C99/C11 compliant, GCC-optimized)
- Zero external dependencies
- Designed for CLI usage and Far Manager plugin integration
- Shipped with a concise technical specification of their respective formats
LBR (CP/M Library)
Extracts, lists, and validates .LBR archives. Handles LU/NULU-compatible catalogs, 128-byte sector addressing, and legacy CRC/date fields.
PMA / PMarc
Parses .PMA archives with support for Level 0β3 headers, extended metadata, and the -pm0-, -pm1-, -pm2- compression methods.
ARC (SEA ARC)
Reads classic .ARC files (methods 1β9), including RLE90, Squeeze, Crunch, and dynamic LZW variants. Handles legacy 25/29-byte headers and CRC validation.
π Integration with Far Manager
These tools are intentionally built as console executables rather than GUI applications. They are designed to be called from Far Manager plugin Multiarc.
π§± Technical Details & Design Philosophy
- Pure C, GCC-friendly: Compiles cleanly with
gcc -O2 -std=c11 -Wall -Wextra. No C++ dependencies, no runtime libraries beyond libc.
π Documentation & Format Specifications
Each format has a dedicated technical reference.
These documents distinguish between officially specified behavior, reverse-engineered consensus, and historical ambiguities. They are intended for both end-users and developers writing compatible parsers.
π€ Contributing
Contributions are welcome, especially in:
- Additional format edge-case tests
- Documentation clarifications or historical references
For programmers: all code must remain dependency-free C and follow the existing CLI contract.
Please don't hesitate to contact author via mail@criss.fun.
π License
This project is released under the MIT License. See LICENSE for details.
Historical format descriptions reference public-domain specifications and open-source decoder research. All third-party attributions are documented in respective files.
π Acknowledgments
- Gary Kildall & Digital Research for CP/M
- SEA (System Enhancement Associates) & Philip G. Katz for early archive standards
- John Elliott, Martin Murray, and the retrocomputing community for preserving documentation and reference decoders
- Far Group for maintaining a flexible, scriptable file manager ideal for legacy tool integration