|
Modul-Entry |
B: Beschreibung, I: Eingabe-, O: Ausgabeparameter |
|
BDOS.MAC |
@BDOS |
IORES |
B: |
Ausführen eines BDOS Aufrufes für Diskettenoperationen |
|
I: |
Registerpaar DE zeigt auf einen FCB, der Akku hält die auszuführende BDOS Funktion |
|
O: |
Das Ergebnisfeld IORES hält den Inhalt des Akkus, IORES+1 das Register H und IORES+2 die BDOS Funktion |
|
FILCHK.MAC |
FILCHK |
@FILCK |
B: |
Testen der CP/M Parameter nach Aufruf eines Programmes |
|
I: |
Bei Aufruf von FILCHK muss der Standard File Control Block (FCB) legale Dateiparameter beinhalten. Bei Aufruf von @FILCK weist Registerpaar DE auf ein FCB. Registerpaar HL zeigt auf eine Liste mit zwei Adressen, die im Fehlerfall geladen werden. |
|
O: |
Die Carryflag ist nicht gesetzt, wenn in der FCB ein legaler Dateiname vorhanden ist. Dann hält das Registerpaar DE die Adresse der FCB. Die Carryflag ist gesetzt, wenn ein illegaler oder leerer Dateiname gefunden wurde, dabei hält Registerpaar DE die erste Adresse aus der Liste, wenn kein Dateiname gefunden wurde, und die zweite Adresse, wenn der Dateiname fehlerhaft ist. |
|
WCARD.MAC |
WCARD |
B: |
Testen ob Wild Card Zeichen (?") in FCB |
|
I: |
Registerpaar DE hält Adresse des FCB |
|
O: |
Zeroflag gesetzt bei ?" im FCB |
|
SETDMA.MAC, (SETBUF.MAC) |
SETDMA |
B: |
Setzen eines neuen DMA Puffers |
(alt: SETBUF) |
I: |
Registerpaar DE hält Adresse eines neuen 128 Byte Puffers |
|
O: |
--- |
|
CURDMA.MAC |
CURDMA |
B: |
Holen des aktuellen DMA Puffers |
|
I: |
--- |
|
O: |
Registerpaar HL hält Adresse des aktuellen DMA Puffers |
|
PARSE.MAC |
PARSE |
B: |
Umwandeln einer Zeichenkette in FCB Format |
|
I: |
Registerpaar DE zeigt auf die Adresse eines Parseblocks mit:
- Die erste Adresse zeigt auf einen Zeichenpuffer
- Die zweite Adresse zeigt auf den FCB
|
|
O: |
Bei normalem Ende ist die Carryflag nicht gesetzt und das Registerpaar HL zeigt auf den nächsten zu untersuchenden Teil der Zeichenkette oder, falls das Ende erreicht ist, enthält es Null. Im Fehlerfall ist Carry gesetzt. |
|
PARSE22.MAC |
PARSE |
B: |
Umwandeln einer Zeichenkette in FCB Format. Diese Routine ist speziell für CP/M 2.2 Anwender gedacht. |
|
I: |
Registerpaar DE zeigt auf die Adresse eines Parseblocks mit:
- Die erste Adresse zeigt auf einen Zeichenpuffer
- Die zweite Adresse zeigt auf den FCB
|
|
O: |
Bei normalem Ende ist die Carryflag nicht gesetzt und das Registerpaar HL zeigt auf den nächsten zu untersuchenden Teil der Zeichenkette oder, falls das Ende erreicht ist, enthält es Null. Im Fehlerfall ist Carry gesetzt. |
|
FPARSE.MAC |
FPARSE |
B: |
Umwandeln einer Zeichenkette in FCB Format |
|
I: |
Registerpaar DE zeigt auf die Adresse eines Parseblocks mit:
- Die erste Adresse zeigt auf einen Zeichenpuffer
- Die zweite Adresse zeigt auf den FCB
|
|
O: |
Bei normalem Ende ist die Carryflag nicht gesetzt und das Registerpaar HL zeigt auf den nächsten zu untersuchenden Teil der Zeichenkette oder, falls das Ende erreicht ist, enthält es Null. Im Fehlerfall ist Carry gesetzt. Der Akku hält 0, wenn kein Punkt in der Zeichenkette gefunden wurde. Akku hält 1, wenn ein Punkt gefunden wurde |
|
XPARSE.MAC |
XPARSE |
B: |
Umwandeln einer Zeichenkette in FCB Format |
|
I: |
Registerpaar DE zeigt auf die Adresse eines Parseblocks mit:
- Die erste Adresse zeigt auf einen Zeichenpuffer
- Die zweite Adresse zeigt auf den FCB
Registerpaar HL zeigt auf eine Liste von Zeichen, die neben den Standardzeichen das Endzeichen des Puffers für die Wandlung angeben. Das erste Byte in der Liste gibt die Länge der folgenden Zeichen an
|
|
O: |
Bei normalem Ende ist die Carryflag nicht gesetzt und das Registerpaar HL zeigt auf den nächsten zu untersuchenden Teil der Zeichenkette oder, falls das Ende erreicht ist, enthält es Null. Im Fehlerfall ist Carry gesetzt. |
|
XFPARS.MAC |
XFPARS |
B: |
Umwandeln einer Zeichenkette in FCB Format |
|
I: |
Registerpaar DE zeigt auf die Adresse eines Parseblocks mit:
- Die erste Adresse zeigt auf einen Zeichenpuffer
- Die zweite Adresse zeigt auf den FCB
Registerpaar HL zeigt auf eine Liste von Zeichen, die neben den Standardzeichen das Endzeichen des Puffers für die Wandlung angeben. Das erste Byte in der Liste gibt die Länge der folgenden Zeichen an
|
|
O: |
Bei normalem Ende ist die Carryflag nicht gesetzt und das Registerpaar HL zeigt auf den nächsten zu untersuchenden Teil der Zeichenkette oder, falls das Ende erreicht ist, enthält es Null. Im Fehlerfall ist Carry gesetzt. Der Akku hält 0, wenn kein Punkt in der Zeichenkette gefunden wurde. Akku hält 1, wenn ein Punkt gefunden wurde |
|
PRSCHK.MAC |
$PRDEL |
$PRPTR |
B: |
Hilfsroutinen für XPARSE und XFPRSE |
|
GETDU.MAC |
GETDU |
B: |
Umwandeln einer Zeichenkette in Laufwerk mit optionaler Angabe des Nutzerbereiches. Diese Routine sollte vor einer der PARSE Routinen aufgerufen werden. |
|
I: |
Registerpaar HL zeigt auf die Zeichenkette, die mit einem Doppelpunkt abgeschlossen sein muss. |
|
O: |
Register B hält das Laufwerk und Register C hält den Nutzer. Register E zeigt an, ob ein Laufwerk und/oder Nutzer definiert wurde. Falls nicht, so stehen in den Registern die gerade eingestellten Werte.
- Bit 0 : Gesetzt bei Eingabe eines Laufwerkes
- Bit 1 : Gesetzt bei Eingabe eines Nutzers
Im Fehlerfall ist Carry gesetzt. Wenn kein Fehler vorliegt, dann zeigt das Registerpaar HL hinter das Zeichen :" oder bleibt unverändert.
|
|
GETDEV.MAC |
GETDEV |
B: |
Umwandeln einer Zeichenkette in ein Gerät. Diese Routine sollte vor einer der PARSE (und GETDU) Routinen aufgerufen werden |
|
I: |
Registerpaar HL zeigt auf die Zeichenkette, die mit einem Doppelpunkt abgeschlossen sein muss. Optional zeigt Registerpaar DE auf eine Erweiterungstabelle, andernfalls hält das Registerpaar Null. Die Tabelle muss aus Elementen von je drei Zeichen bestehen (ohne Doppelpunkt), abgeschlossen mit Null. |
|
O: |
Register C hält den Wert des Gerätes:
0: | NUL: |
1: | CON: |
2: | AUX: |
3: | LST: |
4+x: | Aus Erweiterung (x=0, 1, usw.) |
Carry ist gesetzt, wenn kein Gerät gefunden wurde. Die Registerpaare HL und DE bleiben unverändert.
|
|
SETERR.MAC |
SETERR |
B: |
Einstellen eines Fehlermodus |
|
I: |
Der Akku hält den Fehlermodus. Dieser kann gewählt werden aus:
00H | -> | Warmstart bei Fehler |
01H..FDH | -> | Fehler ausgeben, dann Warmstart |
FEH | -> | Fehler anzeigen, Extended Mode |
FFH | -> | Nur Extended Mode |
|
|
O: |
Fehlermodus eingestellt |
|
GETERR.MAC |
GETERR |
B: |
Ermitteln des eingestellten Fehlermodus |
|
I: |
--- |
|
O: |
Der Akku hält den Fehlermodus:
00H | -> | Warmstart bei Fehler |
01H..FDH | -> | Fehler ausgeben, dann Warmstart |
FEH | -> | Fehler anzeigen, Extended Mode |
FFH | -> | Nur Extended Mode |
|
|
ERROR.MAC |
@ERROR |
B: |
Überprüfen von Fehlern bei Diskettenoperationen |
|
I: |
Gesetzte Carryflag zeigt Fehler an. |
|
O: |
Im Fehlerfall wird geprüft, ob Extended Mode eingestellt ist. Falls ja, dann wird getestet, ob im Feld ERRPC (siehe nächstes Modul) eine Adresse ungleich Null steht. Falls ja, verzweigt das Modul auf diese Adresse, andernfalls Rückkehr mit gesetzter Carryflag. Der Akku hält den Originalwert vom Register H |
|
ERRLNK.MAC |
@ERCOD |
ERRPC |
B: |
Datenfelder zur Überprüfung von Fehlern bei Diskettenoperationen |
|
I: |
--- |
|
O: |
Der Extended Mode steht in @ERCOD. Im Feld ERRPC steht eine optionale Adresse. |
|
ERRIDX.MAC |
ERRIDX |
B: |
Wandeln von Fehlercodes in Indizes |
|
I: |
Feld IORES aus Modul @BDOS ist gefüllt mit Standard und IORES+1 mit erweitertem Code |
|
O: |
Registerpaar DE hält Index. Die Zeroflag ist gesetzt, wenn kein Fehler vorliegt.
Indizes für erweiterten Fehlercode (IORES = -1)
|
|
Registerpaar DE | IORES+1 | Bedeutung |
0 | 0 | Kein Fehler |
2 | 1 | Disk I/O Fehler |
4 | 2 | Read Only Disk |
6 | 3 | Read Only Datei |
8 | 4 | Drive Fehler |
10 | 7 | Datei Passwort Fehler |
12 | 8 | Datei existiert bereits |
14 | 9 | FCB beinhaltet Wildcard (?) |
|
|
Indizes für Standard Fehlercode
|
|
Registerpaar DE | IORES | Bedeutung |
16 | 1 | Ende der Datei oder kein Platz auf der Disk |
18 | 2 | Keine Datenblöcke frei |
20 | 3 | Extent kann nicht geschlossen werden |
22 | 4 | Suche in unbeschriebenem Extent |
24 | 5 | Directory voll |
26 | 6 | Random Rekord Nummer zu groß |
28 | 9 | Ungültiger FCB |
30 | 10 | Disk wurde gewechselt |
|
|
PHYSID.MAC |
PHYSID |
B: |
Testen ob gewähltes Laufwerk vorhanden ist |
|
I: |
Das Registerpaar DE hält die Adresse des FCB |
|
O: |
Carryflag ist gesetzt bei nicht vorhandenem Laufwerk, sonst nicht gesetzt |
|
OPEN.MAC |
OPEN |
B: |
Öffnen einer existierenden Datei. |
|
I: |
Das Registerpaar DE hält die Adresse des FCB |
|
O: |
Carryflag ist gesetzt, wenn die Datei nicht gefunden wurde, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich. Extent und Aktueller Rekord werden auf 0 gesetzt. |
|
CREATE.MAC |
CREATE |
B: |
Erzeugen einer neuen Datei |
|
I: |
Das Registerpaar DE hält Adresse des FCB |
|
O: |
Carryflag ist gesetzt, falls kein neue Directory Eintrag erfolgen kann (Diskette voll oder Datei schon vorhanden), sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
CREATC.MAC |
CREATC |
B: |
Erzeugen einer neuen Datei, falls Datei nicht schon vorhanden |
|
I: |
Das Registerpaar DE hält Adresse der FCB |
|
O: |
Carryflag ist gesetzt, falls kein Platz auf Diskette oder falls die Datei schon vorhanden ist, sonst nicht gesetzt. |
|
CREATD.MAC |
CREATD |
B: |
Erzeugen einer neuen Datei, Löschen einer vorhandenen Datei |
|
I: |
Das Registerpaar DE hält Adresse der FCB |
|
O: |
Carryflag ist gesetzt, falls kein Platz auf Diskette ist, sonst nicht gesetzt. |
|
TRNCAT.MAC |
TRNCAT |
B: |
Vorhandene Dateigröße verkleinern |
|
I: |
Das Registerpaar DE hält Adresse der FCB, in der der Random Rekord Zeiger auf den letzten neuen Rekord der Datei eingestellt sein muss |
|
O: |
Carryflag ist gesetzt, falls die Datei nicht vorhanden ist oder die gewählte Rekordnummer größer ist als die größte Rekordnummer der Datei. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
FILEOP.MAC |
@FILOP |
B: |
Ausführung spezieller Diskettenfunktionen. |
|
I: |
Registerpaar DE hält Adresse des FCB. Der Akku hält die auszuführende BDOS Funktion (z.B. OPEN) |
|
O: |
Die Extension und der Current Rekord im FCB werden auf Null gesetzt. Die Carryflag wird bei fehlerhafter Operation gesetzt und Akku hält Extended Mode Fehlerkode |
|
FILECL.MAC |
@FILCL |
B: |
Ausführung spezieller Diskettenfunktionen |
|
I: |
Das Registerpaar DE hält Adresse des FCB. Der Akku hält die auszuführende BDOS Funktion (z.B. CLOSE) |
|
O: |
Bei fehlerhafter BDOS Funktion wird die Carryflag gesetzt (Abbildung MSB des Fehlercodes), sonst nicht. Der Akku hält Extended Mode Fehlerkode |
|
OPNAPP.MAC |
OPNAPP |
B: |
Öffnen einer vorhandenen Datei, Vorbereitung für Append (Anhängen neuer Daten an das Dateiende) |
|
I: |
Das Registerpaar DE hält Adresse des FCB |
|
O: |
Bei erfolgreichem Öffnen hält der Akku einen relativen Rekordzeiger 0..128 und die Carryflag ist nicht gesetzt, sonst ja. Der Aufrufer muss für die Einstellung des Disk Puffers sorgen. |
|
REOPEN.MAC |
REOPEN |
B: |
Öffnen einer existierenden Datei. |
|
I: |
Das Registerpaar DE hält die Adresse des FCB |
|
O: |
Carryflag ist gesetzt, wenn die Datei mit der gewählten Extent oder Rekordnummer nicht gefunden wurde, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich. Extent und Aktueller Rekord werden übernommen. |
|
SETOPN.MAC |
SETOPN |
B: |
Öffnen einer existierenden Datei. |
|
I: |
Das Registerpaar DE hält die Adresse des FCB, Register L hält die Extent Nummer und Register H hält die aktuelle Rekordnummer |
|
O: |
Carryflag ist gesetzt, wenn die Datei mit der gewählten Extent oder Rekordnummer nicht gefunden wurde, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich. |
|
CLOSE.MAC |
CLOSE |
B: |
Schließen einer geöffneten Datei |
|
I: |
Registerpaar DE hält Adresse des FCB |
|
O: |
Carryflag gesetzt falls Datei nicht gefunden wurde, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
DELETE.MAC |
DELETE |
B: |
Löschen einer vorhandenen Datei |
|
I: |
Registerpaar DE hält Adresse des FCB |
|
O: |
Carryflag ist gesetzt falls Datei nicht vorhanden, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
RENAME.MAC |
RENAME |
B: |
Umbenennen einer Datei |
|
I: |
Registerpaar DE hält Adresse des FCB |
|
O: |
Carryflag gesetzt falls alte Datei nicht vorhanden oder neue Datei schon auf Diskette, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
RENAMC.MAC |
RENAMC |
B: |
Umbenennen einer Datei falls neuer Dateiname unbekannt |
|
I: |
Registerpaar DE hält Adresse des FCB |
|
O: |
Carryflag gesetzt falls alte Datei nicht vorhanden oder neue Datei schon auf Diskette, sonst nicht gesetzt. Im Extended Mode Verzweigung auf Fehlerroutine möglich |
|
RENAMF.MAC |
RENAMF |
B: |
Umbenennen einer Datei |
|
I: |
Registerpaar DE hält FCB der alten Datei und Registerpaar HL weist auf den neuen Namen. |
|
O: |
Siehe Modul RENAME |
|
RENAMI.MAC |
RENAMI |
B: |
Umbenennen einer Datei falls neuer Dateiname unbekannt |
|
I: |
Registerpaar DE hält FCB der alten Datei und Registerpaar HL weist auf den neuen Namen. |
|
O: |
Siehe Modul RENAMC |
|
SETRND.MAC |
SETRND |
B: |
Ermitteln der Random Rekord Zahl (RRN) aus einem FCB |
|
I: |
Registerpaar DE hält Adresse der geöffneten FCB |
|
O: |
Registerpaar HL hält niederwertigen Teil der RRN, Akku hält höchstweriges Byte. Die Zeroflag ist gesetzt, wenn Akku Null ist. |
|
FTELL.MAC |
FTELL |
B: |
Dateipositon für nächstes sequentielles Lesen bestimmen. |
|
I: |
Registerpaar DE hält Adresse der geöffneten FCB |
|
O: |
Registerpaar HL hält niederwertigen Teil der RRN, Akku hält höchstwertiges Byte. |
|
FSEEK.MAC |
FSEEK |
B: |
Datei für nächstes sequentielles Lesen positionieren. |
|
I: |
Registerpaar DE hält Adresse der geöffneten FCB. Registerpaar HL hält niederwertigen Teil der RRN, Akku hält höchstwertiges Byte. Ist in Adresse FSEEK-1 das Bit 0 gesetzt, so wird die RRN um 1 erhöht (durch sequentielles Lesen). |
|
O: |
Carryflag gesetzt falls Datei nicht gefunden oder vollständig gelesen wurde, sonst nicht gesetzt. Der Aufrufer muss für die Einstellung des Disk Puffers sorgen. |
|