Quick Release Sector Transfer
(→Version 5 data) |
|||
Line 4: | Line 4: | ||
}} | }} | ||
− | The QRST disc image format was used by Compaq to distribute disk images of diagnostic software. The file QRST.EXE would be supplied with the disc images to write them to a floppy drive. | + | The QRST disc image format was used by Compaq to distribute disk images of diagnostic software. The file QRST.EXE or QRST5.EXE would be supplied with the disc images to write them to a floppy drive. |
== Identification == | == Identification == | ||
− | QRST files start with the 4-character ASCII string <code>QRST</code> | + | QRST files start with the 4-character ASCII string <code>QRST</code>. The first character of the file extension is an underscore, followed by a 2-digit hexadecimal (version <5) or decimal (version 5) volume number. |
== Structure == | == Structure == |
Revision as of 15:48, 5 September 2017
The QRST disc image format was used by Compaq to distribute disk images of diagnostic software. The file QRST.EXE or QRST5.EXE would be supplied with the disc images to write them to a floppy drive.
Contents |
Identification
QRST files start with the 4-character ASCII string QRST
. The first character of the file extension is an underscore, followed by a 2-digit hexadecimal (version <5) or decimal (version 5) volume number.
Structure
File header
The file begins with a 796-byte header:
Offset | Size | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x000 | 4 bytes | Magic number, QRST
| ||||||||||||||||||
0x004 | 4 bytes | Version number, floating point | ||||||||||||||||||
0x008 | 4 bytes | Checksum (version <5), unused (version 5) | ||||||||||||||||||
0x00C | 1 byte | Disk capacity:
| ||||||||||||||||||
0x00D | 1 byte | Current volume number in set | ||||||||||||||||||
0x00E | 1 byte | Count of volumes in set | ||||||||||||||||||
0x00F | 96 bytes | Description, ASCIIZ | ||||||||||||||||||
0x04B | 720 bytes | Disk label, ASCIIZ | ||||||||||||||||||
0x31B | 1 byte | Always 0 (version <5), always 2 (version 5) |
Version 5 extends the header with an additional 25 bytes:
Offset | Size | Description |
---|---|---|
0x31C | 1 byte | Unknown |
0x31D | 4 bytes | Start of compressed data |
0x321 | 4 bytes | Length of compressed data |
0x325 | 4 bytes | CRC-32 of compressed data |
0x329 | 4 bytes | Unused (start) |
0x32D | 4 bytes | Unused (length) |
0x331 | 4 bytes | Unused (CRC-32) |
Version <5 data
In versions below 5, the header will be followed by the data tracks. These can be in one of three forms:
Uncompressed track
Offset | Size | Description |
---|---|---|
0x00 | 1 byte | Cylinder |
0x01 | 1 byte | Head |
0x02 | 1 byte | 0 indicates uncompressed track |
0x03 | calculated from disk type in header | Track data, uncompressed |
Blank track
Offset | Size | Description |
---|---|---|
0x00 | 1 byte | Cylinder |
0x01 | 1 byte | Head |
0x02 | 1 byte | 1 indicates blank track |
0x03 | 1 byte | Filler byte |
Compressed track
Offset | Size | Description |
---|---|---|
0x00 | 1 byte | Cylinder |
0x01 | 1 byte | Head |
0x02 | 1 byte | 2 indicates compressed track |
0x03 | 2 bytes | Length of compressed data |
0x05 | As specified above | Compressed data |
The compressed data stream consists of alternating literal runs (a byte giving the length of the run, followed by that number of bytes data) and compressed runs (two bytes; first gives number of repeats, second gives byte to repeat).
Version 5 data
In version 5, the data is an entire disk image compressed with PKWARE Data Compression Library's Implode. (This is not the same as PKZIP's Implode.)
Checksum
In versions below 5, the checksum is the sum of all bytes on the disc, each byte multiplied by (1 + its offset on the disc). So for a 360k disc it would be (1 * first byte of first sector) + (2 * second byte of first sector) + ... + (368640 * last byte of last sector).
In version 5, the CRC-32 covers the compressed data.