Over the years, the FAT16 system has gone through many evolutionary changes.
Originally, all files were written to a single file list, what we now refer to as the root directory. This single directory format had many limitations including limiting the number of separate files that could be written on a disk. However, since hard drives were essentially unknown at the time and a 5¼-inch diskette held 100KB (that’s kilo, not mega), there were far more serious limits than the number of files that could be written. And as limited as the capacity was, few people noticed or complained, since the alternative was recording on a cassette—yes, the kind you listen to music on (or did before the advent of CDs).
Later, as capacities rose (first was the 360KB diskette, then the 1.2KB, and finally the 1.4KB 3½-inch diskette), the need for a new format quickly became obvious. The concept of subdirectories was borrowed from the Unix world. The still-limited root directory entries are used to point to locations that are not on the root directory tracks, where additional directory data—called subdirectories—is written. These subdirectory structures are stored as what are essentially special types of files.
Finally, a further enhancement was introduced with Windows 95 to allow long filenames. The original 8.3 format filenames were kept, but an extension to the directory was used to store a long filename. Of course, both OS/2 and Windows NT allowed long filenames before Windows 95 was introduced, but these were supported by properties of the quite different HPFS and NTFS file systems, which are not DOS/FAT-compatible.
Even with all of these advances, however, the FAT file system remained firmly committed to a 16-bit addressing system, which imposed its own limitations. Now, in its latest incarnation, we have the FAT32 file system.