CrLZH

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
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 29: 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
  
 
== Sample files ==
 
== Sample files ==

Revision as of 14:09, 17 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 Squeeze and 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