INFO: ARC/ZIP/LZH/etc formats

From: Doug Wokoun (aa384@cleveland.Freenet.Edu)
Date: 07/03/90-10:27:35 PM Z


From: aa384@cleveland.Freenet.Edu (Doug Wokoun)
Subject: INFO: ARC/ZIP/LZH/etc formats
Date: Tue Jul  3 22:27:35 1990



 
             [[[[[[[[[  ARCHIVE FORMATS AND DATA  ]]]]]]]]]
 
                         (C) 1989 Raymond Clay
               Permision to freely distribute and modify
                 is granted so long as credit is given
               and all of the text through the disclaimer
                        is retained and unchanged
 
        October 31, 1989
 
If you want to submit corrections, changes or source code (in plain ASCII),
you can reach me via:
 
 
        CIS          :   74730,1344
        GEnie        :   R.CLAY1
        AppleLink    :   Raymond6
        StarText     :   209287       <D/FW-Texas
 
DISCLAIMER:
 
I make no garuntees of any kind about the accuracy or adequacey of this
information for any purpose, nor am I responsible for the consequences of
using this information in any manner.
 
Oh, for a less litiginous world!
 
 
          **************************************************
 
 
          CONTENTS                                      PAGE
          --------------------------------------------------
          ARC/PAK Format ................................  2
 
          Binary ][ Format ..............................  3
 
          DWC Format ....................................  5
 
          GIF Format ....................................  6
 
          LZH Format ....................................  8
 
          NuFX Format ...................................  9
 
          PackIt Format ................................. 13
 
          StuffIt ....................................... 13
 
          ZIP Format .................................... 15
 
          ZOO Format .................................... 19
 
          Time Value Formats ............................ 20
 
          Extended Files ................................ 20
 
          Filenames ..................................... 20
 
 
 
 
 
 
 
 
                                ARC/PAK                        Page  2
                                =======
 
System of Origin : IBM
 
Original author : Thom Henderson
 
FILE FORMAT
-----------
 
     file header 1
          file 1
     file header 2
          file 2
     .
     .
     file header n
          file n
EOF
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ARCID       DB   $1A
01     ARCMTD      DB   00          ;Method
02     ARCFNT      DS   12          ;filename
0E                 DB   00
0F     ARCNSZ      HEX  00000000    ;Compressed size
13     ARCDAT      DW   0000        ;File date (MSDOS)
15     ARCTIM      DW   0000        ;File time (MSDOS)
17     ARCCRC      DW   0000
19     ARCOSZ      HEX  00000000    ;Uncompressed size
1D     ARCFIL      DS   ARCNSZ
 
 
       COMPRESSION METHOD
       ------------------
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       Stored        0     No compression used
       Packed        1     Repeated running length encoding (RLE)
       Squeezed      2     Huffman encoding
       Crunched      3     LZW with 4K buffer, 12 bits codes
       Crunched      4     First packing, then LZW 4K buffer with 12 bits
       Crunched      5     Packing, LZW, 4K buffer, vari len (9-12 bits)
       Squashed      6     LZW, 8K buffer, variable length (9-13 bits)
       Crushed       7     Packing, then LZW 8K buffer, 2-13 bits (PAK 1.0)
       Distill       8     Dynamic Huffman with 8K buffer (PAK 2.0)
 
 
POSITIONING IN FILE
-------------------
 
Begining of File Data = Begining of File Header + $1D
 
Next File Header = Begining of File Header + $1D + ARCNSZ
       or
                 = Begining of File Data + ARCNSZ
 
          **************************************************
 
 
                              BINARY ][                        Page  3
                              =========
 
System of Origin : Apple ][
 
Original Author : Gary Little
 
FILE FORMAT
-----------
 
     file header 1
          file 1
     file header 2
          file 2
     .
     .
     file header n
          file n
EOF
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     B2ID1       DB   $A          ;ID bytes
01     B2ID2       ASC  'GL'        ;authors initials - Gary Little
03     B2ACS       DB   00          ;access code
04     B2FTYP      DB   00          ;file type
05     B2AUX       DW   0000        ;auxiliary type
07     B2STYP      DB   00          ;storage type
08     B2FSIZ      DW   0000        ;size of file in 512-byte blocks
0A     B2MODDAT    DW   0000        ;date of modification
0C     B2MODTIM    DW   0000        ;time of modification
0E     B2CRDAT     DW   0000        ;date of creation
10     B2CRTIM     DW   0000        ;time of creation
12     B2ID3       DB   2           ;ID byte
13                 DS   1           ;reserved
14     B2EOF       HEX  000000      ;end-of-file (EOF) position
17     B2FLN       DB   00          ;length of filename or partial pathname
18     B2FNAM      DS   15          ;ASCII filename or partial pathname
                                    ;If the filename is a partial pathname
                                    ;it will overwrite the following
                                    ;2 segments for native filename
27     B2NFLN      DB   00          ;length of native filename]
28     B2NFNAM     DS   48          ;ASCII native filename
58                 DS   23          ;reserved, must be zero
6F     B2GSACS     DB   00          ;GS/OS access code (high byte)
70     B2GSFTYP    DB   00          ;GS/OS file type code (high byte)
71     B2GSSTYP    DB   00          ;GS/OS storage type code (high byte)
72     B2GSSIZ     DW   0000        ;GS/OS size of file in blocks (high word)
74     B2GSEOF     DB   00          ;GS/OS EOF position (high byte)
75     B2DSKSPC    HEX  00000000    ;disk space needed (512 byte Blocks)
79     B2OS        DB   00          ;operating system type
 
 
 
 
 
 
 
 
 
 
 
 
                                                               Page  4
 
 
       OPERATING SYSTEM TYPE
 
       VALUE  DESCRIPTION               VALUE  DESCRIPTION
       ----- -------------------------- ----- ------------------------
       00     ProDOS or SOS             07     Macintosh XL
       01     DOS 3                     08     Apple CP/M
       02     reserved                  09     reserved
       03     DOS 3.2 or DOS 3.1        0A     MS-DOS
       04     Apple II Pascal           0B     High Sierra(CD-ROM)
       05     Macintosh MFS             0C     ISO 9660 (CD-ROM)
       06     Macintosh HFS
 
7A     B2NFTYP     DW   0000        ;native file type code
7C     B2PHANTOM   DB   00          ;phantom file flag
 
       PHANTOM FILE S/W DESIGNATIONS
 
       VALUE  DESCRIPTION               VALUE  DESCRIPTION
       ----- -------------------------- ----- ------------------------
       00     [generic]                 04     Modem MGR
       01     Point-to-Point            05     CommWorks
       02     Tele-Master Comm Sys      06     MouseTalk
       03     ProTERM
 
7D     B2FLAGS     DB   00          ;data flags
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       B2FLAGS       7        data is compressed (SQUeezed)
                     6        data is encrypted
                     0        file is sparse/packed
 
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       SQUEEZED            Huffman Squeeze. The filename will have '.QQ'
                           appended. The first 16 bytes of the file are
                           the original filename length and filename, the
                           next 14 bytes are identical in form and content
                           to the Apple GetInfo results and the bytes $3 -
                           $10 of the Binary ][ header. The rest of the
                           file is squeezed with packing.
 
7E     B2VERSION   DB   00          ;Binary II version number
7F     B2NUMFOL    DB   00          ;number of files to follow
 
 
NOTE : Many GS/OS file attributes are stored in 2 places (this is a result
       of the differences between ProDOS 8/16 and GS/OS).
 
POSITIONING IN FILE
-------------------
 
Begining of File Data = Begining of File Header + $80
 
Next File Header = Begining of File Header + $80 + B2FSIZ
       or
                 = Begining of File Data + B2FSIZ
 
          **************************************************
 
 
                                 DWC                           Page  5
                                 ===
 
System of Origin : IBM
 
FILE FORMAT
-----------
 
          file 1
          file 2
          .
          .
          file n
          file header 1
          file header 2
          .
          .
          file header n
     end header
EOF
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     DWCFNT      DS   12          ;filename
0C                 DB   00
0D     DWCOSZ      HEX  00000000    ;Uncompressed size
11     DWCTIM      DW   0000        ;File time ala MSDOS
13     DWCDAT      DW   0000        ;File date ala MSDOS
15     DWZNSZ      HEX  00000000    ;Compressed size
19     DWCFTP      HEX  00000000    ;File offset from SOF
1D     DWCMTD      DB   00          ;Method
1E                 DW   0000        ;???
20     DWCCRC      DW   0000        ;CRC
 
 
END HEADER
----------
 
         ORG       DWCEND-27
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00                 DS    20          ;?
14                 DW    0000        ;Number of files
16                 DW    0000
18                 ASC   'DWC'       ;ID
1B     DWCEND
 
 
       COMPRESSION METHOD
       ------------------
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       Stored              No compression used
       Crunched            Packing, LZW, 4K buffer, var len (9-12 bits)
 
          **************************************************
 
 
 
 
                                GIF                            Page  6
                                ---
 
Created by Compuserve, Inc.
 
FILE FORMAT
-----------
 
     GIF Header
          Global Color Map
               Image Descriptor 1
                    Local Color Map
                    Raster Data
               Image Descriptor 2
                    Local Color Map
                    Raster Data
               .
               .
               .
               Image Descriptor n
                    Local Color Map
                    Raster Data
     GIF Terminator
EOF
 
 
HEADER FORMAT
-------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     GIFSIG      ASC  'GIF87a'    ;Gif signature and version (87a)
06     GIFWDTH     DW   0000        ;Screen Width - Raster width in pixels
08     GIFHGHT     DW   0000        ;Screen Height - Raster height in pixels
0A     GIFCOLR     DB   00          ;Colorbyte
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       GCMFLG         7       if set - Global color map follows Descriptor
       GCMRES        6-4      # bits of color resolution + 1
                      3       reserved
       GCMPSIZ       2-0      # bits/pixel in image +1, range of values 1
                              to 8 bits. This gives a range of 2 (B & W) to
                              256 colors
 
0B     GIFBKGRND   DB   00          ;Color index of screen background,
                                    ;color is defined from the Global
                                    ;color map or default map.
       GIFEXTN                      ;Currently undefined GIF extension
                                    ;block
 
       OFFSET LABEL       TYP  VALUE       DESCRIPTION
       ------ ----------- ---- ---------- ----------------------------
       00     GIFEXTSIG   DB   $21         ;Extension Block signature
       01     EXTCODE     DB   00          ;Extension Function Code
       02     EXTCNT0     DB   00          ;Count of function bytes
       03     EXTFUNC0    DS   up to 255
       .
       .         repeat EXTCNT0 and EXTFUNC0 as many times as required
       .
              EXTTERM     DB   00          ;Termination of Extension Block
 
0C     GIFHEND     DB   00          ;end of GIF header
 
 
 
                                                               Page  7
 
 
GLOBAL COLOR MAP FORMAT
-----------------------
 
GCMNUM = 2 ^ (GCMPSIZ)
 
GCMLEN = GCMNUM * 3
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     GCMCOLR0    HEX  000000      ;definition for color 0
 
       OFFSET LABEL       TYP  VALUE       DESCRIPTION
       ------ ----------- ---- ---------- ----------------------------
       00     REDINTNS    DB   00          ;Red intensity value for this
                                           ;color
       01     GRNINTNS    DB   00          ;Green intensity value for
                                           ;this color
       02     BLUINTNS    DB   00          ;Blue intensity value for this
                                           ;color
 
03     GCMCOLR1    HEX  000000      ;definition for color 1
       .
       .
       .
xx     GCMCOLRn    HEX  000000      ;definition for color n
 
 
IMAGE DESCRIPTOR
----------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     IMGSEP      DB   $2C         ;Image separator character
01     IMGLFT      DW   0000        ;Start of image in pixels from the
                                    ;left side of the screen
03     IMGTOP      DW   0000        ;Start of image in pixels from the
                                    ;top of the screen
05     IMGWID      DW   0000        ;Width of the image in pixels
07     IMGHGT      DW   0000        ;Height of the image in pixels
09     IMGFLGS     DB   00          ;GIF flags for this image
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       MAPFLG         7       If set, use pixel and Local color map
                              following, use pixel; otherwise use Global
                              Color Map
       RASTFLG        6       If clear, Image formatted in Sequential order,
                              if set then Image in Interlaced order
                     5-3      unused
       IMGPSIZ       2-0      bits per pixel for this image
 
0A     LOCOLMAP    DS   [IMGPSIZ^2]*3 ;Same format and size computation
                                    ;as Global Color Map
       RASTDAT                      ;Raster Data - compressed image
       GIFTERM     DB   $3B         ;Termination of GIF data
 
       COMPRESSION METHOD
       ------------------
       LZW, 4k BuffER, variable length (3-12 bits)
 
          **************************************************
 
 
                                LZH                            Page  8
                                ===
 
System of Origin : IBM
 
FILE FORMAT
-----------
 
     file header 1
          file 1
     file header 2
          file 2
     .
     .
     file header n
          file n
EOF
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     LZHHSZ      DB   0           ;Header size
01     LZHCKS      DB   0           ;Cksum of remaining bytes
02     LZHMTD      ASC  '-lh0-'     ;Method
07     LZHNSZ      HEX  00000000    ;Compressed size
0B     LZHOSZ      HEX  00000000    ;Uncompressed size
0F     LZHTIM      DW   0000        ;File time (MSDOS)
11     LZHDAT      DW   0000        ;File date (MSDOS)
13     LZHATR      DW   0000        ;File attribute
15     LZHFNL      DB   00          ;filename/path length
16     LZHFNT      DS   LZHFNL      ;filename/path
2B     LZHCRC      DW   0000        ;CRC-16
 
 
       COMPRESSION METHOD
       ------------------
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       STORED      -lh0-   No compression used
       LZHUF       -lh1-   LZW, 4K buffer, Huffman for upper 6 bits of pos
       LZARI       -lz4-   LZW, Arithmetic Encoding
       LZARI       -lz5-   LZW, Arithmetic Encoding
 
 
POSITIONING IN FILE
-------------------
 
Begining of File Data = Begining of Header + LZHHSZ
 
Begining of Next File Header = Begining of File Data + LZHNSZ
 
          **************************************************
 
 
 
 
 
 
 
 
 
 
                           NuFX - SHRINKIT                     Page  9
                           ===============
 
System of Origin: Apple ][
 
Original author: Andrew Nicholas
 
FILE FORMAT
-----------
 
     Master Header
          File 1 Header
               Attribute Section
               Filename Section
               Thread Section
                    Thread 1
                    .             File data is contained in a thread
                    .
                    Thread n
          File 2 Header
               Attribute Section
               Filename Section
               Thread Section
                    Thread 1
                    .
                    .
                    Thread n
          File 3 Header
          .
          .
          .
EOF
 
 
MASTER HEADER
-------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     NUID1       HEX  4EF546E96CE5 ;Master signature spells "NuFile"
                                    ;in alternating high and low ASCII
06     NUCRC       DW   0000        ;CRC of bytes $08 - $2F in this block
08     NURECS      HEX  00000000    ;Total number of files in this archive
0C     NUCRTIM     HEX  000000      ;archive creation time and date
0F     NUCRDAT     HEX  0000000000
14     NUMDTIM     HEX  000000      ;time and date archive last modified
17     NUMDDAT     HEX  0000000000
1C                 DS   19          ;reserved
2F                                  ;end master header
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                               Page 10
 
TIME FORMAT
-----------
 
       OFFSET LABEL       TYP  VALUE       DESCRIPTION
       ------ ----------- ---- ---------- ----------------------------
       00     GSSEC       DB   00          ;second - 0 through 59
       01     GSMIN       DB   00          ;minute - 0 through 59
       02     GSHR        DB   00          ;hour - 0 through 23
       03     GSYR        DB   00          ;current Year minus 1900
       04     GSDAY       DB   00          ;day - 0 through 30
       05     GSMNTH      DB   00          ;month - 0 through 11, with
                                           ;0=January
       06                 DB   00          ;filler byte - reserved = 00
       07     GSWDAY      DB   00          ;weekday - 1 through 7, with
                                           ;1=Sunday
 
       The format of this field is identical to that described in the
       _ReadTimeHex ($0D03) call described on page 14-14 of the
       Apple_IIgs_Toolbox_Reference:_Volume_1.
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     NXID1       HEX  4EF546D8    ;Header signature spells "NuFX" in
                                    ;alternating high and low ASCII
04     NXCRC       DW   0000        ;CRC of bytes $06 - NXATRBCNT+1
 
 
ATTRIBUTE SECTION
-----------------
 
06     NXATRBCNT   DW   0000        ;length of the attribute section of
                                    ;each header. The distance from NXID1
                                    ;to and including NXFNL
08     NXVERS      DW   0000        ;Minimum version needed for extraction
0A     NXNUMTHR    HEX  00000000    ;The number of threads following NXFNAM
0E     NXSYSID     DW   0000        ;Native file system identifier
 
                          SYSTEM IDENTIFIERS
 
       VALUE  DESCRIPTION               VALUE  DESCRIPTION
       ----- -------------------------- ----- ------------------------
       0000   File is an Archived Disk  0008   Apple CP/M
       0001   ProDOS/SOS                0009   reserved, do not use
       0002   DOS 3.3                   000A   MS-DOS
       0003   DOS 3.2                   000B   High-Sierra/ISO 9660
       0004   Apple II Pascal           000C
       0005   Macintosh(tm) (HFS)       .     reserved
       0006   Macintosh (MFS)           FFFF
       0007   LISA(tm) file system
 
 
10     NXSYSSEP    ASC  '/'         ;Native file system seperator
                                    ;ProDOS = '/' ($2F)
                                    ;HFS = ':' ($3A)
                                    ;MS-DOS = '\' ($5C)
11     NXSPARSE    DB   00          ;sparse file indicated if = $01
12     NXACCESS    HEX  00000000    ;
 
 
 
                                                               Page 11
 
 
       LABEL       BIT        DESCRIPTION if set
       ----------- --------- -----------------------------------------
       NXACCESS     31-8      reserved, must be zero
                      7       destroy enabled
                      6       rename enabled
                      5       backup needed
                     4-3      reserved, must be zero
                      2       file is invisible
                      1       write enabled
                      0       read enabled
 
16     NXFTYP      HEX  00000000    ;file type, Disk = 0
1A     NXEXTYP     HEX  00000000    ;extra type, ProDOS aux_type or HFS
                                    ;creator_type, Disk: total number
                                    ;of blocks on the device
1E     NXSTRTYP    DW   0000        ;storage type, if a disk this should
                                    ;contain the block size of the O/S
 
                             STORAGE TYPE
 
      TYPE  IF FILE SIZE IS:           O/S      BLOCK SIZE
      ---- ------------------------- --------- ---------------
       $1   < 512 bytes              ProDOS     512
       $2   > 511 bytes, < 128k      DOS 3.3    256
       $3   > 129k                   HFS        524
       $5   extended file
       $D   subdirectory
 
20     NXCRTIM     HEX  000000      ;file creation time and date
23     NXCRDAT     HEX  0000000000
28     NXMDTIM     HEX  000000      ;time and date file last modified
2B     NXMDDAT     HEX  0000000000
30     NXARCTIM    HEX  000000      ;time and date file archived
33     NXARCDAT    HEX  0000000000
       .
       .
 
Any other attributes are added here. NXATRBCNT points to the NXFNL, which
is always the last attribute.
 
       .
       .
NXATRBCNT-2
       NXFNL       DW   0000        ;filename length
 
 
FILENAME SECTION
----------------
 
NXFNL+2
       NXFILE      DS   NXFNL       ;Filename, partial pathname or disk
                                    ;volume name. Names ported across
                                    ;systems may have illegal characters
                                    ;or characteristics.
 
 
 
 
 
 
 
 
 
                                                               Page 12
 
 
THREAD SECTION
--------------
 
Thread records are 16 byte records which immediately follow the filename and
describe the types of data structures which are included with a given record.
The number of threads is in the attribute section under NXNUMTHR.
 
 
A thread record can be represented as follows:
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     THRCLASS    DW   0000        ;describes the class of the thread
 
                        0000        CLS_MSG
                        0001        CLS__CNTRL
                        0002        CLS_DATA
                        0003        CLS_SPRSE
 
02     THRFRMT     DW   0000        ;format of the data within the thread
 
                        0000        ;Uncompressed
                        0001        ;SQueezed (SQ/USQ)
                        0002        ;Dynamic LZW [ShrinkIt]
                        0003
                        .           ;RESERVED, contact the author
                        FFFF
 
04     THRKIND     DW   0000        ;describes data in thread
 
       if THRCLS =      and THRKIND =   THEN THE THREAD CONTAINS:
       ---------------- -------------- ---------------------------
       CLS_MSG          0000            ASCII text
                                        all others undefined
 
       CLS_CNTRL        0000            create directory
                                        all others undefined
 
       CLS_DATA         0000            data_fork of file
                        0001            disk image
                        0002            resource_fork of file
                                        all others undefined
 
06                 DS   2
08     THREOF      HEX  00000000    ;length of the uncompressed thread
0C     THRCMPEOF   HEX  00000000    ;length of the compressed thread
 
POSITIONING IN FILE
-------------------
 
Start of the thread list = (beginning of header) + NXATRBCNT + NXFNL
 
End of the thread list = (beginning of header) + NXATRBCNT + NXFNL +
                         (16 * NXNUMTHR)
 
Start of a data_thread = (beginning of header) + NXATRBCNT + NXFNL +
                         (16 * NXNUMTHR) + (THRCMPEOF of all threads
                          in the thread list which are not data prior
                          to finding a CLS_DATA = 0000)
 
 
 
 
                                                               Page 13
 
 
Start of a resource_thread = (beginning of header) + NXATRBCNT + NXFNL +
                             (16 * NXNUMTHR) + (THRCMPEOF of all the
                              threads in the thread list which are not
                              resources prior to finding a
                              CLS_DATA = 0002)
 
Next record = (beginning of header) + NXATRBCNT + NXFNL +
              (16 * NXNUMTHR) + (THRCMPEOF of each thread)
 
          **************************************************
 
 
                               PACKIT
                               ======
 
System of Origin : Macintosh
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     PITFLN      HEX  00          ;filename length
01     PITFNAM     DS   63          ;filename
40     PITTYP      HEX  00000000    ;file type
44     PITCRT      HEX  00000000    ;Creator
48     PITFFLG     DW   0000        ;Finder flags
4C     PITLOK      DW   0000        ;locked?
4E     PITDSIZ     HEX  00000000    ;data fork uncompressed size
52     PITRSIZ     HEX  00000000    ;resource fork uncompressed size
56     PITCDSIZ    HEX  00000000    ;data fork compressed size
5A     PITCRSIZ    HEX  00000000    ;resource fork compressed size
5E     PITCRC      DW   0000        ;CRC
 
          **************************************************
 
 
                               STUFFIT
                               =======
 
System of Origin : Macintosh
 
Original author : Raymond Lau
 
FILE FORMAT
-----------
 
     Master Header
          file header 1
               file 1 resource fork
               file 1 data fork
          file header 2
               file 2 resource fork
               file 2 data fork
          .
          .
          file header n
               file n resource fork
               file n data fork
EOF
 
 
 
                                                               Page 14
 
 
MASTER HEADER
-------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     SITHSIG     ASC  'SIT!'      ;STUFFIT archive signature
04     SITHNUM     DW   0000        ;number of files in archive
06     SITHLEN     HEX  00000000    ;length of entire archive incl hdr
0A     SITHID2     ASC  'rLau'      ;authors name - R. Lau
0E     SITHVER     DB   00          ;version number
0F                 DS   7           ;reserved
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     SITFRCMP    DB   00          ;rsrc fork compression method
01     SITFDCMP    DB   00          ;data fork compression method
02     SITFNL      DB   00          ;file name length
03     SITFNAM     DS   $3F         ;filename
41     SITFTYP     HEX  00000000    ;filetype
45     SITFCR      HEX  00000000    ;file creator
49     SITFFFL     DW   0000        ;Finder flags
4B     SITFCRD     HEX  00000000    ;creation date
4F     SITFMDD     HEX  00000000    ;modification date
53     SITFRLN     HEX  00000000    ;uncompressed resource fork length
57     SITFDLN     HEX  00000000    ;uncompressed data fork length
5B     SITFCRLN    HEX  00000000    ;compressed resource fork length
5F     SITFCDLN    HEX  00000000    ;compressed data fork length
61     SITFRCRC    DW   0000        ;resource fork CRC
63     SITFDCRC    DW   0000        ;data fork CRC
65     SITFRPAD    DB   00          ;pad bytes for encrypted files,
66     SITFDPAD    DB   00          ;resource and data forks
6A                 DS   4           ;reserved
6E     SITFHCRC    DW   0000        ;CRC of file header
 
 
       STUFFIT METHODS
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       noComp         0    uncompressed
       rleComp        1    RLE compression
       lzwComp        2    LZW compression, 18k buffer, 14 bit code size
       hufComp        3    Huffman compression
       encrypted     16    bit set if encrypted. ex: encrypted+lzwComp
       startFolder   32    marks start of a new folder
       endFolder     33    marks end of the last folder started
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                               Page 15
 
 
POSITIONING IN FILE
-------------------
 
First File Header = SITHSIG + $15
 
Begining of Resource Fork = SITFRCMP + $6F
 
Begining of Data Fork = Begining of Resource Fork + SITFCRLN
 
Next File Header = Begining of previous Data Fork + SITFCDLN
       or
                 = Previous File Header + $6F + SITFCRLN + SITCDLN
 
          **************************************************
 
 
                                ZIP
                                ===
 
System of Origin : IBM
 
Original author : Phil Katz
 
FILE FORMAT
-----------
 
 
Files stored in arbitrary order.  Large zipfiles can span multiple
diskette media.
 
          Local File Header 1
                    file 1 extra field
                    file 1 comment
               file data 1
          Local File Header 2
                    file 2 extra field
                    file 2 comment
               file data 2
          .
          .
          .
          Local File Header n
                    file n extra field
                    file n comment
               file data n
     Central Directory
               central extra field
               central comment
          End of Central Directory
                    end comment
EOF
 
 
 
 
 
 
 
 
 
 
 
 
                                                               Page 16
 
 
LOCAL FILE HEADER
-----------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ZIPLOCSIG   HEX  04034B50    ;Local File Header Signature
04     ZIPVER      DW   0000        ;Version needed to extract
06     ZIPGENFLG   DW   0000        ;General purpose bit flag
08     ZIPMTHD     DW   0000        ;Compression method
0A     ZIPTIME     DW   0000        ;Last mod file time (MS-DOS)
0C     ZIPDATE     DW   0000        ;Last mod file date (MS-DOS)
0E     ZIPCRC      HEX  00000000    ;CRC-32
12     ZIPSIZE     HEX  00000000    ;Compressed size
16     ZIPUNCMP    HEX  00000000    ;Uncompressed size
1A     ZIPFNLN     DW   0000        ;Filename length
1C     ZIPXTRALN   DW   0000        ;Extra field length
1E     ZIPNAME     DS   ZIPFNLN     ;filename
--     ZIPXTRA     DS   ZIPXTRALN   ;extra field
 
CENTRAL DIRECTORY STRUCTURE
---------------------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ZIPCENSIG   HEX  02014B50    ;Central file header signature
04     ZIPCVER     DB   00          ;Version made by
05     ZIPCOS      DB   00          ;Host operating system
06     ZIPCVXT     DB   00          ;Version needed to extract
07     ZIPCEXOS    DB   00          ;O/S of version needed for extraction
08     ZIPCFLG     DW   0000        ;General purpose bit flag
0A     ZIPCMTHD    DW   0000        ;Compression method
0C     ZIPCTIM     DW   0000        ;Last mod file time (MS-DOS)
0E     ZIPCDAT     DW   0000        ;Last mod file date (MS-DOS)
10     ZIPCCRC     HEX  00000000    ;CRC-32
14     ZIPCSIZ     HEX  00000000    ;Compressed size
18     ZIPCUNC     HEX  00000000    ;Uncompressed size
1C     ZIPCFNL     DW   0000        ;Filename length
1E     ZIPCXTL     DW   0000        ;Extra field length
20     ZIPCCML     DW   0000        ;File comment length
22     ZIPDSK      DW   0000        ;Disk number start
24     ZIPINT      DW   0000        ;Internal file attributes
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       ZIPINT         0       if = 1, file is apparently an ASCII or
                              text file
                      0       if = 0, file apparently contains binary
                              data
                     1-7      unused in version 1.0.
 
26     ZIPEXT      HEX  00000000    ;External file attributes, host
                                    ;system dependent
2A     ZIPOFST     HEX  00000000    ;Relative offset of local header
                                    ;from the start of the first disk
                                    ;on which this file appears
2E     ZIPCFN      DS   ZIPCFNL     ;Filename or path - should not
                                    ;contain a drive or device letter,
                                    ;or a leading slash. All slashes
                                    ;should be forward slashes '/'
--     ZIPCXTR     DS   ZIPCXTL     ;extra field
--     ZIPCOM      DS   ZIPCCML     ;file comment
 
 
                                                               Page 17
 
 
END OF CENTRAL DIR STRUCTURE
----------------------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ZIPESIG     HEX  06064B50    ;End of central dir signature
04     ZIPEDSK     DW   0000        ;Number of this disk
06     ZIPECEN     DW   0000        ;Number of disk with start central dir
08     ZIPENUM     DW   0000        ;Total number of entries in central dir
                                    ;on this disk
0A     ZIPECENN    DW   0000        ;total number entries in central dir
0C     ZIPECSZ     HEX  00000000    ;Size of the central directory
10     ZIPEOFST    HEX  00000000    ;Offset of start of central directory
                                    ;with respect to the starting disk
                                    ;number
14     ZIPECOML    DW   0000        ;zipfile comment length
16     ZIPECOM     DS   ZIPECOML    ;zipfile comment
 
 
ZIP VALUES LEGEND
-----------------
 
       HOST O/S
 
       VALUE  DESCRIPTION               VALUE  DESCRIPTION
       ----- -------------------------- ----- ------------------------
       0      MS-DOS and OS/2 (FAT)     5      Atari ST
       1      Amiga                     6      OS/2 1.2 extended file sys
       2      VMS                       7      Macintosh
       3      *nix                      8 thru
       4      VM/CMS                    255    unused
 
 
       GENERAL PURPOSE BIT FLAG
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       ZIPGENFLG      0       If set, file is encrypted
          or          1       If file Imploded and this bit is set, 8K
       ZIPCFLG                sliding dictionary was used. If clear, 4K
                              sliding dictionary was used.
                      2       If file Imploded and this bit is set, 3
                              Shannon-Fano trees were used. If clear, 2
                              Shannon-Fano trees were used.
                     3-4      unused
                     5-7      used internaly by ZIP
 
       Note:  Bits 1 and 2 are undefined if the compression method is
              other than type 6 (Imploding).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                                                               Page 18
 
 
       COMPRESSION METHOD
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       Stored         0    No compression used
       Shrunk         1    LZW, 8K buffer, 9-13 bits with partial clearing
       Reduced-1      2    Probalistic compression, L(X) = lower 7 bits
       Reduced-2      3    Probalistic compression, L(X) = lower 6 bits
       Reduced-3      4    Probalistic compression, L(X) = lower 5 bits
       Reduced-4      5    Probalistic compression, L(X) = lower 4 bits
       Imploded       6    2 Shanno-Fano trees, 4K sliding dictionary
       Imploded       7    3 Shanno-Fano trees, 4K sliding dictionary
       Imploded       8    2 Shanno-Fano trees, 8K sliding dictionary
       Imploded       9    3 Shanno-Fano trees, 8K sliding dictionary
 
 
       EXTRA FIELD
 
       OFFSET LABEL       TYP  VALUE       DESCRIPTION
       ------ ----------- ---- ---------- ----------------------------
       00     EX1ID       DW   0000        ;0-31 reserved by PKWARE
       02     EX1LN       DW   0000
       04     EX1DAT      DS   EX1LN       ;Specific data for individual
       .                                   ;files. Data field should begin
       .                                   ;with a s/w specific unique ID
       EX1LN+4
              EXnID       DW   0000
              EXnLN       DW   0000
              EXnDAT      DS   EXnLN       ;entire header may not exceed 64k
 
          **************************************************
 
 
                                ZOO
                                ===
 
System of Origin : IBM
 
Original author : Rahul Dhesi
 
FILE FORMAT
-----------
 
     Master Header
          file 1 header
               file 1
          file 2 header
               file 2
          .
          .
          file n header
               file n
EOF
 
 
 
 
 
 
 
 
 
 
                                                               Page 19
 
 
MASTER HEADER
-------------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00                 DS   20
14     ZOOSIG      HEX  A7DCFDC4    ;File signature
18     ZOO1PTR     HEX  00000000    ;pointer to 1st header
1C     ZOO?        HEX  00000000    ;?
20     ZOOMVER     DB   00          ;version making archive
21     ZOOMIN      DB   00          ;minimum version needed to extract
 
 
FILE HEADER
-----------
 
OFFSET LABEL       TYP  VALUE        DESCRIPTION
------ ----------- ---- ----------- ----------------------------------
00     ZOOFSIG     HEX  A7DCFDC4    ;signature
04     ZOOFTYP     DB   00          ;?
06     ZOOFCMP     DB   00          ;Compression method
08     ZOOFNXH     HEX  00000000    ;Nxt hdr ofst frm Start of ZOO file
0A     ZOOFCUR     HEX  00000000    ;Offset of this hdr
0E     ZOOFDAT     DW   0000        ;Last mod file date (MS-DOS)
10     ZOOFTIM     DW   0000        ;Last mod file time (MS-DOS)
12     ZOOFCRC     DW   0000        ;CRC-16
14     ZOOFOSZ     HEX  00000000    ;Uncompressed size
18     ZOOFNSZ     HEX  00000000    ;Compressed size
1C     ZOOFMVER    DB   00          ;version that made this file
1D     ZOOFMIN     DB   00          ;minimum version needed to extract
1E     Z00FDEL     DB   00          ;1 if file deleted from archive
1F     ZOOFCMTP    HEX  00000000    ;pointer to comment, 0 if none
23     ZOOFCMTL    DW   0000        ;length of comment
25     ZOOFNAM     DS   13          ;filename
 
 
ZOO METHOD
----------
 
       NAME        METHOD  DESCRIPTION
       ----------- ------ --------------------------------------------
       Stored              No compression used
       Crunched            Packing, LZW, 4K buffer, var len (9-12 bits)
 
POSITIONING IN FILE
-------------------
 
Begining of 1st File header = Begining of File + ZOO1PTR
       or
                            = Begining of File + $21
 
Begining of File Data = Begining of File Header + $31
 
Begining of Next File = Begining of File + ZOOFNXH
 
Begining of File Comment = Begining of File Header + ZOOFCMTP
 
          **************************************************
 
 
 
 
 
                                                               Page 20
 
 
                             TIME VALUES
                             ===========
 
MS-DOS TIME FORMAT
------------------
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       DATE        15-9       Year
                    8-5       Month
                    4-0       Day (all zeroes means no date)
 
       TIME        15-11      Hours (military)
                   10-5       Minutes
                    4-0       Seconds
 
 
ProDOS/SOS TIME FORMAT (APPLE)
------------------------------
 
       LABEL       BIT        DESCRIPTION
       ----------- --------- -----------------------------------------
       DATE        15-9       Year (0-99)
                    8-5       Month
                    4-0       Day
 
       TIME        15-8       Hour (military time)
                    7-0       Minutes
 
          **************************************************
 
 
                            EXTENDED FILES
                            --------------
 
Extended files are a storage format used by a variety of operating
systems. The filename information points to a file that points to 2 other
files known as the DATA FORK and the RESOURCE FORK.
 
The resource fork contains information about, and/or for the use of, the
data fork. In porting amongst systems the resource fork is probably of
no use.
 
The data fork contains the actual file.
 
          **************************************************
 
 
                              FILENAMES
                              ---------
 
File name lengths, legal characters and format vary amongst the various
operating systems. MS-DOS allows a wider variety of characters while the
Apple operating systems allow longer names with no set format (no
extensions). Any program must be ready to convert a filename into the
current operating system format as well as handle any paths (either by
creating or ignoring them).
 
 
 
 
 
 
                                                               Page 21
 
 
A suggestion would be to use a more universal standard for the filenames
of files that are likely to be ported (ie; Text, ASCII Source, GIF, ASCII
data files, etc) while making no special effort with executable code
(including tokenized BASIC) filenames.
 
Such a standard might be:
 
               a filename of no more than 13 or less than 6 characters
               legal characters A-Z (all uppercase) the '.' and 0-9
               periods to be used only once in a file to make an MS-DOS
                    type extension (ie; .TXT, .DOC, etc)
               the filename MUST start with an alphabetic character (A-Z)
 
**********************************************************************
 
 
Information taken from files by Alex Bamdad, Rahul Dhesi, Jim Dorsey, Don
Elton, Colin James, Phil Katz, Raymond Lau, Gary Little, Andrew Nicholas,
Haruhiko Okumura, Martin Peckham, Mike Sax, Tim Swihart and probably
others.
 
 
-- 
/-] Doug Wokoun [-]aa384[-] Atari SigOp [-/    I support the REVOLUTION!
/-]-^-/\-^-/\-^-/\-^-/\-^-/\-^-/\-^-/\-^[-/              - - -
   |||        |||         |||        |||       "Power without the price!"
  / | \      / | \       / | \      / | \        The Atari Alternative

-- 


-----------------------------------------
Return to message index