home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS 1992 December
/
simtel1292_SIMTEL_1292_Walnut_Creek.iso
/
msdos
/
arc_lbr
/
sqz1082e.exe
/
TECH.ENG
< prev
next >
Wrap
Text File
|
1992-09-09
|
6KB
|
149 lines
The information in this document may, or may not be correct, but is given
as a bonus. Someone might find it useful.
-------------------------------------------------------------------------------
DOSversion: 3.3 and onwards,
2.0 to 3.2 will work as long as you use UPPERCASE in all
filenames and don't use SFX/SFXjr.
Memory: For packing; ≈400 kB, but more than 330 kB
Decoding; ≈96 kB
These figures does not include SQZ itself which requires
≈50 kB and filenames which call for their length + 5 bytes
in overhead (450/380 : 150).
These figures can be shrinked at cost of speed.
Others: Given filespec may result in a maximum of 4096 filenames
per run. The archive in itself will handle any number
of files.
A maximum of 64 filespec's for files to skip.
A maximum of 16 extension's for files to copy.
-------------------------------------------------------------------------------
Archive header:
offset 0..4: Id: HLSQZ (072d 076d 083d 081d 090d)
5: Version: 1 (049d)
6: OS: 76543210
xxxxx000 0 PC-DOS
xxxxx001 1 OS/2
xxxxx010 2 MVS
xxxxx011 3 HPSF(OS/2)
xxxxx100 4 Amiga
xxxxx101 5 Macintosh
xxxxx110 6 *nix
xxxxx111 7 Future use
XXXXXxxx Future use
7: Flag 76543210
xxxxxxx1 Big Endian
xxxxxx1x DOS format for Date and Time
in file: E8631E19.
Decoded: 1992/08/30 12.31.32
MSB LSB
19 1E 63 E8
76543210765432107654321076543210
00011001000111100110001111101000
YYYYYYYMMMMDDDDDHHHHHMMMMMM22222
12 8 30 12 31 16
+=1980 *=2
1992 08 30 12 31 32
xxxxx1xx Security Envelope
XXXXXxxx Future use
-------------------------------------------------------------------------------
File header:
offset Size Comment
0 1 Header size and type
0 -> End of archive
1 -> Comment
2 -> Password
3 -> Security envelope
4..18 -> future use
19.. -> normal file header
if normal file
1 1 Header algebraic sum & 0FFh
0 1:76543210
xxxxXXXX Method 0..4(15)
xxx1xxxx Security envelope should follow
XXXxxxxx Future use
1 4 Compressed size
5 4 Original size
9 4 Last DateTime
13 1 Attributes
14 4 CRC
18.. (size-18) filename, w/o \0.
If End of archive, done
If > 18 normal file
Read HeaderSum(1 byte)
Read size bytes
Calculate headersum
{short i; unsigned short s = 0U;
for(i = 0; i < size; i++)
s += header[i];
if(headersum != (unsigned char)s) WRONG HEADERSUM
header[size] = '\0'; // just to makes things easier to handle, ie.
// zero terminate filename
<= 18
Next word gives number of bytes which are used, excluding this word
COMMENT:
0 2 Number of bytes in comment
Uncompressed size = this field - 7
2 2 Number of bytes compressed
4 1:76543210
xxxxXXXX Method 0..4(15)
xxx1xxxx Security envelope should follow
XXXxxxxx Future use
5 4 CRC
9 size-9 Comment
PASSWORD:
0 2 4
2 4 CRC for password
**************************************************************
I'm not done thinking about this one yet, so I'll be in touch.
**************************************************************
SECURITY ENVELOPE:
0 2 n
n 1 None of your buisness (to be honest, I'm not done yet)
OTHERWISE:
0 2 Number of bytes to skip
-------------------------------------------------------------------------------
Errorlevels
#define EC_NO 0 No error
#define EC_NOMEM 1 Out of memory
#define EC_WRITE_ARC 2 Error writing to archive file
#define EC_WRITE_TMP 3 Error writing to temp archive file
#define EC_WRITE_OUT 4 Error writing to extracted file
#define EC_READ_ARC 5 Error reading from archive file
#define EC_READ_INP 6 Error reading from file to archive
#define EC_OPEN_ARC 7 Error opening archive file
#define EC_OPEN_INP 8 Error opening file to archive
#define EC_OPEN_SFX 9 Error opening SFX/SFXjr.exe
#define EC_OPEN_TMP 10 Error opening temp (archive) file
#define EC_CREATE_ARC 11 Error creating archive file
#define EC_CREATE_TMP 12 Error creating temp archive file
#define EC_CREATE_OUT 13 Error creating file to extract
#define EC_CREATE_SFX 14 Error creating archive file EXE
#define EC_CLOSE_ARC 15 Error closing archive file
#define EC_CLOSE_TMP 16 Error closing temp archive file
#define EC_CLOSE_INP 17 Error closing file to archive
#define EC_CLOSE_OUT 18 Error closing extracted file
#define EC_HEADER_SUM 19 Archive corrupted
#define EC_CORRUPT_HDR 20 Archive corrupted
#define EC_2_MANY_EXT 21 Too many extensions to copy (<= 16)
#define EC_UNKNOWN_SWITCH 22 Unknow switch given
#define EC_ILL_COMB_SW 23 Illegal combination of switches, eg.
include subdirectories and strip path
#define EC_CBREAK 24 User C-Break
#define EC_UNKNOWN 25 Unknown type of archive file
#define EC_NOT_ON_SFX 26 Those commands not allowed on SFX
#define EC_NOT_MS_DOS 27 Archive file was not for MS-DOS
#define EC_CRC 28 CRC-errors in Extracting/Testing
#define EC_SQZ_CORRUPT 29 Someone has tangled with SQZ,
look out for virii or a hacker.
#define EC_CORRUPT_ARC 30 Corrupted archive file.