Quick Release Sector Transfer
(Created page with "{{FormatInfo |formattype=electronic |subcat=Disk Image Formats }} The QRST disc image format was used by Compaq to distribute disk images of diagnostic software. The file QRS...") |
m (→Structure) |
||
(13 intermediate revisions by 5 users not shown) | |||
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>, followed by a <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 == | ||
+ | |||
+ | === File header === | ||
+ | |||
+ | The file begins with a 796-byte header: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! Offset | ||
+ | ! Size | ||
+ | ! Description | ||
+ | |- | ||
+ | |0x000 || 4 bytes || Magic number, <code>QRST</code> | ||
+ | |- | ||
+ | |0x004 || 4 bytes || Version number, floating point | ||
+ | |- | ||
+ | |0x008 || 4 bytes || Checksum (version <5), unused (version 5) | ||
+ | |- | ||
+ | |0x00C || 1 byte || Disk capacity: | ||
+ | {| class="wikitable" | ||
+ | ! Value | ||
+ | ! Meaning | ||
+ | |- | ||
+ | |0 || unknown | ||
+ | |- | ||
+ | |1 || 360k | ||
+ | |- | ||
+ | |2 || 1.2M | ||
+ | |- | ||
+ | |3 || 720k | ||
+ | |- | ||
+ | |4 || 1.4M | ||
+ | |- | ||
+ | |5 || 160k | ||
+ | |- | ||
+ | |6 || 180k | ||
+ | |- | ||
+ | |7 || 320k | ||
+ | |} | ||
+ | |- | ||
+ | |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: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | ! 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 ==== | ||
+ | {| class="wikitable" | ||
+ | ! 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 ==== | ||
+ | {| class="wikitable" | ||
+ | ! 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 ==== | ||
+ | {| class="wikitable" | ||
+ | ! 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 DCL Implode|PKWARE Data Compression Library'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. | ||
+ | |||
+ | == 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] | ||
+ | * [https://ftp.zx.net.nz/pub/archive/ftp.hp.com/pub/softpaq/sp0000-0500/sp0484.zip QRST file containing two concatenated disc images] | ||
+ | * {{DexvertSamples|archive/qrst}} |
Latest revision as of 13:33, 6 October 2024
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 |
[edit] 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.
[edit] Structure
[edit] 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) |
[edit] Version <5 data
In versions below 5, the header will be followed by the data tracks. These can be in one of three forms:
[edit] 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 |
[edit] 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 |
[edit] 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).
[edit] Version 5 data
In version 5, the data is an entire disk image compressed with PKWARE Data Compression Library's Implode.
[edit] 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.
[edit] 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.