38 lines
2.0 KiB
Plaintext
38 lines
2.0 KiB
Plaintext
|
|
The Arkive format
|
|
|
|
Disclaimer: The description below is a mere extrapolation from the files I
|
|
have encountered. It does not take Arkive archives containing relative files
|
|
into account since I have never seen one.
|
|
|
|
The archive format of the program Arkive has a structure that is similar to
|
|
the Lynx format. The archives start with a byte showing the number of files in
|
|
in the archive, then comes the directory of the files in the archive (unlike
|
|
in Lynx, no BASIC program is prepended to the archive) which is followed by
|
|
the files themselves, all aligned to sector boundary. Arkive archives are in
|
|
no way compressed, the files are simply linked after each other in it. Another
|
|
difference between Arkive and Lynx archives is that Arkive puts trailing
|
|
garbage even after the last file, creating an archive with the size of a
|
|
multiple of 254.
|
|
|
|
A directory entry has the following structure:
|
|
|
|
POSITION DESCRIPTION
|
|
$00 File attribute (file type, "closed" and "write-protected"
|
|
flag)
|
|
$01 Number of used bytes plus 1 in the last sector (the same value
|
|
as the second byte of the last sector of the original file)
|
|
$02-$11 Original name of the file, with trailing Shift-spaces
|
|
$12-$1A Extended info (of relative files and GEOS files) found in the
|
|
directory entry of the original file
|
|
$1B-$1C Original length of the file in blocks
|
|
|
|
The first file starts at the beginning of the block that follows the last
|
|
block of the directory. All files are similarly aligned so that they start at
|
|
the beginning of a block. This method has the advantage that the extractor
|
|
program running on a real Commodore machine doesn't have to move data, only
|
|
cut the archive into the original files. Block alignment means that in DOS
|
|
files the particular data starts at an offset of a multiple of 254: when it is
|
|
copied onto a disk or into a disk image, such an offset will be at the start
|
|
of a block.
|