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.