Deren Bedeutung ist folgendermaßen aufgeteilt:
Bits2-0 Wert Filetyp
000 0 DEL (deleted) 001 1 SEQ (sequentielle Datei) 010 2 PRG (Programmdatei) 011 3 USR (Userdatei) 100 4 REL (relative Datei)
Wie Sie sehen, können aber noch andere
Werte eingetragen werden, die zwar keinen Filetyp spezifizieren, aber dennoch
möglich sind. Dies hat zur Folge, daß
die Files ganz merkwürdige Bezeichnungen
erhalten. Wird zum Beispiel der Wert 15( Bit 3 auch noch mitbenutzt) eingetragen, so hat ein File die Bezeichnung
" ?" .
Alle anderen Bits des Filetyp-Bytes eines Directoryeintrags sind unbenutzt.
Ebenfalls interessant sind das 28 . und
das 29 . Byte eines Fileeintrags. Damit
können Sie nämlich ebenfalls einen kleinen Effekt für den Directoryeintrag erzielen. Da hier die Länge des Files in
Blocks angegeben ist, kann diese auch
verändert werden. Dies hat keinerlei
Einfluß auf das Laden oder Speichern
eines Files, da die Blockangabe vom DOS
nur dazu verwendet wird, um beim Ausgeben eines Directorys die Filelänge direkt greifbar zu haben. Wenn Sie nun
jemanden verblüffen wollen, so kann hier
z. B. der Wert 0 eingetragen werden. Laut
Directory befindet sich in dem File dann
nichts. Trotzdem kann sich dahinter ein
Wahnsinns-Programm verstecken.
Einen änhlichen Effekt können Sie auch
durch Manipulation der BAM erzielen.
Schreiben Sie hier nämlich andere Werte
in die jeweils 0 . Bytes der Trackbelegungen, so erhalten Sie eine andere Anzahl an freien Blocks. Das DOS addiert nämlich diese 35 Bytes auf, um die verbleibende Speicherkapazität (" Free
Blocks") einer Diskette zu ermitteln und
im Directory anzeigen zu können. Achten
Sie danach jedoch bitte darauf, daß Sie
nichts mehr auf eine solche Diskette
speichern, da nun nämlich vermeintliche
freie Blöcke beschrieben werden könnten, was zu erheblichem Datenverlust führen
kann. Am Besten ist es dann, einen
Schreibzugriff durch Ändern des Formatkennzeichens zu verhindern. Öbrigens
sollte ich erwähnen, daß Änderungen an
der BAM jederzeit durch den Validate-Befehl der Floppy wieder rückgängig gemacht werden können. Dieses Floppykommando geht nämlich nach und nach alle
Files der Diskette durch und merkt sich
die jeweils belegten Blocks. Hiernach
kann die ursrüngliche BAM wieder rekonstruiert werden.
Und noch etwas ist zu den Directoryeinträgen zu sagen. Wenn Sie ein File löschen, so wird es keineswegs komplett
von der Diskette entfernt. Das einzige, was der Scratch-Befehl bewirkt, ist das
Freigeben der belegten Diskettenblocks.
Desweiteren wird als Filetyp der Wert 0 eingetragen, was dem Filetyp " DEL" entspricht. Gleichzeitig ist das File als
' ungültig' markiert und nicht schreibgeschützt ( wieso auch) . Ein solcher Fileeintrag kann jederzeit wiederhergestellt werden, indem man einen definerten, gültigen, Filetyp einträgt und anschließend die Diskette validiert. Nun
ist das File wieder so vorhanden, wie
vor dem Löschen ( inklusive des Vermeks, welche Blocks belegt sind) .
Wird jedoch zwischenzeitlich etwas auf
der Diskette gespeichert, so sucht sich
das DOS zunächst immer einen solchen
' leeren' Fileeintrag heraus, bevor es
einen neuen Eintrag im letzten Directoryblock anlegt. Dadurch erklärt sich
auch, warum neu geschriebene Files
manchmal mitten im Directory zu finden sind und nicht am Ende. Hier wurde vorher an dieser Stelle ein altes File
gelöscht.
Dies soll es dann wieder einmal gewesen
sein für diesen Monat. Wenn Sie Ihre neu
hinzugewonnenen Kenntnisse einmal ausprobieren möchten, so nehmen Sie sich
einfach einen Diskmonitor zur Hand und
versuchen Sie einmal einige Directoryeinträge oder den Disk-Header- Block zu
verändern. Weiterhin kann mit dem Programm " Disk-Manager" auf dieser MD das
Directory noch weitaus komfortabler manipuliert werden. Nun wissen Sie ja
wahrscheinlich auch, was dabei geschieht.
Im nächsten Teil des Floppykurses wollen
wir uns mit der Floppybedienung in Assembler beschäftigen. Dabei werden wir
dann auch einige Programme erstellen, die sich die hier kennengelerntern In- formationen zunutze machen.
(ub)