Quick Release Sector Transfer

From Just Solve the File Format Problem
(Difference between revisions)
Jump to: navigation, search
(File header)
m (Structure)
 
(8 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>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 ==
 
== Structure ==
  
 
=== File header ===
 
=== File header ===
 +
 
The file begins with a 796-byte header:
 
The file begins with a 796-byte header:
  
Line 20: Line 21:
 
! Description
 
! Description
 
|-
 
|-
|0x00 || 4 bytes || Magic number, <code>QRST</code>
+
|0x000 || 4 bytes || Magic number, <code>QRST</code>
 
|-
 
|-
|0x04 || 4 bytes || Version number, floating point, little-endian
+
|0x004 || 4 bytes || Version number, floating point
 
|-
 
|-
|0x08 || 4 bytes || Checksum (version <5), unused (version 5)
+
|0x008 || 4 bytes || Checksum (version <5), unused (version 5)
 
|-
 
|-
|0x0C || 1 byte || Disk capacity:
+
|0x00C || 1 byte || Disk capacity:
 
{| class="wikitable"
 
{| class="wikitable"
 
! Value
 
! Value
Line 48: Line 49:
 
|}
 
|}
 
|-
 
|-
|0x0D || 1 byte || Current volume number in set
+
|0x00D || 1 byte || Current volume number in set
 
|-
 
|-
|0x0E || 1 byte || Count of volumes in set
+
|0x00E || 1 byte || Count of volumes in set
 
|-
 
|-
|0x0F || 96 bytes || Description, ASCIIZ
+
|0x00F || 60 bytes || Description, ASCIIZ
 
|-
 
|-
|0x4B || 721 bytes || Disk label, ASCIIZ
+
|0x04B || 720 bytes || Disk label, ASCIIZ
 +
|-
 +
|0x31B || 1 byte || Always 0 (version <5), always 2 (version 5)
 
|}
 
|}
  
=== Tracks ===
+
Version 5 extends the header with an additional 25 bytes:
The header will be followed by the data tracks. These can be in one of three forms:
+
 
 +
{| 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 ====
 
==== Uncompressed track ====
Line 108: Line 134:
  
 
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).
 
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 ===
 
=== 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).  
+
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).
  
== Sample files ==
+
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]
 
* [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

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

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

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.

[edit] Software

[edit] Sample files

Personal tools
Namespaces

Variants
Actions
Navigation
Toolbox