logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Compatibility

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

Conventions

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.

Format

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 byte. Headerversionnumber 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 Filename 14 bytes of name, zero terminated. Compressedlength Compressed data length, one word. Date One half-word, date. year = (date >> 9) & 0x7f; month = (date >> 5) & 0x0f; day = date & 0x1f; Time 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. CRC One half-word, Cyclic Redundancy Check. Originalfilelength Original file length, one word, only present if header type greater than 1. Loadaddress Load address of the file, one word, only present if bit-7 of the header version number is set. Execaddress Exec address of the file, one word, only present if bit-7 of the header version number is set. Attributes Attributes of the file, one word, only present if bit-7 of the header version number is set. Compresseddata... Directories are stored as non-compressed archives within archives, ie. their load address & 0xffffff00=0xfffddc.

Name

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

See Also

arcfs(5), nspark(1) SPARK(5)()

See Also