Routinen für zeichenweise Diskettenoperationen

Die hier vorgestellten Routinen sind solche für zur Zeichen Ein-/Ausgabe bei Diskettenoperationen. Die BDOS-Schnittstelle ist in einem fünf Byte großen Parameterblock abgelegt (Siehe dazu die Module DSKGET und DSKPUT). Werden mehr als eine Datei bearbeitet, müssen diese Bytes jeweils umgepackt werden. Weil dies etwas umständlich ist, habe ich noch andere Routinen geschrieben.

Modul-Entry B: Beschreibung, I: Eingabe-, O: Ausgabeparameter

DSKGET.MAC
DSKGET   B: Lesen eines Bytes von Diskette
  RDBUF   16 Bit DMA Puffer Adresse
  RDBFP   8 Bit relative Pufferzeiger
  RDFCB   16 Bit FCB Adresse
  I: Die drei Felder müssen vor Aufruf gesetzt sein, falls nicht die Voreinstellungen verwendet werden sollen
  O: Die Carryflag ist gesetzt falls alle Rekords gelesen wurden oder die Datei nicht gefunden wurde. Sonst hält der Akku das gelesene Byte

DSKPUT.MAC
DSKPUT   B: Schreiben eines Bytes auf Diskette
@WRREC   B: Setzt DMA Puffer vor Schreiben eines Rekords
  WRBUF   16 Bit DMA Puffer Adresse
  WRBFP   8 Bit relative Pufferzeiger
  WRFCB   16 Bit FCB Adresse
  I: Die drei Felder müssen vor Aufruf gesetzt werden, falls nicht die Voreinstellungen verwendet werden sollen. Der Akku hält das Byte, das geschrieben werden soll
  O: Die Carryflag ist gesetzt, wenn kein Platz mehr auf der Diskette vorhanden ist oder die Datei nicht gefunden wurde

GETEOF.MAC
GETEOF B: Lesen eines Zeichens von Diskette, testen des Dateiendes
  I: ---
  O: Die Carryflag zeigt das Ende der Datei an, entweder physikalisch oder beim Zeichen EOF (Hex 1A - Ctrl-Z). Der Akku hält gelesenes Zeichen

PUTEOF.MAC
PUTEOF B: Schreiben des Endes einer Datei
  I: ---
  O: Die Carryflag ist gesetzt falls kein Platz mehr auf Diskette ist oder die Datei nicht gefunden wurde, sonst nicht gesetzt. Der letzte Rekord der Datei wird auf Diskette geschrieben (Rest mit Ctrl-Z aufgefüllt). Ist in Adresse PUTEOF-1 das Bit 0 gesetzt, so wird zuvor noch ein EOF (Hex 1A - Ctrl-Z) geschrieben.

DSKUGT.MAC
DSKUGT B: Rückschreiben eines gelesenen Zeichens
  I: ---
  O: Die Carryflag zeigt Fehler an.

CLOSEF.MAC
CLOSEF B: Beenden und Schließen einer geöffneten Ausgabe Datei
  I: ---
  O: Carryflag gesetzt falls Datei nicht geschlossen werden konnte, sonst nicht gesetzt.