CrLZH
(Reordered sections) |
Dexvertbot (Talk | contribs) m (→Sample files) |
||
(7 intermediate revisions by 3 users not shown) | |||
Line 11: | Line 11: | ||
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 different, but most decompression utilities support both. | + | 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 == | == Identification == | ||
Line 18: | Line 24: | ||
== Specifications == | == Specifications == | ||
− | * Some format information is in LZHREL.DOC shipped with [http:// | + | * 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]]. | ** An extracted copy is provided [[CrLZH/LZHREL.DOC|here]]. | ||
− | * Note that the file header follows a similar/compatible structure to | + | * Note that the file header follows a similar/compatible structure to [[Crunch]]. |
== Tools == | == Tools == | ||
Line 26: | 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: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