Quick Release Sector Transfer
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.
Contents |
Identification
QRST files start with the 4-character ASCII string QRST
, followed by a 0x00
byte. 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 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x00 | 4 bytes | Magic number, QRST
| ||||||||||||||||||
0x04 | 4 bytes | Version number, floating point, little-endian | ||||||||||||||||||
0x08 | 4 bytes | Checksum (version <5), unused (version 5) | ||||||||||||||||||
0x0C | 1 byte | Disk capacity:
| ||||||||||||||||||
0x0D | 1 byte | Current volume number in set | ||||||||||||||||||
0x0E | 1 byte | Count of volumes in set | ||||||||||||||||||
0x0F | 96 bytes | Description, ASCIIZ | ||||||||||||||||||
0x4B | 721 bytes | Disk label, ASCIIZ |
Tracks
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).
Checksum
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).