From Newsgroup: comp.os.cpm
Available from
https://github.com/johnsonjh/lzpack
It runs on 48K CP/M-80, CP/M-86, MS-DOS, ELKS, UNIX, and many other
platforms (inckuding modern macOS, Linux, Windows, or BSD systems).
Since there was no good open source compressor like UPX for CP/M-80,
I created this one. Algorithmically compatible with PopCom and can
decompress its files, but always gets better ratios when compressing
as it has optimized decompression stubs and better compression code.
It supports directly running on as well as creating files for both
8080 and Z80 systems. When run directly on CP/M-80 it fully supports
exact file sizes using the LRBC (Last Record Byte Count) offered by
CP/M-Plus / CP/M-3.0 (as well as on DOS-PLUS or CP/M-Plus 8086) which
can help squeeze some bytes not including the last records tail.
An "extra compression" mode is available when run on larger systems
(needs more than 160K, so won't work on CP/M) allowing for better
compression, while still being unpackable with the same stubs and
without any performance penalty.
Building all the binaries (CP/M-80, CP/M-86, ELKS, DOS, Windows, etc.)
from source code requires a lot of tools to be installed, so I provide pre-compiled binaries for all the supported non-UNIX systems.
I should also mention you can use it as a general archiver to compress
and decompress single files (just like squeeze, or gzip on modern
systems). There are probably better archivers that get better ratios
because they don't need to worry about fast transparent decompression
of executables. If this usage becomes popular somehow, I could add an
option that doesn't write the decompression stub out which would save
a few hundred bytes per file.
All source is fully available including the decompression stubs and
the cross-assembler I wrote (which is good enough to build the stubs)
so anyone interested can build a native binary for their platform
completely from sources without needing any 8080/Z80 cross-assembler
installed, just a C89 compiler.
I hope to add more documentation and release a version 1.0 soon.
Any feedback is more than welcome!
--
Jeffrey H. Johnson
johnsonjh.dev@gmail.com
--- Synchronet 3.22a-Linux NewsLink 1.2