fd - floppy disk
The fd* devices refer to the Floppy disk driver using the NEC PD765
floppy disk controller. These diskettes are arrays of 512 byte sectors,
although Minix always works with two sectors at a time due to its 1024
byte block size. You can read or write any number of bytes however,
Minix takes care of cutting and pasting incomplete blocks together.
The driver is normally configured for two floppy disk devices fd0 and
fd1. It can handle two more, but it is unlikely that the average PC can.
On the first access to an fd device (by open(2) or mount(2)), the driver
will execute a series of read tests to determine the floppy type. This
works ok for all floppy types except the true 360k type, because it is
indistinguishable from the 720k type. This only means that the size of
the floppy is not estimated right.
Bits 2-6 of the minor device number may be set to the floppy disk type to
make it known to the driver what type of diskette it is reading or
writing. The non-auto devices should be used for formatting, or when one
wants to be absolutely sure that the device is accessed right. These
devices exist for drive 0:
type device minor media
0 fd0 0 autodetect
1 pc0 4 360k, 5.25"
2 at0 8 1.2M, 5.25"
3 qd0 12 360k in a 720k, 5.25" drive
4 ps0 16 720k, 3.5"
5 pat0 20 360k in a 1.2M, 5.25" drive
6 qh0 24 720k in a 1.2M, 5.25" drive
7 PS0 28 1.44M, 3.5"
Type 4 may also be used for the rarely seen 720k, 5.25" floppies (type 2
made them obsolete fast.) Note that these "types" only describe the
floppies from a software point of view, type 1 and 4 drives use the same
If the format bit (bit 7) is set, then the driver interprets write
commands as track formatting requests. This is used by the format(1)
If the type bits are set to 28, 29, 30, or 31, then the driver uses a
partition table found in sector 0 to partition the floppy. The
partitions of fd0 may be accessed as fd0p0 through fd0p3. See
controller(4) for a description of the partition table, and associated
/dev/fd[0-3], /dev/pc[0-3], /dev/at[0-3], /dev/qd[0-3], /dev/ps[0-3],
/dev/pat[0-3], /dev/qh[0-3], /dev/PS[0-3], /dev/fd[0-3]p[0-3]
format(1), controller(4), part(8).
The driver does not know the size of a 360k diskette in a 360k 5.25"
drive, because it uses the 720k parameters for it. So it will happily
try to read past the end making all kinds of interesting noises. It's a
good thing these drives are practically obsolete.
The partition table is only read when the drive motor is off and only for
an auto or partition device. The driver assumes that a floppy in a drive
with a running motor can't have been replaced all of a sudden.
Kees J. Bot (firstname.lastname@example.org)