Quick Release Sector Transfer
(correct description length as per sample file) |
(Added software and sample files link) |
||
Line 149: | Line 149: | ||
At least one QRST file is known to exist which contains two disc images -- it has the structure of two separate QRST files concatenated together, each one describing itself as volume 1 of 1. | At least one QRST file is known to exist which contains two disc images -- it has the structure of two separate QRST files concatenated together, each one describing itself as volume 1 of 1. | ||
− | == | + | == Software == |
+ | * [http://www.seasip.info/Unix/LibDsk/ LIBDSK] | ||
+ | == Sample files == | ||
* [ftp://ftp.oldskool.org/pub/drivers/Compaq/Portable%20III/setup%20and%20diags/ Compaq Portable III setup and diagnostics] | * [ftp://ftp.oldskool.org/pub/drivers/Compaq/Portable%20III/setup%20and%20diags/ Compaq Portable III setup and diagnostics] | ||
* [https://ftp.zx.net.nz/pub/archive/ftp.hp.com/pub/softpaq/sp0000-0500/sp0484.zip QRST file containing two concatenated disc images] | * [https://ftp.zx.net.nz/pub/archive/ftp.hp.com/pub/softpaq/sp0000-0500/sp0484.zip QRST file containing two concatenated disc images] | ||
+ | * https://telparia.com/fileFormatSamples/archive/qrst/ |
Revision as of 15:17, 11 December 2023
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 | 60 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.
Multiple disc images in one file
At least one QRST file is known to exist which contains two disc images -- it has the structure of two separate QRST files concatenated together, each one describing itself as volume 1 of 1.