--------------------------------------------------------------------------------
Archive Structure Text file.
revision 1.0
Last Modified: 26/5/98

reSource (C) 1998, 1999 Victor Kasenda / gruv
http://members.tripod.com/~gruv/resource

revisions:
1.0: Final revision. Added more comments.
0.3: Added archive signature
0.2: Cleaned up and added several data
0.1: Initial version
--------------------------------------------------------------------------------


Data types and definition:
--------------------------
byte    - basic unit.
longint - 4 bytes. (Long Integer. Can take a negative value.)
string  - variable length + null termination
...     - variable size. Also used to indicate the data can be repeated as
many times as wanted.


General Format of a reSource Archive
------------------------------------
The extension for a reSource archive is 'rS'. All archives have a signature to
confirm that it is a reSource archive.
An empty archive is one that has no files. It must have a valid signature and
a central directory end header.
A zero byte file is not a valid archive.
Generally, the reSource archive will have an archive header, as many data
blocks as needed, a central directory and a central directory end record.

Signatures:
-----------
Long integers are stored in groups of 4 bytes. The byte with the lsb goes
first. So the signatures values had to be reversed to allow them to be seen by
a hex editor.
The signatures are stored in ArchiveHeadersUnit.


Headers
-------
Each header has a corresponding class.
For some headers, the actual size in bytes is required so it is stored in
a constant e.g. DATA_HEADER_SIZE is the size of a data header.

  Data Header
  -----------
  Each data block has a data header.
  first similarity index - first char to start with when restoring the block
  virtual smallest char - it does not exist, so it is not output to the block.
  when restoring, leave a space at this index to pretend it's there. used in
  sada sort.
  


Overall reSource format:
[archive header]
[data header + data block] . . .
[central directory] end of central directory record

A.      Archive Header
          reSource Archive signature    4 bytes   ('RSVK')

B.      Data Header
          Data header signature         4 bytes   ('DATA')
          crc 32                        4 bytes
          compressed size               4 bytes
          first similarity index        4 bytes
          virtual smallest char index   4 bytes


C.      Central Director Structure:

        [file header] . . . + end of central directory record

        File Header:

          Central file header signature          4 bytes  ('CFHS')
          compressed size                        4 bytes
          uncompressed size                      4 bytes
          number of blocks                       4 bytes
          offset of first local data header      4 bytes

          (attributes)
          time (dos date + time)                 4 bytes
          attr                                   4 bytes
          file name                              string

        End Of Central Directory Record:

          Signature                              4 bytes  ('ECDR') End of Central Directory Record
          Block Size                             4 bytes
          offset of first Central File Header    4 bytes


