# FAT12

FAT12 (FAT pour file allocation table, table d'allocation de fichiers) est un système de fichiers développé par Microsoft vers 1980 (intégrant le travail fait par Tim Patterson sur 86-DOS, lui-même s'étant inspiré de CP/M). Il reste le système de fichiers le plus employé sur disquette.
Ce système de fichier a été initialement conçu pour être utilisé sur des disquettes à une époque où leur capacité n'atteignait pas 1 Mio. Le 12 fait référence au nombre de bits employés pour coder les numéros d'unités d'allocation sur le disque.
Le système se nommait au départ simplement FAT. On lui a adjoint le suffixe 12 lors de la sortie du FAT16, pour les différencier car les utilitaires de bas niveau en FAT12 (comme Norton Utilities de l'époque) ne fonctionnaient plus avec FAT16. Cependant, dans les versions récentes des systèmes d'exploitation Microsoft Windows, les disques formatés en FAT12 ou en FAT16 sont tous deux désignés FAT.

## Caractéristiques techniques

Il n'y a pas de différence entre un en-tête FAT12 et FAT16. Le seul moyen de différencier ces deux systèmes de fichiers est de calculer le nombre de clusters. Donc un système ou un programme utilisant l'un de ces deux types de FAT doit savoir utiliser l'autre type de manière transparente.
Dans ce système de fichiers, le nombre total de secteurs d'un disque est stocké sur 16 bits et limite la taille totale du système de fichiers à moins de 32 Mio pour des secteurs de 512 octets, mais par compatibilité avec les OS précédant PC DOS 2.0, la taille des unités d'allocation dépasse rarement 4 kio et le système de fichiers est limité à 16 Mio.
L'autre limite vient du nombre de bits employés pour coder les numéros des unités d'allocation (appelées clusters en anglais), 12 bits permettent 4096 combinaisons. Malheureusement plusieurs documents de Microsoft se contredisent sur la valeur maximale du nombre de clusters. Certains disent 4 084 unités d'allocation, ce nombre descend à 4078 dans un autre ouvrage Microsoft citant les numéros 0xff0 à 0xff6 (soit 4 080 à 4 086) comme inutilisables. En tout état de cause, un programme qui formate un disque a tout intérêt à rester loin de cette limite car chaque programme$^,$ peut s'appuyer sur l'un ou l'autre de ces documents (dont aucun n'est normatif).
Ces deux limitations ne le rendent utilisable que pour des systèmes de fichiers qui semblent aujourd'hui de petite taille. La taille maximale est proportionnelle à la taille des clusters :
* avec 4 084 clusters de 512 octets, on ne peut utiliser que des disques de moins de 2 Mio (4 084 × 512 = 2 091 008) ;
* avec des clusters de 1 Kio, on arrive à 4 Mio ;
* avec des clusters de 2 Kio, on arrive à 8 Mio ;
* avec des clusters de 4 Kio, on arrive à 16 Mio.
La limite atteinte par FAT12 avant le passage à FAT16 fut 16 Mio.
Une autre limitation technique est que le nombre d'entrées dans le répertoire racine est fixé au moment du formatage. La FAT16 et FAT32 ont la même limitation. Si on doit mettre beaucoup de fichiers sur un média formaté en FAT, il est recommandé de créer et d'utiliser un répertoire à la racine plutôt que de les mettre les fichiers directement à la racine. De plus l'emploi des noms longs (voir VFAT) crée des entrées supplémentaires dans les répertoires. Il est donc préférable de ne pas utiliser des noms longs dans le répertoire racine.
Ce système de fichiers est toujours utilisé par les versions les plus récentes de Microsoft Windows, mais seulement pour les disquettes (qui font 1,44 Mo) et les anciennes clefs USB (moins de 16 Mio).