Deren Bedeutung ist folgendermaßen auf-
geteilt:
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 kei-
nen 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) eingetra-
gen, so hat ein File die Bezeichnung
"? ".
Alle anderen Bits des Filetyp-Bytes ei-
nes Directoryeintrags sind unbenutzt.
Ebenfalls interessant sind das 28. und
das 29. Byte eines Fileeintrags. Damit
können Sie nämlich ebenfalls einen klei-
nen Effekt für den Directoryeintrag er-
zielen. 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 Ausge-
ben eines Directorys die Filelänge di-
rekt 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 Trackbele-
gungen, so erhalten Sie eine andere An-
zahl an freien Blocks. Das DOS addiert
nämlich diese 35 Bytes auf, um die ver-
bleibende 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 Format-
kennzeichens zu verhindern. Öbrigens
sollte ich erwähnen, daß Änderungen an
der BAM jederzeit durch den Validate-
Befehl der Floppy wieder rückgängig ge-
macht werden können. Dieses Floppykom-
mando 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 rekons-
truiert werden.
Und noch etwas ist zu den Directory-
einträ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" ent-
spricht. Gleichzeitig ist das File als
'ungültig' markiert und nicht schreib-
geschützt (wieso auch). Ein solcher Fi-
leeintrag kann jederzeit wiederherge-
stellt werden, indem man einen definer-
ten, gültigen, Filetyp einträgt und an-
schließ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 Direc-
toryblock anlegt. Dadurch erklärt sich
auch, warum neu geschriebene Files
manchmal mitten im Directory zu finden
sind und nicht am Ende. Hier wurde vor-
her 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 aus-
probieren möchten, so nehmen Sie sich
einfach einen Diskmonitor zur Hand und
versuchen Sie einmal einige Directory-
einträge oder den Disk-Header-Block zu
verändern. Weiterhin kann mit dem Pro-
gramm "Disk-Manager" auf dieser MD das
Directory noch weitaus komfortabler ma-
nipuliert werden. Nun wissen Sie ja
wahrscheinlich auch, was dabei ge-
schieht.
Im nächsten Teil des Floppykurses wollen
wir uns mit der Floppybedienung in As-
sembler beschäftigen. Dabei werden wir
dann auch einige Programme erstellen,
die sich die hier kennengelerntern In-
formationen zunutze machen.
(ub)