[net.micro.pc] large disks under MSDOS

gordonl@microsoft.UUCP (Gordon Letwin) (01/24/85)

A recent article asked whether the "16-bit FAT" feature of DOS 3.1
would support disk partitions larger than 32 meg.  The answer is no,
although a trick can be used to obtain the same effect.

A FAT element is the fundimental disk allocation unit.  Some systems
call this a "cluster".  If a disk is formatted with 12- bit FAT
entries then there are a maximum of 4096 allocation units.  For a 32
meg disk with 65536 sectors this means that a cluster must be 16
sectors and thus the minimum size of a file or a directory is 16
sectors.  This is very wasteful.

16-bit FATs allow 65536 allocation units and therefore allow a cluster
factor of 1 while supporting a 32meg disk.

The reason that DOS 3.1 doesn't directly support larger disks is that
the standard device driver interface defines 16-bit sector numbers.
As in UNIX V6, the 16-bit sector numbers restrict us to 32 meg
partitions.  Note that the 16-bit FAT modification was internal to the
DOS and the FORMAT utility and transparent to the disk drivers out in
the field.  A change to 32-bit sector numbers will not be transparent
to existing disk drivers.

In summary, the allocation and clustering method and the number of
sectors in a partition are different issues.  The most pressing of the
problems (allocation unit size) was solved in the 3.1 release; the
other problem (32-bit sector numbers) will be supported in a future
release.  Note that the 32-bit sector change requires a device driver
change.  If you wish, you can modify your existing disk device driver
to support 2K "sectors" (clustered by the driver from 4 512-byte
sectors).  You can use 16-bit FATs to support 65K of these 2K pseudo-
sectors and thus address a 128 meg partition with a reasonably sized
cluster factor.