QUANTUM An advanced data compressor and archiver Copyright (c) 1993,1994,1995 Cinematronics All rights reserved Cinematronics 8303 MoPac Expressway Suite B225 Austin, TX 78759 The latest version of Quantum is available on the Cinematronics BBS. The modem phone number is (512) 343-2336. Look for QUANTUM.ZIP in the "General" section. Contents -------------------------------------------------------------------------- 1. Quick-start instructions 2. Description 3. Notes 4. Compressor command-line parameters 5. Decompressor command-line parameters 6. Archive file format 7. @ (at) response file format 8. Disclaimer 1. Quick-start instructions -------------------------------------------------------------------------- Here is the minimum you need to know to get started quickly. PAQ.EXE is the DOS compressor. UNPAQ.EXE is the DOS decompressor. QWIN.EXE is the Windows decompressor. It is much faster (and has more features) than the DOS decompressor. There is no Windows compressor yet. If you want to run PAQ.EXE or UNPAQ.EXE from a Windows DOS box read section 3 (Notes) on how to install WINDPMI.386. These programs can also run under NT. To compress quickly but with poorer compression use PAQ -c1 -t16. To get better compression at the expense of taking more time use PAQ -c4 -t19. Maximum compression is achieved with PAQ -c5 -t20. If you run out of memory use a smaller value for the -t switch. To compress subdirectories see the information below on the -p and -r switches. To span an archive across several disks use the -l switch. 2. Description -------------------------------------------------------------------------- This is version 0.97, a release candidate version. This version is being made available to the public. You may distribute this version freely provided that all of the files are kept intact and unmodified. No technical support is available at this time. This version is fully functional with the following provisions: 1. No attempt was made to optimize for speed in the 32-bit tools. The 16-bit Windows decompressor is optimized and is much faster. For the moment we are concentrating on improving the compression ratio and adding features to the archiver. Future versions of the 32-bit tools will be faster. 2. Decompressing individual files isn't supported in this version of the 32-bit decompressor. The Windows decompressor supports selective decompression. 3. Notes -------------------------------------------------------------------------- Quantum is a state-of-the-art data compressor which is designed to optimize for space over time. Three programs are included: PAQ, UNPAQ and QWIN. Each of these require at least a 386 CPU to run. PAQ and UNPAQ are 32-bit DOS programs and require the Borland DPMI DOS extender. QWIN is a Windows program. Usage instructions are available by running the programs with no command-line parameters. PAQ can accept individual file names on the command-line but you may find it useful to list the files to be archived in a text file and reference that file name by putting an at-sign ("@") in front of the name. Quantum archive file names generally end in a .Q but you can name them anything you wish if you explicitly provide the file name suffix. Quantum is smart enough to detect when its output is being redirected to a file and avoids displaying the running percent-complete information so your log file will contain only what it should. If you want to run the 32-bit tools in a Windows DOS box you will need to install WINDPMI.386 in the [386Enh] section of your SYSTEM.INI file. The SYSTEM.INI file is located in your Windows directory and you can edit it with any text editor (such as NotePad). Look for the line which reads [386Enh] and this immediately after it: device=c:\quantum\windpmi.386 This assumes you put WINDPMI.386 in the C:\QUANTUM directory. If you put it elsewhere be sure to put in the correct path name. If you have the wrong path name Windows will complain when it starts up. After modifying SYSTEM.INI save it and exit and restart Windows for the change to take effect. 4. Compressor command-line parameters -------------------------------------------------------------------------- -c[1..5] Compression level (default = 3) -s[+|-] Sort files by extension/name (default = '+') -t?? Table size (default = 18) -l?? Limit on archive file size -r Recurse subdirectories -p Store paths The -t compressor parameter affects the memory table size which is used during both compression and decompression. This value can range from 10 to 21 with a default of 18. The amount of memory required in the decompressor for each table size setting is: 10: 1K 11: 2K 12: 4K 13: 8K 14: 16K 15: 32K 16: 64K 17: 128K 18: 256K 19: 512K 20: 1,024K 21: 2,048K As you would expect, larger table sizes generally result in better compression but the improvement curve tends to flatten out. The table size reflects the amount of memory required by the decompressor but the compressor needs about six times this amount. A 20-bit table will require one megabyte for decompression and about six megabytes for compression. The compressor "does the right thing". It may elect to use a smaller table size than the one you requested if it sees that the larger size is unnecessary. It will never use a larger size than you requested. The -c parameter controls the compression level. The compression level does NOT effect decompression speed. Lower levels compress faster. Higher levels compress better. The levels one to four are good choices for everyday compression. Level five is substantially slower and large jobs may take several minutes or even hours but it achieves very tight compression. Results will vary depending on the nature of the data you are compressing but I have found that for most cases each compression level tends to be from one to five percent better than the previous level. The -s parameter controls whether file names are sorted before adding them to the archive. Sorting is keyed first by extension and second by name. This heuristic helps to organize files of similar types to be nearer each other in the archive which improves the compression ratio. If you disable sorting please be try to keep files of similar types grouped together for maximum benefit. The -l parameter sets the maximum size of a single volume. Quantum can break up an archive into multiple files so you can pack one archive across many floppy disks. Use -l as many times as you wish to specify the size of each volume. This can be very useful when you want to spread an archive across the free space of several disks. For example, products often ship with some uncompressed files on the first disk (such as the install program) and you might plan to fill out the remaining free space with the first volume of the archive but the following volumes can be as large as a disk. In this case you might use a command line like this: paq -l831488 -l1457664 arc.q *.* The first -l parameter tells Paq to make the first volume no larger than 831488 bytes (in our example, the amount of free space remaining on disk one). The second -l parameter tells Paq to make the second and all subsequent volumes no larger than 1457664 bytes (the size of a 3.5" disk). Use as many -l parameters as you need. The -r parameter controls directory traversal. Use it to store all the files in a subdirectory tree. NOTE: If you need to store the paths as well you will need to use the -p switch. The -p parameter stores the paths of files into the archive. 5. Decompressor command-line parameters -------------------------------------------------------------------------- -x eXtract files (default) -v View the contents of an archive -d Restore Directory structure -t Test archive integrity The -x parameter extracts files. Use -v to view the contents of an archive. The -t parameter tests an archive's integrity without actually decompressing the files. The -d parameter will restore the directory structure contained within the archive. 6. Archive file format -------------------------------------------------------------------------- The format of a Quantum archive is very simple. The first part consists of a header which identifies the file as a Quantum archive and includes a list of the files which reside in the archive. It looks like this: (NOTE: The file format is subject to change.) Bytes Description ----- ----------- 2 Signature, must be 0x44 followed by 0x53. 1 Major version number. 1 Minor version number. 2 The number of files which reside in this archive. 1 The table size required for decompression. 1 Compression flags. This is immediately followed by the list of files: Bytes Description ----- ----------- Var. The length of the file name. See (*) below. Var. The file name. Variable length string. Not zero-terminated. Var. The length of the comment field. See (*) below. Var. The comment field. Variable length string. Not zero-terminated. 4 The fully expanded file size in bytes. 2 The file time (DOS format). 2 The file date (DOS format). (*) Strings are prefixed with their length. This takes one or two bytes. If the length is less than 128 then it is stored directly in one byte. If it is greater than 127 then the high bit of the first byte is set to 1 and the remaining fifteen bits contain the actual length in big-endian format. Immediately following the list of files is the compressed data. 7. @ (at) response file format -------------------------------------------------------------------------- Each line begins with a file name. Other fields are optional. A : The alias for the file. This becomes the file name in the archive. D : Date, in MM/DD/YY format. T : Time, in 24-hour HH:MM:SS format. C : Comment field, a string. Since this may include spaces this must be the last field on the line. Terminated with a . Ex: \bin\bcc.exe Acc.exe D01/01/94 T01:00:00 CThe command-line compiler. 8. Disclaimer -------------------------------------------------------------------------- Cinematronics disclaims all warranties as to this software, whether express or implied, including without limitation any implied warranties of merchantability, fitness for any purpose, functionality, data integrity or protection. Use of this software is entirely at your own risk.