zoo is a compression program and format developed by Rahul Dhesi in the mid 1980s. The format is based on the LZW compression algorithm and compressed files are identified by the .zoo file extension. It is no longer widely used. Program source code was originally published on the comp.sources.misc Usenet newsgroup, and was compatible with a variety of Unix-like operating systems. Binaries were also published for the MS-DOS user community. A small companion program was also developed, entitled booz, that provides only decompression functionality.
The .ZOO file format was mostly popular with Digital (now Hewlett Packard) VAX computers running the OpenVMS operating system, and for a time with the Commodore Amiga community.
Technical Specification
A .ZOO archive begins with a 34-byte header field, as follows
Decimal
Offset
Hex
Offset
Size
in Bytes
Description
000-019
000-013
20
Archive header text, padded with nulls, terminated by ^Z
020-023
014-017
4
Hex string DCA7C4FD
024-027
018-01B
4
Offset of first file in archive
028-031
01C-01F
4
0xFFFFFFFF - Offset of first file in archive
032
020
1
Minimum version of ZOO needed to extract files from archive (major part)
033
021
1
Minimum version of ZOO needed to extract files from archive (minor part)
Newer ZOO files, from version 2.00, can contain an extended archive header field, beyond the original 34 bytes. The existence of this extended archive header can be detected by looking at the offset of the first file in the archive.
Decimal
Offset
Hex
Offset
Size
in Bytes
Description
034
022
1
Archive header type; 1 for now
035-038
023-026
4
Offset of archive comment
039-040
027-028
2
Size of archive comment
041
029
1
Generation limit, for handling multiple file generations
Each stored file has its own header, which looks like this
Decimal
Offset
Hex
Offset
Size
in Bytes
Description
000-003
000-003
4
Hex string DCA7C4FD
004
004
1
Type of directory entry: 0 - Old header format; 1 - Extended header format