     Procedures beschrijvingen van Speed Disk

     Speed Disk is een programma om de inhoud van de harddisk in een 
     zodanige cluster volgorde te zetten dat de disk-access tijd verkort 
     wordt. Het belangrijkste is dat alle directory clusters in de eerste 
     clusters van de disk komen te staan. Om de verwerkings snelheid te 
     verhogen wordt er een verplaatsing methode gebruikt waarbij van te 
     voren al kan worden bepaald wat NIET verplaatst hoeft te worden.

     Er wordt begonnen in de root, daarna wordt iedere sub-directory een 
     voor een afgewerkt.

     Als eerste wordt een directory gesorteerd. De voorwaarden voor het 
     sorteren zijn het attribuut byte en de naam. Bestanden met de hoogste 
     attributen komen bovenaan in de directory, dus eerst directories, 
     daarna het volume label, daarna nog bestanden met Read-only, System of 
     Hidden vlaggen. Daarna worden de namen gesorteerd van A-Z. Als een 
     directory gesorteerd is wordt deze weer naar disk geschreven.

     Iedere directory die ingelezen wordt, wordt verkort opgeslagen. Iedere 
     entry van 32 bytes bevat 10 bytes die Reserved zijn, deze worden niet 
     meegenomen in de tabel die in het geheugen komt te staan. Daarnaast 
     wordt er nog een tabel bijgehouden waarin staat welke clusters 
     chain-start clusters zijn, bij welke directory entry deze horen, in 
     welke sector deze entry staat en in welke cluster dit weer is. Op deze 
     manier kan bij het verplaatsen van een cluster meteen worden 
     teruggezocht welke directory entry moet worden bijgewerkt.

     Geheugen gebruik overzicht:

     0100h-xxxxh : Programma code
     xxxxh-yyyyh : 2 FAT tabellen
     yyyyh-zzzzh : Directory entries tabel
     zzzzh-endMem: Inlees buffer voor een directory (achteruit vullen)

     De twee FAT tabellen zijn de originele FAT, waarin later de wijzigingen
     aangebracht gaan worden en waar de chains in staan. Het andere buffer 
     bevat verwijzingen voor het verplaatsen. De cluster positie in het 
     tweede buffer bevat het cluster nummer waar de data nu staat.

     De tabel met directory entries bestaat uit een word met daarin een type 
     code, een cluster nummer en eventueel een sector offset en entry 
     offset. In het cluster word staat in het hoogste nibble de type code. 
     Deze is 1 voor een file-chain, 2 voor een directory-chain en 4 voor een 
     directory-cluster en 8 voor directory-chain die nog niet verwerkt is. 
     De tabel komt er als volgt uit te zien:

     (4) 4xxx + 00 + 00: Directory cluster nummer
     (4) 1xxx + ss + oo: File start-chain cluster
     (4) 2xxx + ss + oo: Directory start-chain cluster
     (4) 8xxx + ss + oo: Als 2xxx, maar nog niet verwerkt

     xxx  is het cluster nummer
     ss   is het sector nummer in de cluster
     oo   is de offset in de sector *16

     De oo *16 is als MSB en *2 het adres in de sector waar de entry 
     begint. De ss kan worden gebruikt om snel het juiste sector nummer te 
     bereken waar de directory entry gevonden kan worden.

     Als bit 15 gezet is van het cluster nummer word, dan is het een 
     sub-directory die wel gevonden is, maar die nog niet opgenomen is in de 
     tabel. Bij iedere nieuwe ingelezen directory kan door de tabel verder 
     gezocht worden naar de eerst volgende entry waar bit 15 gezet is. Deze 
     moet dan gewist worden en de directory ingelezen worden etc. etc.

     De tabel met directory entries kan met een zoek en vervang snel worden 
     aangepast als er een cluster verplaatst is dat van een directory is.

     Als een cluster verplaatst wordt, dan kan het cluster zijn dit het 
     begin van een chain is of een cluster dat verderop in de chain zit. Als 
     het niet de eerste van de chain is kan eenvoudig de voorganger gezocht 
     worden en de verwijzing van daaruit gewijzigd. Als de cluster een 
     directory cluster is moet ook in de tabel bij de 4xxx het cluster 
     nummer gewijzigd worden. Als het wel de eerste cluster van de chain is 
     moet in een directory registratie ook de verwijzing aangepast worden en 
     naar disk geschreven.

