FAT is a File System created by Microsoft in 1977.
Simple and not formally defined at the beginning it became quite complex but loosely defined and actually ruled by Microsoft's implementation.
References
The FAT part of the GNU Parted documentation This gives an good overview of FAT file system and is one of the only documentations to detail Microsoft kludges in FAT12 and FAT16. It also corrects some wrong information of other documentations.
VFAT Long File Names (LFNs): http://perso.orange.fr/pierrelib/filesystems/vfat.html NOTE: Some informations here are missing (the 2 byte fields "is_upper_case_name" at offset 12 and "creation_time_low" at offset 13) and can be found in GNU Parted documentation. The final discussion is quite useless.
Microsoft explains How FAT Works in Windows Server 2003 (Updated: March 28, 2003)