This page follows Jim Drew’s SuperCard Pro Image File Specification v2.5
(11 February 2024), which cbmstuff.com publishes as a plain-text file
(scp_image_specs.txt); no PDF edition is offered there. Header and table numbers are little-endian; the flux
values themselves are big-endian.
Header
| Offset | Size | Name | Description |
|---|---|---|---|
0x00 | 3 | Signature | SCP. |
0x03 | 1 | Version | Version of the program that made the image: major in the high 4 bits, minor in the low 4 (0x25 is 2.5). 0 when there is a footer, which then gives the version. |
0x04 | 1 | Disk type | Manufacturer in the high 4 bits, disk type in the low 4: see disk types. |
0x05 | 1 | Revolutions | Revolutions recorded per track, usually 1 to 5. |
0x06 | 1 | Start track | First track recorded, 0 to 167. |
0x07 | 1 | End track | Last track recorded. |
0x08 | 1 | Flags | See flags. |
0x09 | 1 | Bit cell width | 0: 16-bit flux values. Other values give the width in bits (reserved for future use). |
0x0A | 1 | Heads | 0 both sides; 1 side 0 (bottom) only; 2 side 1 (top) only. |
0x0B | 1 | Resolution | Time unit of the flux values: (value + 1) × 25 ns. 0 is 25 ns. |
0x0C | 4 | Checksum | 32-bit sum of every byte from 0x10 to the end of the file, overflow ignored. 0 in read/write images. |
0x10 | 4 × 168 | Track offset table | One uint32 per track, the offset of its track data header from the start of the file; 0 if the track is not present. In extended mode the table starts at 0x80 and can be much longer. |
Table entry n is track n ÷ 2 on side n mod 2, so a single-sided image uses every other entry. All single-sided 40-track disk types (Commodore GCR, Apple II and others) have their start and end track numbers doubled and use 80 tracks of space, so that half tracks can be stored; capturing the half tracks needs a 96 TPI drive, and with a 48 TPI drive those entries stay empty.
Flags
| Bit | Name | When set |
|---|---|---|
| 0 | INDEX | Capture started at the index pulse (clear: at a random point). |
| 1 | TPI | 96 TPI drive (clear: 48 TPI); 5.25-inch disks only. |
| 2 | RPM | 360 RPM (clear: 300 RPM). |
| 3 | TYPE | The flux was normalised, losing some quality (clear: original flux). |
| 4 | MODE | Read/write image, with padded tracks and one revolution (clear: read-only). |
| 5 | FOOTER | An extension footer follows the track data. |
| 6 | EXTENDED | Extended mode, for hard disk and tape images: the track table starts at 0x80. |
| 7 | FLUX CREATOR | Made by a device other than a SuperCard Pro. |
Disk types
| High nibble | Manufacturer | Low nibble: type |
|---|---|---|
0 | Commodore | 0 C64, 4 Amiga, 8 Amiga HD |
1 | Atari | 0 FM single-sided, 1 FM double-sided, 2 FM extended, 4 ST single-sided, 5 ST double-sided, 6 ST single-sided HD, 7 ST double-sided HD |
2 | Apple | 0 Apple II, 1 Apple II Pro, 4 400K, 5 800K, 6 1.44 MB |
3 | PC | 0 360K, 1 720K, 2 1.2 MB, 3 1.44 MB |
4 | Tandy TRS-80 | 0 SSSD, 1 SSDD, 2 DSSD, 3 DSDD |
5 | Texas Instruments | 0 TI-99/4A |
6 | Roland | 0 D-20 |
7 | Amstrad | 0 CPC |
8 | Other | 0 360K, 1 1.2 MB, 4 720K, 5 1.44 MB (2 and 3 reserved) |
E | Tape drive | 0 GCR1, 1 GCR2, 2 MFM |
F | Hard drive | 0 MFM, 1 RLL |
So 0x04 is an Amiga disk and 0x33 a PC 1.44 MB disk.
Track data header
| Offset | Size | Name | Description |
|---|---|---|---|
0x00 | 3 | Signature | TRK. |
0x03 | 1 | Track number | The table index: track × 2 + side for double-sided disks. |
0x04 | 12 each | Revolution entries | One per revolution, at 0x04, 0x10, 0x1C, 0x28 and 0x34. |
| Offset | Size | Name | Description |
|---|---|---|---|
0 | 4 | Index time | How long the revolution took, in 25 ns units (about 8,000,000 for a 300 RPM drive’s 200 ms). |
4 | 4 | Track length | Number of flux values in this revolution (each 2 bytes). |
8 | 4 | Data offset | Where the flux values start, from the start of this track data header. |
Each flux value is a big-endian uint16: the time from one flux transition to the
next, in the header’s resolution units. A value of 0 means no transition came within
65,536 units; add 65,536 for each zero to the next non-zero value (the
specification’s example: 0000 0000 7FFF is 163,839 units). Zeros appear
in “strongbits” (no flux) areas.