QIC-3010 and QIC-3020

QIC-3010-MC and QIC-3020-MC are the 900 Oe successors to QIC-80. They keep QIC-80's structure (MFM, 32-sector segments, floppy-style sector IDs, the same header segment and volume table) and raise the density and track count. This page describes only what differs from QIC-80-MC; everything not listed here is the same.

Sources: QIC-3010-MC Rev H, 27 Aug 97 (qic3010h.pdf); QIC-3020-MC Rev H, 20 Mar 96 (qic3020h.pdf).

Recording parameters

Parameter QIC-80 QIC-3010 QIC-3020 Source
Method MFM MFM MFM §3.1
Tape speed 34 ips 22.6 ips 22.6 ips §3.4
Standard data rate 500 kbit/s 500 kbit/s 1 Mbit/s §3.4
Density 14,700 bpi 22,125 bpi 44,250 bpi §3.5
Media 550 Oe 900 Oe 900 Oe §3.3
Tracks, 0.250 in 28 40 40 Cover
Tracks, 0.315 in 36 50 50 Cover

As with QIC-80, each standard allows "other speeds and compatible transfer rates". Tapewyrm records the rate the drive reports in each capture. On the bench a TEAC FT-3010 reported 500 kbit/s with a QIC-3010 tape referenced, and a Colorado 1400 reported 1 Mbit/s with no tape referenced.

Note

Earlier drafts of Tapewyrm's design gave QIC-3010 and QIC-3020 rates of 1 and 2 Mbit/s. Those are drive modes some drives offer, not the standards' rates.

Segments and sector IDs

The segment layout (§5.3.2) has the same fields and order as QIC-80. Only the gap lengths change; for example QIC-3010 uses 224 + 15 bytes of gap 3 and 276 bytes of gap 4B, against QIC-80's 218 + 15 and 274. A floppy controller's MFM decoder does not depend on gap lengths, so Tapewyrm decodes all three formats the same way.

Sector IDs and the coordinate algebra are identical (§5.3.1): FSC 1–128, FTK 0–254, 1,020 segments per floppy side. The longer tracks need more floppy sides: a 300 ft QIC-3020 tape at 429 segments per track has a maximum FSD of 16 and 17,160 segments.

Segments per track

Both standards use a variable format (§5.4.1), with a smaller segment pitch than QIC-80:

Standard Minimum segments per track 300 ft example
QIC-80 int((length_in × 0.97 − 1.36 + 0.68) / 23.88) —
QIC-3010 int((length_in × 0.97 − 1.36 + 0.452) / 15.936) 219
QIC-3020 int((length_in × 0.97 − 1.36 + 0.226) / 8.131) 429

QIC-3010 and QIC-3020 share track counts, so a header's tracks and segments per track can fit both. See Cartridges for how Tapewyrm resolves that.

Header differences

The format parameter record has the QIC-80 layout (§7.1), with these differences:

Offset Size QIC-3010 / QIC-3020 Source
4 1 Format code 04 (variable). QIC-3020 also defines 06 for tapes with more than 65,535 segments, for example 1,000 ft × 0.315 in. QIC-3020-MC Rev H §7.1
5 1 Unused (QIC-80 Rev N: revision level) §7.1
6–13 4 × 2 Header, duplicate header, first and last data segment as words. Unused (zero) under code 06. QIC-3020-MC Rev H §7.1
26 1 Tracks per cartridge: 40 or 50 §7.1
234–249 4 × 4 Code 06 only: header, duplicate header, first and last data segment as doublewords. QIC-3020-MC Rev H §7.1
256 — Start of the bad-sector map, same 3-byte entries as QIC-80. QIC-3020-MC Rev H §7.1–7.2

Format code 6 exists only in QIC-3020, so a header with code 6 identifies the standard on its own. Under code 6 the volume table uses the QIC-113 §5 entry layout, which replaces the start and end segment words at bytes 4–7 with a doubleword count of segments used.

Hole-imprint bad segments

Tracks near the BOT and EOT holes pick up hole imprints. Both standards require the format to map whole segments bad within 4 segments of BOT and EOT on certain tracks (§7.2.1):

Tape width Tracks mapped bad near the holes
0.250 in 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27
0.315 in 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37

Expect these segments in the bad-sector map of every QIC-3010 or QIC-3020 tape. They are not damage.

Tapewyrm notes

  • Modules. The same as QIC-80: tapewyrm.codec.mfm, qiclib.place, qiclib.geometry, qiclib.header. Track counts come from the cartridge profiles, not a separate table.
  • Bench. A factory-preformatted QIC-3010 400 ft tape (Report Tape Status 0x64) and an extended-length QIC-3020 cartridge (40 × 1,475 segments) have been read.
  • Format code 6 is not handled. qiclib.header reads the bad-sector map as a fixed-format mask for every format code other than 4, which is wrong for code 6, and it does not read the doubleword segment fields at 234–249. The QIC-113 §5 volume table entry used under code 6 is not implemented either. No code-6 tape has been seen.

See also