ARI (compressed archive)
(→File structure) |
(CRC info) |
||
(One intermediate revision by one user not shown) | |||
Line 3: | Line 3: | ||
|subcat=Archiving | |subcat=Archiving | ||
|extensions={{ext|ari}} | |extensions={{ext|ari}} | ||
− | |released= | + | |released=≤1993 |
}} | }} | ||
'''ARI''' is a compressed archive utility for DOS, and associated file format, developed by RAO Inc. It was distributed as freeware, and there was a registered version with more features. | '''ARI''' is a compressed archive utility for DOS, and associated file format, developed by RAO Inc. It was distributed as freeware, and there was a registered version with more features. | ||
− | == File structure == | + | == Format details == |
− | This information pertains to ARI and [[ERI (compressed archive)|ERI]], and is based on reverse engineering. It may be incorrect, and is likely incomplete. The software has many features whose effect on the format has not been tested. | + | === File structure === |
+ | This information (written for the fileformats.archiveteam.org wiki) pertains to ARI and [[ERI (compressed archive)|ERI]], and is based on reverse engineering. It may be incorrect, and is likely incomplete. The software has many features whose effect on the format has not been tested. | ||
An ARI or ERI file is a sequence of "member file" segments, each with the following structure: | An ARI or ERI file is a sequence of "member file" segments, each with the following structure: | ||
Line 31: | Line 32: | ||
| 4 || member_size || Total size of this member (header + cdata) | | 4 || member_size || Total size of this member (header + cdata) | ||
|- | |- | ||
− | | 4 || || | + | | 4 || || "CRC-32" (derived from the uncompressed file data) |
|- | |- | ||
| member_size−(path_len+28) || cdata || Compressed file data | | member_size−(path_len+28) || cdata || Compressed file data | ||
|} | |} | ||
+ | |||
+ | === CRC algorithm === | ||
+ | Each member file has a "CRC-32" field (as named by the software's "l" command, though it is only a ''CRC'' in the loosest sense of the term). The algorithm and file format are the same for ARI and ERI, but their "l" commands display it differently. Assuming the byte order in the file is 0-1-2-3, ERI displays 3-2-1-0, while ARI displays 1-0-3-2. | ||
+ | |||
+ | Think of it as four separate 1-byte checksums: ck[0...3]. As each input byte is processed, two of the "ck" bytes are updated: one using an "ADD" function, and one using an "XOR" function. | ||
+ | |||
+ | The "ADD" function: <code>ck[n] := (ck[n] + source_byte) mod 256</code> | ||
+ | |||
+ | The "XOR" function: <code>ck[n] := ck[n] XOR ((source_byte + 1) mod 256)</code> | ||
+ | |||
+ | The first byte of the file updates ck[0] with ADD, and ck[1] with XOR. The second byte updates ck[1] (ADD) and ck[2] (XOR). Then 2-3 for the third byte, then 3-0, then back to 0-1, repeating with a period of 4 bytes. | ||
== Related formats == | == Related formats == | ||
Line 40: | Line 52: | ||
== Software == | == Software == | ||
− | + | * {{CdTextfiles|pdos9606/ARCHIVER/TOOLS/ARI112.ZIP|ARI 1.12}} (seems very buggy) | |
− | * {{CdTextfiles|pdos9606/ARCHIVER/TOOLS/ARI112.ZIP|ARI 1.12}} ( | + | * ARI 1.13u: [https://archive.org/details/Simtel_MSDOS_1996-09 Simtel MSDOS 1996-09] → Simtel-MSDOS-Sep1996-CD2.iso → DISC2/ARCERS/ARI113U.ZIP |
− | * [http://mpolibbs.steptail.com/software/DOS/COMPRESS/ARI113V.ZIP ARI 1. | + | * [http://mpolibbs.steptail.com/software/DOS/COMPRESS/ARI113V.ZIP ARI 1.13v] |
+ | ** Another copy: [https://archive.org/details/CHIP1996OktoberCD08 CHIP 1996. október (CD 08)] → CHIP_CD08.{BIN,CUE} → sac/pack/ari113v.zip | ||
* [http://www.dcee.net/Files/Archiver/ari114.com ARI 1.14] | * [http://www.dcee.net/Files/Archiver/ari114.com ARI 1.14] | ||
− | * [http://mpolibbs.steptail.com/software/DOS/COMPRESS/ARI114C.ZIP ARI 1. | + | * [http://mpolibbs.steptail.com/software/DOS/COMPRESS/ARI114C.ZIP ARI 1.14c and 1.13w] |
+ | ** Another copy: [https://archive.org/details/dptoolclub-cdasc DP Tool Club CD ASC #03, 08, 31-34] → CDASC_33_1996_novembre.iso → DOS/TOOLS/ARI114C.ZIP | ||
+ | * {{CdTextfiles|simtel/simtel9703/disk2/DISC2/ARCERS/ARI214.COM|ARI 2.14}} | ||
* {{CdTextfiles|simtel/stmsdos9709/disk1/DISC1/ARCERS/ARI215.EXE|ARI 2.15}} | * {{CdTextfiles|simtel/stmsdos9709/disk1/DISC1/ARCERS/ARI215.EXE|ARI 2.15}} | ||
* {{CdTextfiles|simtel/simtel0101/simtel/arcers/ari22.exe|ARI 2.2}} | * {{CdTextfiles|simtel/simtel0101/simtel/arcers/ari22.exe|ARI 2.2}} | ||
+ | * [http://old-dos.ru/index.php?page=files&mode=files&do=show&id=1621 Various versions of ARI at old-dos.ru] |
Latest revision as of 15:02, 13 December 2023
ARI is a compressed archive utility for DOS, and associated file format, developed by RAO Inc. It was distributed as freeware, and there was a registered version with more features.
Contents |
[edit] Format details
[edit] File structure
This information (written for the fileformats.archiveteam.org wiki) pertains to ARI and ERI, and is based on reverse engineering. It may be incorrect, and is likely incomplete. The software has many features whose effect on the format has not been tested.
An ARI or ERI file is a sequence of "member file" segments, each with the following structure:
Size in bytes | Name | Description and remarks |
---|---|---|
path_len | filename_path | Variable size, often absent. The logic for finding the size is unclear. |
8 | filename_base | Filename, base part, padded with spaces or NUL bytes |
3 | filename_ext | Filename extension, padded |
1 | File attributes and other flags. 0x80 bit may be set when filename_path is present. | |
2 | timestamp_time | DOS time/date |
2 | timestamp_date | |
4 | Original file size | |
4 | member_size | Total size of this member (header + cdata) |
4 | "CRC-32" (derived from the uncompressed file data) | |
member_size−(path_len+28) | cdata | Compressed file data |
[edit] CRC algorithm
Each member file has a "CRC-32" field (as named by the software's "l" command, though it is only a CRC in the loosest sense of the term). The algorithm and file format are the same for ARI and ERI, but their "l" commands display it differently. Assuming the byte order in the file is 0-1-2-3, ERI displays 3-2-1-0, while ARI displays 1-0-3-2.
Think of it as four separate 1-byte checksums: ck[0...3]. As each input byte is processed, two of the "ck" bytes are updated: one using an "ADD" function, and one using an "XOR" function.
The "ADD" function: ck[n] := (ck[n] + source_byte) mod 256
The "XOR" function: ck[n] := ck[n] XOR ((source_byte + 1) mod 256)
The first byte of the file updates ck[0] with ADD, and ck[1] with XOR. The second byte updates ck[1] (ADD) and ck[2] (XOR). Then 2-3 for the third byte, then 3-0, then back to 0-1, repeating with a period of 4 bytes.
[edit] Related formats
- ERI (compressed archive) - successor?
[edit] Software
- ARI 1.12 (seems very buggy)
- ARI 1.13u: Simtel MSDOS 1996-09 → Simtel-MSDOS-Sep1996-CD2.iso → DISC2/ARCERS/ARI113U.ZIP
- ARI 1.13v
- Another copy: CHIP 1996. október (CD 08) → CHIP_CD08.{BIN,CUE} → sac/pack/ari113v.zip
- ARI 1.14
- ARI 1.14c and 1.13w
- Another copy: DP Tool Club CD ASC #03, 08, 31-34 → CDASC_33_1996_novembre.iso → DOS/TOOLS/ARI114C.ZIP
- ARI 2.14
- ARI 2.15
- ARI 2.2
- Various versions of ARI at old-dos.ru