Provided by: nspark_1.7.8B2+git20210317.cb30779-2_amd64 bug


       ArcFS - Archive file format for the RISC OS ArcFS filesystem


       Strings  are  given  in  ASCII  with  C-style  escapes. No terminating   is present if not
       explicitly included.

       Words are 32 bit little-endian numbers.

       Half words are 16 bit little-endian numbers.

       This document describes format version 0, for ArcFS minimum versions 0.40  and  1.00,  and
       version 0a, for ArcFS minimum versions 0.58 and 2.17.


       The  file  consists  of  a  file header, a sequence of archive headers, then a sequence of
       compressed files.


       File string signature
       The string "Archive" followed by a zero byte.

       Header length
       Length of header info in bytes, one word, multiple of 36.

       Data offset
       Offset, in bytes, into archive at which data starts, one word.

       Read-only version
       Minimum read-only version required, multiplied by 100, one word.

       Read-write version
       Minimum read--write version required, multiplied by 100, one word.

       Reserved for future use, 68 bytes.


       The last header starts at 60+length of headers and  ends  at  96+length  of  headers.  The
       format of each header is as follows.

       Info byte
       Object information byte, show compression method used:
            0x00 end of directory marker
            0x01 object has been deleted
            0x82 stored
            0x83 packed
            0x88 crunched
            0xFF compressed

       File name
       File name, 11 bytes.

       Full length
       Original file length, or 0xFFFFFFFF for a directory), one word.

       Load address
       Load address of the file, or 0xFFFFFFdd for a directory), one word.

       Exec address
       Exec address of the file, or 0xdddddddd for a directory), one word.

       File load and execution address may contain a filetype and datestamp as normal.

       Directories  can  be  date-stamped,  the number of centiseconds since the 1st January 1900
       when the directory was created are given by &dddddddddd contained in the directory's  load
       and execution addresses as shown above.

       Archives  converted  from  spark(5)  format  using ArcConv will have the same full length,
       compressed length, load address and execute address as they had in the Spark archive.

       Attributes of the file, one word.  Contains the number of bits compression for crunch  and
       compress  format  files  and  the  least  significant  bytes contains the standard RISC OS
       information on file access.

       Compressed length
       Length of compressed data, or 0xFFFFFFFF for a directory, one word.

       Information word
       The top bit (definitively) indicates whether the object is a file or a directory, 0 for  a
       file, 1 for a directory.

       In  the  case  of  a file, the least significant 31 bits show the offset from the start of
       data at which the file data can be found.

       In the case of a directory, the least significant 31 bits show the offset from  the  start
       of  headers  (96)  at  which the next object in this directory can be found, the following
       object being the first in the sub-directory.


       This archive format is  backwards  compatible  with  versions  0.40  and  1.00,  the  only
       difference  being  that there is a block of catalogue information immediately prior to the
       start of each file's data as described below.

       Note that this information is there to aid the recovery of most  files  in  the  event  of
       archive corruption and is not used by ArcFS.

       Note,  also  that  Compact  and  Autocompact  in release versions 1.09, 2.02 and 2.11 will
       compact out the catalogue information blocks, so try to avoid writing to new archives with
       old versions of ArcFS.

       A marker to indicate the start of a file, the string "FileData", not terminated.

       Info byte
       One byte, as above.

       Leaf name
       The file name, 11 bytes.

       Full length
       One word, as above.

       Load address
       One word, as above.

       Exec address
       One word, as above.

       One word, as above.


       spark(5), nspark(1)