Quick Release Sector Transfer

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(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...")
 
(8 intermediate revisions by 2 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>0x00</code> byte. The first character of the file extension is an underscore, followed by a 2-digit hexadecimal volume number.
+
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 || 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:
 +
 
 +
{| 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 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.
 +
 
 +
== Sample files ==
 +
 
 +
* [ftp://ftp.oldskool.org/pub/drivers/Compaq/Portable%20III/setup%20and%20diags/ Compaq Portable III setup and diagnostics]

Revision as of 15:48, 5 September 2017

File Format
Name Quick Release Sector Transfer
Ontology

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:
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 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.

Sample files

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox