IBM scheme disks are the most common disk format, ever. They're used by a huge variety of different systems, and they come in a huge variety of different forms, but they're all fundamentally the same: either FM or MFM, either single- or double-sided, with distinct sector header and data records and no sector metadata. Systems which use IBM scheme disks include but are not limited to:
- IBM PCs (naturally)
- Atari ST
- late era Apple machines
- Acorn machines
- the TRS-80
- late era Commodore machines (the 1571 and so on)
- most CP/M machines
- NEC PC-88 series
- NEC PC-98 series
- Sharp X68000
- Fujitsu FM Towns
- VAX & PDP-11
- etc
FluxEngine supports reading these. However, some variants are more peculiar than others, and as a result there are specific decoders which set the defaults correctly for certain formats (for example: on PC disks the sector numbers start from 1, but on Acorn disks they start from 0). The IBM decoder described here is the generic one, and is suited for 'conventional' PC disks. While you can read all the variant formats with it if you use the right set of arguments, it's easier to use the specific decoder.
There is a generic decoder which should adjust automatically to whichever disk format you are using, but it's unreliable and not recommended. This format should also be used if you are writing images such as DIM which specify the image format. FluxEngine will use these parameters.
- Format variants:
auto
: try to autodetect the format (unreliable)160
: 160kB 5.25" 40-track 8-sector SSDD180
: 180kB 5.25" 40-track 9-sector SSDD320
: 320kB 5.25" 40-track 8-sector DSDD360
: 360kB 5.25" 40-track 9-sector DSDD720_96
: 720kB 5.25" 80-track 9-sector DSDD720_135
: 720kB 3.5" 80-track 9-sector DSDD1200
: 1200kB 5.25" 80-track 15-sector DSHD1232
: 1232kB 5.25" 77-track 8-sector DSHD1440
: 1440kB 3.5" 80-track 18-sector DSHD1680
: 1680kB 3.5" 80-track 21-sector DSHD; DMF
To read:
fluxengine read ibm --auto -s drive:0 -o ibm.img
fluxengine read ibm --160 -s drive:0 -o ibm.img
fluxengine read ibm --180 -s drive:0 -o ibm.img
fluxengine read ibm --320 -s drive:0 -o ibm.img
fluxengine read ibm --360 -s drive:0 -o ibm.img
fluxengine read ibm --720_96 -s drive:0 -o ibm.img
fluxengine read ibm --720_135 -s drive:0 -o ibm.img
fluxengine read ibm --1200 -s drive:0 -o ibm.img
fluxengine read ibm --1232 -s drive:0 -o ibm.img
fluxengine read ibm --1440 -s drive:0 -o ibm.img
fluxengine read ibm --1680 -s drive:0 -o ibm.img
To write:
fluxengine write ibm --160 -d drive:0 -i ibm.img
fluxengine write ibm --180 -d drive:0 -i ibm.img
fluxengine write ibm --320 -d drive:0 -i ibm.img
fluxengine write ibm --360 -d drive:0 -i ibm.img
fluxengine write ibm --720_96 -d drive:0 -i ibm.img
fluxengine write ibm --720_135 -d drive:0 -i ibm.img
fluxengine write ibm --1200 -d drive:0 -i ibm.img
fluxengine write ibm --1232 -d drive:0 -i ibm.img
fluxengine write ibm --1440 -d drive:0 -i ibm.img
fluxengine write ibm --1680 -d drive:0 -i ibm.img
Some disks, such as those belonging to early CP/M machines, or N88-Basic disks (for PC-88 and PC-98), have more than one format on the disk at once. Typically, the first few tracks will be low-density FM encoded and will be read by the machine's ROM; those tracks contain new floppy drive handling code capable of coping with MFM data, and so the rest of the disk will use that, allowing them to store more data.
FluxEngine can read these fine, but it tends to get a bit confused when it sees
tracks with differing numbers of sectors --- if track 0 has 32 sectors but
track 1 has 16, it will assume that sectors 16..31 are missing on track 1 and
size the image file accordingly. This can be worked around by specifying the
size of each track; see the eco1
read profile for an example.
N88-Basic format floppies can be written by either specifying the n88basic
format, or by using D88 or NFD format images which include explicit sector
layout information.
Writing other formats can be made to work too, by creating a custom format
specifier, using the n88basic
format as an example.
Please get in touch if
you have specific requirements.
Japanese PCs (NEC PC-98, Sharp X68000, Fujitsu FM Towns) spin their floppy drives at 360rpm rather than the more typical 300rpm. This was done in order to be fully backwards compatible with 5.25" disks, while using the exact same floppy controller. Later models of the PC-9821, as well as most USB floppy drives, feature "tri-mode" support which in addition to normal 300rpm modes, can change their speed to read and write 360rpm DD and HD disks.
Neither the FluxEngine or Greaseweazle hardware can currently command a tri-mode drive to spin at 360rpm. However on both devices the FluxEngine software is capable of both reading and writing 300rpm disks at 360rpm and vice versa, so it shouldn't matter.