Routinen zum Arbeiten mit Rekords

Die hier vorgestellten Routinen sind solche für zur Rekord Ein-/Ausgabe mit variabler Länge bei Diskettenoperationen. Einige Hinweise zu den Routinen finden sich hier.

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

CRERND.MAC
CRERND B: Erstellen einer Leerdatei mit Rekords variabler Länge
  I: Akku hält Länge des Rekords im Bereich 1..255
Registerpaar BC hält Rekordnummer im Bereich 1..65535
Registerpaar DE hält Adresse der FCB
Registerpaar HL hält Adresse eines DMA Puffers für die Einstellung eines Rekords
  O: Die Carryflag ist gesetzt falls Datei schon vorhanden ist oder bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt. Die Datei ist zum Lesen geöffnet

RDRNDR.MAC
RDRNDR B: Lesen eines Rekords mit variabler Länge
  I: Akku hält Länge des Rekords im Bereich 1..255
Registerpaar BC hält Rekordnummer im Bereich 1..65535
Registerpaar DE hält Adresse der FCB
Registerpaar HL hält Adresse eines Textpuffers für gelesenen Rekord
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt und Textpuffer gefüllt mit Zeichen

WRRNDR.MAC
WRRNDR B: Schreiben eines Rekords mit variabler Länge
  I: Akku hält Länge des Rekords im Bereich 1..255
Registerpaar BC hält Rekordnummer im Bereich 1..65535
Registerpaar DE hält Adresse der FCB
Registerpaar HL hält Adresse eines Textpuffers für zu schreibenden Rekord
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt und Textpuffer auf Diskette geschrieben

ATTRND.MAC
ATTRND B: Verändern der Größe einer Datei mit Rekords variabler Länge
  I: Akku hält Länge des Rekords im Bereich 1..255
Registerpaar BC hält neue Rekordnummer im Bereich 1..65535
Registerpaar DE hält Adresse der FCB
Registerpaar HL hält Adresse eines DMA Puffers für die Einstellung eines Rekords
  O: Die Carryflag ist gesetzt falls Datei nicht vorhanden ist oder bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt. Die Datei ist zum Lesen geöffnet

CREREC.MAC
@RNDPR B: Überprüfen der Rekordwerte
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Carryflag zeigt Fehler an
@BLREC B: Auffüllen eines Puffers mit 128 Leerzeichen
  I: Registerpaar HL hält Adresse des Puffers
  O: ---
@OUTRC B: Ausgabe von Leerzeichen auf die Datei
  I: Registerpaar DE hält FCB und HL Puffer
  O: Carryflag zeigt Schreibfehler an

VARREC.MAC
@TSREC B: Überprüfung Rekordparameter
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Carryflag gesetzt bei Parameter Null
@GTPHS B: Wandeln variabler Längen in feste 128 Bytes
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Register B hält Rekordlänge, C relativen Zeiger
@GTREC B: Random Rekord lesen
  I: Registerpaar DE hält Adresse der FCB und Register C hält relativen Rekordzeiger
  O: Carryflag gesetzt bei Dateifehler. Sonst hält Registerpaar DE Startadresse innerhalb des Rekords
@MVREC B: Rekord in/von Textpuffer kopieren
  I: Registerpaar DE hält Quelladresse, HL Zieladresse. Register B hält Rekordlänge, C relativen Rekordzeiger
  O: Die Zeroflag ist gesetzt, wenn Rekord komplett kopiert wurde. Sonst wird Register C auf Null gesetzt
@FXNXT @RNREC B: Nächsten Random Rekord berechnen
  I: @RNREC hält Adresse der laufenden Rekordnummer
  O: ---

INIREC.MAC
INIREC B: Initialisieren einer Random Rekord Datei
  I: Registerpaar DE zeigt auf Parameter Block
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt und Diskette ist mit dem Inhalt des Datenpuffers initialisiert

FIXREC.MAC
FIXREC B: Verändern der Größe einer Datei mit Rekords variabler Länge
  I: Registerpaar DE zeigt auf Parameter Block
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt und neue Rekords sind mit Inhalt des Datenpuffers auf Diskette geschrieben

RDRECF.MAC
RDRECF B: Lesen eines Rekords mit variabler Länge
  I: Registerpaar DE zeigt auf Parameter Block
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekordparameterfehler, sonst nicht gesetzt und Datenpuffer gefüllt mit Rekord

WRRECF.MAC
WRRECF B: Schreiben eines Rekords mit variabler Länge
  I: Registerpaar DE zeigt auf Parameter Block
  O: Die Carryflag ist gesetzt bei Disketten- oder Rekord-parameterfehler, sonst nicht gesetzt und Datenpuffer geschrieben auf Diskette

REC1.MAC
$RNDPR B: Überprüfen der Rekordwerte
  I: Akku und Registerpaar BC halten Rekordinformation
  O: Carryflag zeigt Fehler an

REC2.MAC
$FXNXT $RNREC B: Nächsten Random Rekord berechnen
  I: $RNREC hält Adresse der laufenden Rekordnummer
  O: ---
$GTPHS B: Wandel variabler Länge in feste 128 Bytes
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Register B hält Rekordlänge, C relativen Zeiger
$TSREC $RCLEN B: Überprüfung Rekordparameter
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Carry gesetzt bei Parameter Null, $RCLEN hält Rekordlänge
$MVREC B: Rekord in/aus Datenpuffer kopieren
  I: Registerpaar DE hält Quelladresse, HL Zieladresse. Register B hält Rekordlänge, C relativen Rekordzeiger
  O: Die Zeroflag ist gesetzt, wenn Rekord komplett kopiert wurde. Sonst wird Register C auf Null gesetzt
$MLREC B: Logische Rekordnummer aus variabler Nummer berechnen
  I: Akku und Registerpaar BC halten Rekordinformationen
  O: Registerpaar HL hält logischen Rekord, Akku hält Offset innerhalb des Rekords
$GTREC B: Random Rekord lesen
  I: Registerpaar DE hält Adresse des FCB und Register C hält relativen Rekordzeiger
  O: Carryflag gesetzt bei Dateifehler. Sonst hält Registerpaar DE Startadresse innerhalb des Rekords

REC3.MAC
$BUFSW $DMABF B: Setzen des DMA Puffers auf neuen Wert
  I: Register IY hält Adresse des neuen Puffers
  O: $DMABF hält alte Adresse, neue Adresse eingestellt
$BUFRS B: Rücksetzen des DMA Puffers auf alten Wert
  I: $DMABF hält alte Adresse
  O: Alte Adresse eingestellt
$RNDRG B: Laden der Rekord Parameter in Register
  I: Registerpaar DE zeigt auf Parameterblock
  O: Register aus Parameterblock geladen