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


       spark - Archive file format for RISC OS version of the PC archiver Arc


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

       Words are 32 bit little-endian numbers.

       Half words are 16 bit little-endian numbers.


       An archive file consists of a sequence of archive marker, archive header  and  file  data,
       ie. marker1, header1, data1, marker2, header2, data2, etc.  The archive marker is a single
       byte of value 0x1a (26).  The archive finishes with an archive marker followed by  a  zero

       Header version number
       This tells you how the file data is stored and how many bytes there are in the header. The
       header version numbers for the PC, are detailed below. An Archimedes header version number
       is identical to the corresponding PC number except it has bit 7 set.
            1    Old style, no compression
            2    New style, no compression
            3    Compression of repeated characters only (RLE)
            4    As 3 plus Huffman Squeezing
            5    Lempel-Ziv packing of repeated strings (old style)
            6    Lempel-Ziv packing of repeated strings (new style)
            7    Lempel-Ziv Welch packing with improved hash function
            8    Dynamic Lempel-Ziv packing with adaptive reset
            9    PKARC style squashing
            127  Un*x compression

       14 bytes of name, zero terminated.

       Compressed length
       Compressed data length, one word.

       One half-word, date.
            year = (date >> 9) & 0x7f;
            month = (date >> 5) & 0x0f;
            day = date & 0x1f;

       One half-word, time.
            hour = (time >> 11) & 0x1f;
            minute = (time >> 5)  & 0x3f;
            second = (time & 0x1f) * 2;

       The  time  and  date fields are always filled in. If the file has a load and exec address,
       these are the time and date when the file was added to the  archive  otherwise,  they  are
       derived  from  the  Archimedes  datestamp.  In all extract operations on Archimedes format
       archives, the contents of the load and exec fields take precedence.

       One half-word, Cyclic Redundancy Check.

       Original file length
       Original file length, one word, only present if header type greater than 1.

       Load address
       Load address of the file, one word, only present if bit-7 of the header version number  is

       Exec address
       Exec  address of the file, one word, only present if bit-7 of the header version number is

       Attributes of the file, one word, only present if bit-7 of the header  version  number  is

       Compressed data...
       Directories  are stored as non-compressed archives within archives, ie. their load address
       & 0xffffff00=0xfffddc.


       PC and Archimedes formats may be mixed in one archive for use on the Archimedes.


       arcfs(5), nspark(1)