CrLZH

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(Specifications)
(4 intermediate revisions by one user not shown)
Line 3: Line 3:
 
|subcat=Compression
 
|subcat=Compression
 
|extensions={{ext|?y?}}, {{ext|yyy}}
 
|extensions={{ext|?y?}}, {{ext|yyy}}
|released=Late 1980s
+
|released=1989
 
}}
 
}}
[[CrLZH]] (often referred to as just "LZH", but not to be confused with the format used for [[LHA|.lzh]] files) was a method of compressing single files used on [[CP/M]], devised by Roger Warren in the late 1980s. 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]].
+
'''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 ==
 
== Identification ==
 
Files begin with bytes {{magic|76 fd}}.
 
Files begin with bytes {{magic|76 fd}}.
 +
 +
== Specifications ==
 +
 +
* Some format information is in LZHREL.DOC shipped with [http://www.classiccmp.org/cpmarchives/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 19: Line 35:
 
** The original tools were those in the CRLZH distribution, e.g. [http://www.classiccmp.org/cpmarchives/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr CRLZH20.LBR]
 
** The original tools were those in the CRLZH distribution, e.g. [http://www.classiccmp.org/cpmarchives/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://www.classiccmp.org/cpmarchives/cpm/mirrors/oak.oakland.edu/pub/cpm/arc-lbr/lt31.lbr LT31.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://www.classiccmp.org/cpmarchives/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
  
== References ==
+
== 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>).
  
* Some format information is in LZHREL.DOC shipped with [http://www.classiccmp.org/cpmarchives/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr CRLZH20.LBR]
+
* [http://www.classiccmp.org/cpmarchives/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh11.lbr crlzh11.lbr] *.?y*
** An extracted copy is provided [[CrLZH/LZHREL.DOC|here]].
+
* [http://www.classiccmp.org/cpmarchives/cpm/mirrors/oak.oakland.edu/pub/cpm/squsq/crlzh20.lbr crlzh20.lbr] → *.?y*
** Note that the file header follows a similar/compatible structure to [[Squeeze]] and [[Crunch]].
+
  
 
[[Category:File formats with too many extensions]]
 
[[Category:File formats with too many extensions]]
 
[[Category:CP/M]]
 
[[Category:CP/M]]

Revision as of 19:33, 20 September 2020

File Format
Name CrLZH
Ontology
Extension(s) .?y?, .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 .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

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.

Identification

Files begin with bytes 76 fd.

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.

Tools

  • CFX (DOS/Unix)
  • lbrate by Russell Marks, c. 2001 (Unix, GPL2)
  • 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

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).

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox