CrLZH
(Category:CP/M) |
Dexvertbot (Talk | contribs) m (→Sample files) |
||
(12 intermediate revisions by 4 users not shown) | |||
Line 3: | Line 3: | ||
|subcat=Compression | |subcat=Compression | ||
|extensions={{ext|?y?}}, {{ext|yyy}} | |extensions={{ext|?y?}}, {{ext|yyy}} | ||
+ | |released=1989 | ||
}} | }} | ||
+ | '''CRLZH''' (or '''CrLZH''') is a single-file compression utility, and its associated file format, devised by Roger Warren and used on [[CP/M]]. The format is often referred to as just '''LZH''', but it's not to be confused with the format used for [[LHA|.lzh]] files. | ||
− | + | It came later than [[Squeeze]] and [[Crunch]] and generally achieved better compression than those formats. LZH files occurred standalone and as members in [[LBR]] archives. The underlying compression is based on that used by [[LHArc]]. | |
Similar to [[Squeeze]] and [[Crunch]], these files were signified in CP/M's 8.3 filename format by replacing the middle letter of the extension with Y (.?Y?), with the extension .YYY used for corner cases such as a blank extension. | Similar to [[Squeeze]] and [[Crunch]], these files were signified in CP/M's 8.3 filename format by replacing the middle letter of the extension with Y (.?Y?), with the extension .YYY used for corner cases such as a blank extension. | ||
+ | |||
+ | The compression schemes used by versions 1.x and 2.x are slightly different, but most decompression utilities support both. | ||
+ | |||
+ | == Format details == | ||
+ | The compression algorithm uses [[LZ77 with Huffman coding|LZ77+Huffman]], with [[adaptive Huffman coding]]. It is derived from the same source code as [[LHA]]'s "lh1" compression, and is presumably quite similar to it. Differences include: | ||
+ | * A 2K window instead of 4K | ||
+ | * A special "EOF" code | ||
+ | * In v2 format, offsets are encoded slightly differently. | ||
+ | |||
+ | == Identification == | ||
+ | Files begin with bytes {{magic|76 fd}}. | ||
+ | |||
+ | == Specifications == | ||
+ | |||
+ | * Some format information is in LZHREL.DOC shipped with [http://cpmarchives.classiccmp.org/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr CRLZH20.LBR] | ||
+ | ** An extracted copy is provided [[CrLZH/LZHREL.DOC|here]]. | ||
+ | * Note that the file header follows a similar/compatible structure to [[Crunch]]. | ||
== Tools == | == Tools == | ||
Line 13: | Line 32: | ||
* [[CFX]] (DOS/Unix) | * [[CFX]] (DOS/Unix) | ||
* [http://www.svgalib.org/rus/lbrate.html lbrate] by Russell Marks, c. 2001 (Unix, GPL2) | * [http://www.svgalib.org/rus/lbrate.html lbrate] by Russell Marks, c. 2001 (Unix, GPL2) | ||
+ | * {{Deark}} | ||
+ | * [[Unar]] | ||
* On CP/M (or emulators): | * On CP/M (or emulators): | ||
− | ** The original tools were those in the CRLZH distribution, e.g. [http:// | + | ** The original tools were those in the CRLZH distribution, e.g. [http://cpmarchives.classiccmp.org/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr CRLZH20.LBR] |
− | ** The later LT31 deals with extracting from all of [[Squeeze]], [[Crunch]], [[CrLZH]] and [[LBR]] formats. Widely available in CP/M archives, e.g. [http:// | + | ** The later LT31 deals with extracting from all of [[Squeeze]], [[Crunch]], [[CrLZH]] and [[LBR]] formats. Widely available in CP/M archives, e.g. [http://cpmarchives.classiccmp.org/cpm/mirrors/oak.oakland.edu/pub/cpm/arc-lbr/lt31.lbr LT31.LBR] |
+ | ** [http://www.retroarchive.org/cpm/cdrom/ENTERPRS/CPM/UTILS/F/LZH21SRC.LBR LZH21SRC.LBR] - Version 2.x LZH-CP/M source code - R. Warren - 1991-08-23 | ||
− | == | + | == Sample files == |
+ | Note that for files in LBR archives, you may have to tell your LBR utility not to decompress them (e.g. <code>lbrate -n</code>). | ||
− | * | + | * [http://cpmarchives.classiccmp.org/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh11.lbr crlzh11.lbr] → *.?y* |
− | ** | + | * [http://cpmarchives.classiccmp.org/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr crlzh20.lbr] → *.?y* |
− | * | + | * {{DexvertSamples|archive/crLZH}} |
+ | [[Category:File formats with too many extensions]] | ||
[[Category:CP/M]] | [[Category:CP/M]] |
Latest revision as of 04:18, 28 December 2023
CRLZH (or CrLZH) is a single-file compression utility, and its associated file format, devised by Roger Warren and used on CP/M. The format is often referred to as just LZH, but it's not to be confused with the format used for .lzh files.
It came later than Squeeze and Crunch and generally achieved better compression than those formats. LZH files occurred standalone and as members in LBR archives. The underlying compression is based on that used by LHArc.
Similar to Squeeze and Crunch, these files were signified in CP/M's 8.3 filename format by replacing the middle letter of the extension with Y (.?Y?), with the extension .YYY used for corner cases such as a blank extension.
The compression schemes used by versions 1.x and 2.x are slightly different, but most decompression utilities support both.
Contents |
[edit] Format details
The compression algorithm uses LZ77+Huffman, with adaptive Huffman coding. It is derived from the same source code as LHA's "lh1" compression, and is presumably quite similar to it. Differences include:
- A 2K window instead of 4K
- A special "EOF" code
- In v2 format, offsets are encoded slightly differently.
[edit] Identification
Files begin with bytes 76 fd
.
[edit] Specifications
- Some format information is in LZHREL.DOC shipped with CRLZH20.LBR
- An extracted copy is provided here.
- Note that the file header follows a similar/compatible structure to Crunch.
[edit] Tools
- CFX (DOS/Unix)
- lbrate by Russell Marks, c. 2001 (Unix, GPL2)
- Deark
- Unar
- On CP/M (or emulators):
- The original tools were those in the CRLZH distribution, e.g. CRLZH20.LBR
- The later LT31 deals with extracting from all of Squeeze, Crunch, CrLZH and LBR formats. Widely available in CP/M archives, e.g. LT31.LBR
- LZH21SRC.LBR - Version 2.x LZH-CP/M source code - R. Warren - 1991-08-23
[edit] Sample files
Note that for files in LBR archives, you may have to tell your LBR utility not to decompress them (e.g. lbrate -n
).
- crlzh11.lbr → *.?y*
- crlzh20.lbr → *.?y*
- dexvert samples — archive/crLZH