Skip to content

ris2021/CPMUTILS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

CPMUTILS

Misc CP/M formats processing programs

CP/M File Utilities

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

unlbr

LBR (CP/M Library)
Extracts, lists, and validates .LBR archives. Handles LU/NULU-compatible catalogs, 128-byte sector addressing, and legacy CRC/date fields.

unpma

PMA / PMarc
Parses .PMA archives with support for Level 0–3 headers, extended metadata, and the -pm0-, -pm1-, -pm2- compression methods.

unarc

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

About

Misc CP/M formats processing programs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors