The second form to specify a device density uses -s fmtstr to explicitly specify each parameter in detail. The argument fmtstr is a comma-separated list of values of the form:
.Sm off sectrac, secsize, datalen, gap, ncyls, speed, heads, f_gap, f_inter, offs2, flags .Sm on
The actual sector size if the size code is 0, or the (ignored) value 0xFF for larger size codes.
gap
The length of the gap 3 parameter for read/write operations.
ncyls
The number of cylinders.
speed
The transfer speed in kilobytes per second. Can be 250, 300, 500, or 1000, but each drive type only supports a subset of these values.
heads
The number of heads.
f_gap
The length of the gap 3 when formatting media.
f_inter
The sector interleave to be applied when formatting. 0 means no interleave, 1 means 1:1 etc.
offs2
The offset of the sector numbers on side 2 (i.e., head number 1). Normally, sector numbering on both sides starts with 1.
flags
A list from one of the following flag values:
+mfm
Use MFM encoding.
-mfm
Use FM (single-density) encoding.
+2step
Use 2 steps per each cylinder (for accessing 40-cylinder media in 80-cylinder drives).
-2step
Do not use 2 steps per cylinder, i.e., access each physical cylinder of the drive.
+perpend
Use perpendicular recording (for 2.88 MB media, currently not supported).
-perpend
Use longitudinal recording.
For any missing parameter, the current value will be used, so only actual changes need to be specified. Thus to turn off a flag bit (like +mfm which is the default for all drive types), the form with a leading minus sign must explicitly be used.