ARC (compression format)
m (→Format details) |
|||
(26 intermediate revisions by 4 users not shown) | |||
Line 11: | Line 11: | ||
ARC was for a time (1985-89) the leading file archiving and file compression format in the [http://en.wikipedia.org/wiki/Bulletin_board_system BBS] world, replacing the formats used by earlier utilities which generally only did one of the two functions (either combining multiple files in one file for convenient download, or shortening the file length to take less download time and disk space). Combining the two functions in one utility simplified the process of preparing files for download and extracting them at the other end, leading to a rapid rise in popularity for the utility (also called ARC) and format both. | ARC was for a time (1985-89) the leading file archiving and file compression format in the [http://en.wikipedia.org/wiki/Bulletin_board_system BBS] world, replacing the formats used by earlier utilities which generally only did one of the two functions (either combining multiple files in one file for convenient download, or shortening the file length to take less download time and disk space). Combining the two functions in one utility simplified the process of preparing files for download and extracting them at the other end, leading to a rapid rise in popularity for the utility (also called ARC) and format both. | ||
− | However, the ARC format suffered an equally rapid decline in its popularity after the company that published the ARC utility (called System Enhancement Associates or SEA, run by Thom Henderson who was very active in FidoNet) brought a successful trademark and copyright suit against rival Phil Katz, whose PKARC and PKXARC utilities were compatible with the ARC file format. The lawsuit was widely regarded by the BBS community as being a "David vs. Goliath" case of a faceless corporation bullying a "little guy", though in fact both companies were small, home-based operations. Nevertheless, the fallout from the suit led to rapid adoption of the competing [[ZIP]] format, introduced by Katz in 1989, and ARC files are no longer commonly encountered. | + | However, the ARC format suffered an equally rapid decline in its popularity after the company that published the ARC utility (called System Enhancement Associates or SEA, run by Thom Henderson who was very active in FidoNet) brought a successful trademark and copyright suit against rival Phil Katz, whose [[PKARC]] and PKXARC utilities were compatible with the ARC file format. The lawsuit was widely regarded by the BBS community as being a "David vs. Goliath" case of a faceless corporation bullying a "little guy", though in fact both companies were small, home-based operations. Nevertheless, the fallout from the suit led to rapid adoption of the competing [[ZIP]] format, introduced by Katz in 1989, and ARC files are no longer commonly encountered. |
The fact that archives from an early period of BBSing are often in this format encourages bad puns referring to those who trawl such old archives as "Raiders of the lost ARC." | The fact that archives from an early period of BBSing are often in this format encourages bad puns referring to those who trawl such old archives as "Raiders of the lost ARC." | ||
Line 21: | Line 21: | ||
An ARC file consists of a sequence of zero or more archive members, followed by an end-of-archive marker: the bytes <code>0x1a 0x00</code>. It is common for ARC files to have padding or other data after the end-of-archive marker. | An ARC file consists of a sequence of zero or more archive members, followed by an end-of-archive marker: the bytes <code>0x1a 0x00</code>. It is common for ARC files to have padding or other data after the end-of-archive marker. | ||
− | Each member begins with a 0x1a byte, then a byte indicating the compression method used for that member file. | + | Each member begins with a <code>0x1a</code> byte, then a byte indicating the compression method used for that member file. (For files beginning with <code>0x1b</code>, see [[ArcMac]].) |
=== Compression methods === | === Compression methods === | ||
Line 33: | Line 33: | ||
|0 || End-of-archive marker || | |0 || End-of-archive marker || | ||
|- | |- | ||
− | |1 || Uncompressed || | + | |1 || Uncompressed || With old-style header. |
|- | |- | ||
− | |2 || Uncompressed || | + | |2 || Uncompressed || With new-style header. |
|- | |- | ||
|3 || Packed || [[RLE90]] | |3 || Packed || [[RLE90]] | ||
Line 41: | Line 41: | ||
|4 || Squeezed,<br>Packed+Squeezed || [[RLE90]] + [[Huffman coding|Huffman]]. See [[Squeeze#Compressed data section|Squeeze]] for more information. | |4 || Squeezed,<br>Packed+Squeezed || [[RLE90]] + [[Huffman coding|Huffman]]. See [[Squeeze#Compressed data section|Squeeze]] for more information. | ||
|- | |- | ||
− | |5 || crunched || Hashed [[LZW]] (old hash) | + | |5 || crunched || Hashed [[LZW]] (old hash). Derived from [[LZWCOM]]. Introduced in ARC v4.00. |
|- | |- | ||
− | |6 || crunched,<br>Packed+crunched || [[RLE90]] + | + | |6 || crunched,<br>Packed+crunched || [[RLE90]] + method 5. Similar to [[Crunch|CP/M Crunch]] v1.x format. Introduced in ARC v4.10. |
|- | |- | ||
|7 || crunched,<br>Packed+crunched || [[RLE90]] + hashed [[LZW]] (new hash). Source code comment says "inadvertent release of a developmental copy forces us to leave [method 7] in". | |7 || crunched,<br>Packed+crunched || [[RLE90]] + hashed [[LZW]] (new hash). Source code comment says "inadvertent release of a developmental copy forces us to leave [method 7] in". | ||
|- | |- | ||
− | |8 || Crunched,<br>Packed+Crunched || [[RLE90]] + [[LZW]]. | + | |8 || Crunched,<br>Packed+Crunched || [[RLE90]] + [[LZW]]. The LZW layer has a dynamic code size. There is a header byte giving the maximum LZW code size, but only 12 bits is generally supported. Introduced in ARC v5.00. This is probably the most common compression method. |
|- | |- | ||
− | |9 || Squashed,<br>Deviant || [[LZW]]. Used by PKARC/PKPAK. | + | |9 || Squashed,<br>Deviant || [[LZW]]. Used by [[PKARC/PKPAK]]. |
|- | |- | ||
− | |10 || Trimmed || Supported by ARC 7.x. | + | |10 || Trimmed || [[RLE90]] + {[[LZ77 with Huffman coding|LZH]] with [[adaptive Huffman coding]]}. Supported by ARC 7.x. |
|- | |- | ||
− | |10 || | + | |10 || Crushed ||rowspan="2"| [[PAK (ARC extension)|PAK]] extensions: Refer to [[PAK (ARC extension)#Compression methods]]. |
|- | |- | ||
− | |11 || Distilled | + | |11 || Distilled |
|- | |- | ||
− | |20-29 || || | + | |20-29 || || Used/reserved for informational items |
|- | |- | ||
− | |20 || Archive info | + | |20 || Archive info || |
|- | |- | ||
− | |21 || Extended file info | + | |21 || Extended file info || |
+ | |- | ||
+ | |22 || OS-specific info || | ||
+ | |- | ||
+ | |30-39 || || Used/reserved for "control" items | ||
|- | |- | ||
|30 || Subdir || Nested ARC-like format. Created by the "z" option introduced in ARC v6. | |30 || Subdir || Nested ARC-like format. Created by the "z" option introduced in ARC v6. | ||
Line 77: | Line 81: | ||
The ARC v7 software is named "ARC Plus" or "ARC+Plus". By default, it uses Trimmed compression, and the files it creates begin with an archive info item ("compression method" 20). Some format identification tools identify files beginning this way as "ARC+" format. | The ARC v7 software is named "ARC Plus" or "ARC+Plus". By default, it uses Trimmed compression, and the files it creates begin with an archive info item ("compression method" 20). Some format identification tools identify files beginning this way as "ARC+" format. | ||
− | ARC v6.02 | + | ARC v6.02 understands archive info items, though it's unclear if it ever creates them. It does not support Trimmed decompression. |
=== PK-style comments === | === PK-style comments === | ||
− | The PKARC/PKPAK software supports comments, | + | The PKARC/PKPAK software supports comments, using a custom format extension that appears after the end-of-archive marker. Refer to [[PKARC/PKPAK#PK-style comments]]. |
− | + | ||
− | + | ||
=== PAK extended records === | === PAK extended records === | ||
This is another kind of data that can appear after the end-of-archive marker. Refer to [[PAK (ARC extension)]]. | This is another kind of data that can appear after the end-of-archive marker. Refer to [[PAK (ARC extension)]]. | ||
+ | |||
+ | == Self-extracting archives == | ||
+ | A number of different ARC self-extracting archive formats exist. This section mainly covers those made by the official software. Others include: | ||
+ | * [[PKARC/PKPAK#Self-extracting archives]] | ||
+ | * [[PAK (ARC extension)#Self-extracting archives]] | ||
+ | |||
+ | Starting with v6.00, self-extracting archives can be made by the included MKSARC.EXE utility, which converts an ARC file to a self-extracting archive. | ||
+ | |||
+ | For the 6.x series, the executable format is always [[MS-DOS EXE|DOS EXE]]. There are three known self-extractor versions: | ||
+ | * v6.00 and 6.01 (MKSARC v1.00) - Files made by these two versions are identical. | ||
+ | * v6.02 [variant 1] (MKSARC v1.01) | ||
+ | * v6.02 [variant 2] (MKSARC v1.01) | ||
+ | |||
+ | Technical note: The embedded ARC file was surely intended to start at the start of the ''overlay'' segment (refer to [[MS-DOS EXE#Special file positions]]), but for v6.02 (both variants), due to a bug, it actually starts 480 bytes before the overlay segment. | ||
+ | |||
+ | Versions 7.10 and 7.12 each offer three self-extractor formats, all in some [[EXE]] format: DOS-only (<code>/R</code> option), OS/2-only (<code>/P</code>), and DOS-OS/2 hybrid (<code>/F</code>). | ||
+ | |||
+ | A v7.x self-extracting archive is really just a copy of one of the XARC.EXE files, with a small patch that puts it into self-extracting mode (well, two small patches for hybrid files), and with the ARC file appended. A single "flag byte" in the middle of the patch seems to be the important one -- it is 0x00 in XARC.EXE, and 0x01 in self-extracting archives. For example, for v7.12 DOS-only (both known variants), the flag byte is at offset 8527. | ||
== Identifiers == | == Identifiers == | ||
Line 93: | Line 113: | ||
== See also == | == See also == | ||
+ | * [[PKARC/PKPAK]] | ||
* [[PAK (ARC extension)]] | * [[PAK (ARC extension)]] | ||
* [[Spark]] | * [[Spark]] | ||
+ | * [[ArcMac]] | ||
+ | * [[BTSPK]] | ||
* [[RLE90]] | * [[RLE90]] | ||
* [[AXE (executable compression)]] - Another SEA product | * [[AXE (executable compression)]] - Another SEA product | ||
+ | |||
+ | Other formats called ARC (or something similar) are listed at [[ARC]]. | ||
== Specifications == | == Specifications == | ||
Line 103: | Line 128: | ||
* [http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/The.MacShrinkIt.Project/ARCHIVES.TXT Archive format info, including ARC] | * [http://apple2.org.za/gswv/a2zine/GS.WorldView/Resources/The.MacShrinkIt.Project/ARCHIVES.TXT Archive format info, including ARC] | ||
* {{CdTextfiles|simtel/simtel20/MSDOS/ARCHIVRS/ARC_FILE.INF|ARC-FILE.INF}} | * {{CdTextfiles|simtel/simtel20/MSDOS/ARCHIVRS/ARC_FILE.INF|ARC-FILE.INF}} | ||
+ | * {{CdTextfiles|currentsw199407/compress/tm0402.zip|SEA Technical Memorandum #0402}}: ARC 6.02 Extended Data | ||
− | == | + | == Software == |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
* [http://www.svgalib.org/rus/nomarch.html nomarch] by Russell Marks, c. 2001 (Unix/GPL2) -- extract only. | * [http://www.svgalib.org/rus/nomarch.html nomarch] by Russell Marks, c. 2001 (Unix/GPL2) -- extract only. | ||
** Packaged for Debian-based Linux distributions: <tt>apt-get install nomarch</tt> | ** Packaged for Debian-based Linux distributions: <tt>apt-get install nomarch</tt> | ||
− | * [https://sourceforge.net/projects/arc/ ARC | + | * [https://sourceforge.net/projects/arc/ ARC (for Unix)] - Portable software based on ARC source code |
− | * ARC - DOS binaries | + | * ARC - DOS binaries, etc. |
− | ** {{CdTextfiles| | + | ** v3.10 (1985-05-01): See [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=699 old-dos.ru] |
+ | ** v4.11 (1985-07-02): [https://archive.org/details/science-libraryb Libris Britannia 4] → science library(b)/COMMUNIC/0132.ZIP → ARC.EXE | ||
+ | ** v4.20 (1985-07-16): {{CdTextfiles|pcsig12/CLA/DISK0420.ZIP|DISK0420.ZIP}} → ARC.EXE | ||
+ | ** v4.30 (1985-08-22): {{CdTextfiles|pcblueii/PCBLUE/VOL148.ZIP|VOL148.ZIP}} → ARC.EXE | ||
+ | ** v4.50 (1985-11-18): {{CdTextfiles|californiacollect/his033/sideway.zip|sideway.zip}} → SIDEWRIT.ARC → ARC.EXE | ||
+ | ** v4.52 (1985-12-04): See [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=699 old-dos.ru] | ||
+ | ** v5.00 (1986-01-21): {{CdTextfiles|pcsig12/CLA/DISK1000.ZIP|DISK1000.ZIP}} → ARC.EXE | ||
+ | ** v5.10 (1986-01-31): {{CdTextfiles|cleanhpvac/TRAX.ZIP|TRAX.ZIP}} → ARC51.COM | ||
** {{CdTextfiles|originalsw/25/arc512.com|v5.12}} (1986-02-05) (For self-extraction to work, must be renamed to "ARC51.COM".) | ** {{CdTextfiles|originalsw/25/arc512.com|v5.12}} (1986-02-05) (For self-extraction to work, must be renamed to "ARC51.COM".) | ||
** {{CdTextfiles|originalsw/25/arc520.com|v5.20}} (1986-10-24) | ** {{CdTextfiles|originalsw/25/arc520.com|v5.20}} (1986-10-24) | ||
− | ** {{CdTextfiles|pcmedic/utils/compress/arc601.exe|v6.01}} (Dated "January of 1989", but timestamps suggest 1989-02-23 | + | ** "v5.21" (1987-04-22): [https://archive.org/details/HAMCALL_CD-ROM_Buckmaster_April_1991 HAMCALL CD ROM April 1991] → HAMCALL CD-ROM (Buckmaster)(April 1991).{BIN,CUE} → ziparc/arc/arc.exe (possibly an unofficial build) |
− | ** {{CdTextfiles|hof91/arc/arc602.exe|v6.02}} (Dated "January of 1989", but timestamps suggest 1989-03-14 | + | ** "v5.21": {{CdTextfiles|hobbesos29503/16BIT/ARCHIVER/ARC521_2.ZIP|ARC521_2.ZIP}} - Binaries for DOS and OS/2 built by K. U. Rommel, from source code via H. Chu. |
− | ** {{CdTextfiles|rbbsv3n1/atnu/arc602.exe|v6.02}} - Same ARC.EXE as above, but has updated documentation (1989-04-21) and other differences. | + | ** v6.00 (Dated "January of 1989", but timestamps suggest 1989-02-10): [https://archive.org/details/PCMCDS Discos PCManía] → PCMania CD15.nrg → sharewre/zip/arc600.exe |
− | * {{CdTextfiles|pcmedic/utils/compress/arc520s.zip|ARC v5.20 source code}} | + | ** {{CdTextfiles|pcmedic/utils/compress/arc601.exe|v6.01}} (Dated "January of 1989", but timestamps suggest 1989-02-23) |
− | * XARC - A minimal ARC extractor from SEA (DOS binaries) | + | ** {{CdTextfiles|hof91/arc/arc602.exe|v6.02 [variant 1]}} (Dated "January of 1989", but timestamps suggest 1989-03-14) |
+ | ** {{CdTextfiles|rbbsv3n1/atnu/arc602.exe|v6.02 [variant 2]}} - Same ARC.EXE as above, but has updated documentation (1989-04-21) and other differences. | ||
+ | ** ARC+Plus v7.10 (1990-10-04): [https://archive.org/details/floppycollection_NumberedFloppies] → 370.img → ARC71.ZIP | ||
+ | ** {{CdTextfiles|svplatinum/CDR31/ARC712.ZIP|ARC+Plus v7.12}} (~1991-01-24) | ||
+ | ** [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=699 Various versions, at old-dos.ru] | ||
+ | * ARC - source code | ||
+ | ** {{CdTextfiles|pcmedic/utils/compress/arc520s.zip|ARC v5.20 source code}} | ||
+ | ** [https://www.funet.fi/index/msdos/packing/archiver/arc521s.zip ARC v5.21 source code] | ||
+ | *** {{CdTextfiles|hobbesos29503/16BIT/ARCHIVER/ARC521_2.ZIP|ARC521_2.ZIP}} | ||
+ | * XARC - A minimal ARC extractor from SEA (DOS binaries, etc.) | ||
** {{CdTextfiles|carousel/013C/XARC.ZIP|v4.31}} (1985-10-10) | ** {{CdTextfiles|carousel/013C/XARC.ZIP|v4.31}} (1985-10-10) | ||
** {{CdTextfiles|microhaus/mhblackbox3/ARCHIVER/XARC500.ZIP|v5.00}} (1986-01-23) | ** {{CdTextfiles|microhaus/mhblackbox3/ARCHIVER/XARC500.ZIP|v5.00}} (1986-01-23) | ||
− | ** {{CdTextfiles|microhaus/mhblackbox3/ARCHIVER/XARC71.ZIP|v7.1}} | + | ** ARCv7-era version (documentation strangely calls it "XARC V1.0"), DOS-only (1990-07-15): {{CdTextfiles|swextrav1993/disk3/archive/xarcplus.zip|xarcplus.zip}} |
− | ** {{CdTextfiles|pier/pier01/001a/xarc712.zip|v7.12}} | + | ** Unknown ARCv7-era version, OS/2-only: [https://archive.org/details/os2sharewarebbs OS/2 Shareware BBS Full Collection] → 09-Archive.zip → XARC_OS2.EXE |
− | + | ** Unknown ARCv7-era version, DOS & OS/2: {{CdTextfiles|wildcatgold/compress/qarc.zip|qarc.zip}} → XARC.EXE | |
− | ** {{CdTextfiles| | + | ** v7.10 [DOS only] (1990-10-04): [https://archive.org/details/pegasus-win-os-2 Pegasus Win & OS/2 Edition] → SUPPORT/PACKER/XARCPLUS.ZIP |
− | ** {{CdTextfiles| | + | ** {{CdTextfiles|microhaus/mhblackbox3/ARCHIVER/XARC71.ZIP|v7.10 [DOS & OS/2]}} |
− | * PAK - See [[PAK (ARC extension)#Software]]. | + | ** v7.12 [DOS only, variant 1]: {{CdTextfiles|svplatinum/CDR31/ARC712.ZIP|ARC712.ZIP}} → ... → ARCDOS.ARC → XARC.EXE |
− | * {{CdTextfiles| | + | ** {{CdTextfiles|pier/pier01/001a/xarc712.zip|v7.12 [DOS only, variant 2]}} |
+ | ** {{CdTextfiles|swsii/072/XARC.ZIP|v7.12 [DOS & OS/2]}} | ||
+ | ** Included with some versions of ARC. | ||
+ | * ARCE (or ARC-E), by Wayne Chin and Vernon D. Buerg - An optimized ARC extractor for DOS | ||
+ | ** {{CdTextfiles|simtel/simtel9510/disk2/DISC2/ARCHIVER/ARCE41A.ZIP|ARCE v4.1a}} (1992-04-12) | ||
+ | ** Included with some versions of ARC. | ||
+ | * PKARC/PKPAK (DOS binaries) - See [[PKARC/PKPAK#Software]]. | ||
+ | * PAK (NoGate Consulting) - See [[PAK (ARC extension)#Software]]. | ||
+ | * {{Deark}} | ||
+ | |||
+ | == Sample files == | ||
+ | * {{CdTextfilesURL|powerprogramming/PROGTOOL/}} ... | ||
+ | * [https://www.dan.info/sampledata/CHRISTIE.ARC CHRISTIE.ARC] | ||
+ | * [https://www.dan.info/sampledata/POLIPREF.ARC POLIPREF.ARC] | ||
+ | * {{CdTextfilesURL|pcblue/}} | ||
+ | * {{CdTextfiles|jcs/jcsma2v19/mktsales/tfo.zip|tfo.zip}} → *.ARC (v7) | ||
+ | * {{CdTextfiles|smsharew/WORD/JORJ41-1.ZIP|JORJ41-1.ZIP}} → *.ARC (v7) | ||
+ | * {{DexvertSamples|archive/arc}} | ||
== References == | == References == | ||
* [[Wikipedia:ARC (file format)|ARC (file format): Wikipedia]] | * [[Wikipedia:ARC (file format)|ARC (file format): Wikipedia]] | ||
* [http://www.esva.net/~thom/arclicense.html Original ARC license] | * [http://www.esva.net/~thom/arclicense.html Original ARC license] | ||
− | |||
− | |||
* [http://www.textfiles.com/programming/FORMATS/arc-lbr.pro ARC vs LBR comparison (1985)] | * [http://www.textfiles.com/programming/FORMATS/arc-lbr.pro ARC vs LBR comparison (1985)] | ||
+ | |||
+ | == Further reading == | ||
+ | * [http://textfiles.com/computers/sea.txt SEA vs. PKWARE suit commentary] <!-- (which worries that tech people will end up spending more time in court than working on programs in the future, and is quaintly old-fashioned in that it refers to a legal case that was settled for $62,500, not the billions that are involved in modern-day tech legal cases) --> | ||
+ | * [http://ascii.textfiles.com/archives/2398 ARC/ZIP Perspective by Dean W. Cooper] | ||
+ | * [https://www.youtube.com/watch?v=_zvFeHtcxuA BBS Documentary Part 8: Compression] |
Latest revision as of 16:12, 24 November 2024
ARC is a compressed archive format, mostly used in MS/PC-DOS, though a CP/M version also existed. It supports a number of different compression schemes, the most common of which are based on LZW.
Contents |
[edit] Discussion
ARC was for a time (1985-89) the leading file archiving and file compression format in the BBS world, replacing the formats used by earlier utilities which generally only did one of the two functions (either combining multiple files in one file for convenient download, or shortening the file length to take less download time and disk space). Combining the two functions in one utility simplified the process of preparing files for download and extracting them at the other end, leading to a rapid rise in popularity for the utility (also called ARC) and format both.
However, the ARC format suffered an equally rapid decline in its popularity after the company that published the ARC utility (called System Enhancement Associates or SEA, run by Thom Henderson who was very active in FidoNet) brought a successful trademark and copyright suit against rival Phil Katz, whose PKARC and PKXARC utilities were compatible with the ARC file format. The lawsuit was widely regarded by the BBS community as being a "David vs. Goliath" case of a faceless corporation bullying a "little guy", though in fact both companies were small, home-based operations. Nevertheless, the fallout from the suit led to rapid adoption of the competing ZIP format, introduced by Katz in 1989, and ARC files are no longer commonly encountered.
The fact that archives from an early period of BBSing are often in this format encourages bad puns referring to those who trawl such old archives as "Raiders of the lost ARC."
[edit] Disambiguation
There are, unfortunately, also several other incompatible file formats that have been used over the years with an "ARC" designation or file extension, so it's possible that a data set that is purportedly of type "ARC" is not actually of this format. Others include the FreeArc format and the Internet Archive ARC format, as well as a Commodore ARC that's similar in concept but not compatible to any of the other ARCs.
[edit] Format details
An ARC file consists of a sequence of zero or more archive members, followed by an end-of-archive marker: the bytes 0x1a 0x00
. It is common for ARC files to have padding or other data after the end-of-archive marker.
Each member begins with a 0x1a
byte, then a byte indicating the compression method used for that member file. (For files beginning with 0x1b
, see ArcMac.)
[edit] Compression methods
The compression method byte identifies a member's compression method, and/or other information about the type of member. The usual compression methods are in the range 1 through 9.
Unfortunately, there are several different compression methods named "crunched" or "Crunched".
ID | Name(s) | Description and remarks |
---|---|---|
0 | End-of-archive marker | |
1 | Uncompressed | With old-style header. |
2 | Uncompressed | With new-style header. |
3 | Packed | RLE90 |
4 | Squeezed, Packed+Squeezed |
RLE90 + Huffman. See Squeeze for more information. |
5 | crunched | Hashed LZW (old hash). Derived from LZWCOM. Introduced in ARC v4.00. |
6 | crunched, Packed+crunched |
RLE90 + method 5. Similar to CP/M Crunch v1.x format. Introduced in ARC v4.10. |
7 | crunched, Packed+crunched |
RLE90 + hashed LZW (new hash). Source code comment says "inadvertent release of a developmental copy forces us to leave [method 7] in". |
8 | Crunched, Packed+Crunched |
RLE90 + LZW. The LZW layer has a dynamic code size. There is a header byte giving the maximum LZW code size, but only 12 bits is generally supported. Introduced in ARC v5.00. This is probably the most common compression method. |
9 | Squashed, Deviant |
LZW. Used by PKARC/PKPAK. |
10 | Trimmed | RLE90 + {LZH with adaptive Huffman coding}. Supported by ARC 7.x. |
10 | Crushed | PAK extensions: Refer to PAK (ARC extension)#Compression methods. |
11 | Distilled | |
20-29 | Used/reserved for informational items | |
20 | Archive info | |
21 | Extended file info | |
22 | OS-specific info | |
30-39 | Used/reserved for "control" items | |
30 | Subdir | Nested ARC-like format. Created by the "z" option introduced in ARC v6. |
31 | End-of-subdir marker | |
72 | No known use in ARC, but see Hyper archive. | |
83 | No known use in ARC, but see Hyper archive. | |
≥128 | Refer to Spark. |
[edit] ARC Plus
The ARC v7 software is named "ARC Plus" or "ARC+Plus". By default, it uses Trimmed compression, and the files it creates begin with an archive info item ("compression method" 20). Some format identification tools identify files beginning this way as "ARC+" format.
ARC v6.02 understands archive info items, though it's unclear if it ever creates them. It does not support Trimmed decompression.
[edit] PK-style comments
The PKARC/PKPAK software supports comments, using a custom format extension that appears after the end-of-archive marker. Refer to PKARC/PKPAK#PK-style comments.
[edit] PAK extended records
This is another kind of data that can appear after the end-of-archive marker. Refer to PAK (ARC extension).
[edit] Self-extracting archives
A number of different ARC self-extracting archive formats exist. This section mainly covers those made by the official software. Others include:
Starting with v6.00, self-extracting archives can be made by the included MKSARC.EXE utility, which converts an ARC file to a self-extracting archive.
For the 6.x series, the executable format is always DOS EXE. There are three known self-extractor versions:
- v6.00 and 6.01 (MKSARC v1.00) - Files made by these two versions are identical.
- v6.02 [variant 1] (MKSARC v1.01)
- v6.02 [variant 2] (MKSARC v1.01)
Technical note: The embedded ARC file was surely intended to start at the start of the overlay segment (refer to MS-DOS EXE#Special file positions), but for v6.02 (both variants), due to a bug, it actually starts 480 bytes before the overlay segment.
Versions 7.10 and 7.12 each offer three self-extractor formats, all in some EXE format: DOS-only (/R
option), OS/2-only (/P
), and DOS-OS/2 hybrid (/F
).
A v7.x self-extracting archive is really just a copy of one of the XARC.EXE files, with a small patch that puts it into self-extracting mode (well, two small patches for hybrid files), and with the ARC file appended. A single "flag byte" in the middle of the patch seems to be the important one -- it is 0x00 in XARC.EXE, and 0x01 in self-extracting archives. For example, for v7.12 DOS-only (both known variants), the flag byte is at offset 8527.
[edit] Identifiers
- File extension: .ARC (or conventionally .ARK on CP/M)
- MIME type (Internet media type): Has no specific registered type; generic binary application/octet-stream is generally used, or perhaps unregistered custom types with an x- prefix
- Uniform Type Identifier (Apple): public.archive.arc
[edit] See also
- PKARC/PKPAK
- PAK (ARC extension)
- Spark
- ArcMac
- BTSPK
- RLE90
- AXE (executable compression) - Another SEA product
Other formats called ARC (or something similar) are listed at ARC.
[edit] Specifications
- The ARC Archive File Format, from Corion.net and FileFormat.Info.
- ARC file header format (among other archive types)
- Archive format info, including ARC
- ARC-FILE.INF
- SEA Technical Memorandum #0402: ARC 6.02 Extended Data
[edit] Software
- nomarch by Russell Marks, c. 2001 (Unix/GPL2) -- extract only.
- Packaged for Debian-based Linux distributions: apt-get install nomarch
- ARC (for Unix) - Portable software based on ARC source code
- ARC - DOS binaries, etc.
- v3.10 (1985-05-01): See old-dos.ru
- v4.11 (1985-07-02): Libris Britannia 4 → science library(b)/COMMUNIC/0132.ZIP → ARC.EXE
- v4.20 (1985-07-16): DISK0420.ZIP → ARC.EXE
- v4.30 (1985-08-22): VOL148.ZIP → ARC.EXE
- v4.50 (1985-11-18): sideway.zip → SIDEWRIT.ARC → ARC.EXE
- v4.52 (1985-12-04): See old-dos.ru
- v5.00 (1986-01-21): DISK1000.ZIP → ARC.EXE
- v5.10 (1986-01-31): TRAX.ZIP → ARC51.COM
- v5.12 (1986-02-05) (For self-extraction to work, must be renamed to "ARC51.COM".)
- v5.20 (1986-10-24)
- "v5.21" (1987-04-22): HAMCALL CD ROM April 1991 → HAMCALL CD-ROM (Buckmaster)(April 1991).{BIN,CUE} → ziparc/arc/arc.exe (possibly an unofficial build)
- "v5.21": ARC521_2.ZIP - Binaries for DOS and OS/2 built by K. U. Rommel, from source code via H. Chu.
- v6.00 (Dated "January of 1989", but timestamps suggest 1989-02-10): Discos PCManía → PCMania CD15.nrg → sharewre/zip/arc600.exe
- v6.01 (Dated "January of 1989", but timestamps suggest 1989-02-23)
- v6.02 [variant 1] (Dated "January of 1989", but timestamps suggest 1989-03-14)
- v6.02 [variant 2] - Same ARC.EXE as above, but has updated documentation (1989-04-21) and other differences.
- ARC+Plus v7.10 (1990-10-04): [1] → 370.img → ARC71.ZIP
- ARC+Plus v7.12 (~1991-01-24)
- Various versions, at old-dos.ru
- ARC - source code
- XARC - A minimal ARC extractor from SEA (DOS binaries, etc.)
- v4.31 (1985-10-10)
- v5.00 (1986-01-23)
- ARCv7-era version (documentation strangely calls it "XARC V1.0"), DOS-only (1990-07-15): xarcplus.zip
- Unknown ARCv7-era version, OS/2-only: OS/2 Shareware BBS Full Collection → 09-Archive.zip → XARC_OS2.EXE
- Unknown ARCv7-era version, DOS & OS/2: qarc.zip → XARC.EXE
- v7.10 [DOS only] (1990-10-04): Pegasus Win & OS/2 Edition → SUPPORT/PACKER/XARCPLUS.ZIP
- v7.10 [DOS & OS/2]
- v7.12 [DOS only, variant 1]: ARC712.ZIP → ... → ARCDOS.ARC → XARC.EXE
- v7.12 [DOS only, variant 2]
- v7.12 [DOS & OS/2]
- Included with some versions of ARC.
- ARCE (or ARC-E), by Wayne Chin and Vernon D. Buerg - An optimized ARC extractor for DOS
- ARCE v4.1a (1992-04-12)
- Included with some versions of ARC.
- PKARC/PKPAK (DOS binaries) - See PKARC/PKPAK#Software.
- PAK (NoGate Consulting) - See PAK (ARC extension)#Software.
- Deark
[edit] Sample files
- http://cd.textfiles.com/powerprogramming/PROGTOOL/ ...
- CHRISTIE.ARC
- POLIPREF.ARC
- http://cd.textfiles.com/pcblue/
- tfo.zip → *.ARC (v7)
- JORJ41-1.ZIP → *.ARC (v7)
- dexvert samples — archive/arc