BDOS Funktionsübersicht

CP/M 2.2, CP/M 3.0, MP/M 2.1 [Reine MP/M Funktionen im Anhang]

Zusammengestellt von Jim Lopushinsky

Hinweise:

.Ausdruck bedeutet die Adresse des Ausdrucks.
Rot zeigt Erweiterungen an
  Unterstützt von (X)  
FUNKCP/M 2.2CP/M 3.0MP/M 2.1FUNKTIONSNAMEEINGABE
PARAMETER
ZURÜCKGEGEBENE
WERTE
0XXX System Rücksetzen keiner keine
1XXX Konsoleingabe keiner A = Zeichen
2XXX Konsolausgabe E = Zeichen keine
3XX- Hilfsgeräteeingabe keiner A = Zeichen
3--X Unbearbeitete Konsoleingabe keiner A = Zeichen
4XX- Hilfsgeräteausgabe E = Zeichen keine
4--X Unbearbeitete Konsolausgabe E = Zeichen keine
5XXX Druckerausgabe E = Zeichen keine
6XXX Direkte Konsolein/ausgabe E = 0FFH/
0FEH/
0FDH/
char
A = Zeichen/
Status/
Zeichen/
keine
7X-- I/O Byte holen keiner A = IOBYTE
7-X- Hilfsgerätestatus für Eingabe keiner A = 00/0FFH
8X-- I/O Byte setzen E = IOBYTE keine
8-X- Hilfsgerätestatus für Ausgabe keiner A = 00/0FFH
9XXX Zeichenkette ausgeben DE = .Zeichenkette keine
10XXX Zeile über die Konsole einlesen DE = .Zeile Zeichen in der Zeile
11XXX Konsolstatus holen keiner A = 00/01
12XXX Versionsnummer holen keiner HL = Version
13XXX Disksystem zurücksetzen keiner Hinweis1
14XXX Select Disk E = Disk Number Hinweis2
15XXX Öffnen einer Datei DE = .FCB A = Verzeichniswert3
16XXX Datei schließen DE = .FCB A = Verzeichniswert
17XXX Suche nach erster Datei DE = .FCB A = Verzeichniswert
18XXX Suche nach nächster Datei keiner A = Verzeichniswert
19XXX Datei löschen DE = .FCB A = Verzeichniswert
20XXX Sequentiellen Rekord lesen DE = .FCB A = Fehlerkode
21XXX Sequentiellen Rekord schreiben DE = .FCB A = Fehlerkode
22XXX Datei anlegen DE = .FCB A = Verzeichniswert
23XXX Datei umbenennen DE = .FCB A = Verzeichniswert
24XXX Login Vektor holen keiner HL= Login Vektor
25XXX Aktuelles Laufwerk holen keiner A = Aktuelle Laufwerks #
26XXX DMA Adresse festlegen DE = .DMA keine
27XXX Belegungsvektor holen keiner HL= .Belegungsvektor
28XXX Schreibschutz für aktuelles Laufwerk keiner keine
29XXX Schreibschutzvektor holen keiner HL= Schreibschutzvektor
30XXX Dateiattribut setzen DE = .FCB A = Verzeichniswert
31XXX Adresse des DPB holen keiner HL= .DPB
32XXX Nutzerbereich (User Area) setzen/holen E = 0FFH/
Nutzernummer
A = Aktueller Nutzer/
keine
33XXX Random Rekord lesen DE = .FCB A = Fehlerkode
34XXX Random Rekord schreiben DE = .FCB A = Fehlerkode
35XXX Dateigröße bestimmen DE = .FCB R0, R1, R2
36XXX Random Rekord festlegen DE = .FCB R0, R1, R2
37XXX Laufwerk zurücksetzen DE = Laufwerksvektor A = Fehlerkode
38-XX Laufwerk belegen DE = Laufwerksvektor keine
39-XX Laufwerk freigeben DE = Laufwerksvektor keine
40XXX Random Rekord schreiben mit Auffüllen von Nullen DE = .FCB A = Fehlerkode
41--X Rekord schreiben und überprüfen DE = .FCB HL= Fehlerkode
41-X- Rekord schreiben und überprüfen DE = .FCB A = 0FFH
42-XX Lock Rekord DE = .FCB HL = Fehlerkode
43-XX Unlock Rekord DE = .FCB HL = Fehlerkode
44-XX Multi-Sektor Anzahl festlegen E = # Sektoren A = Return Code
45-XX BDOS Fehlermodus festlegen E = Fehlermodus keine
46-XX Freien Laufwerksplatz bestimmen E = Laufwerk # Anzahl freier Sektoren
47-XX Anderes Programm aufrufen E = Aufrufmarke keine
48-XX Puffer leeren E = Leerungskode A = Fehlerkode
49-X- Systemkontrolle holen/setzen DE = .SCB PB Block A = Rückgabe Byte
HL= Rückgabe Wort
50-X- Direkter Bios Aufruf DE = .BIOS PB BIOS Rückgabe
59-X- Overlay laden DE = .FCB A = Fehlerkode
60-X- Aufruf einer Residenten System Erweiterung DE = .RSX PB A = Fehlerkode
98-X- Blöcke freigeben keiner keine
99-X- Datei kürzen DE = .FCB A = Verzeichniswert
100-XX Verzeichnisnamen festlegen DE = .FCB A = Verzeichniswert
101-XX Daten aus Verzeichnisnamen laden E = Drive A = Daten aus Namen
102-XX Datumsstempel und Passwortmodus lesen DE = .FCB A = Verzeichniswert
103-XX Passwort und Sicherung für Datei setzen DE = .FCB A = Verzeichniswert
104-XX Datum und Zeit setzen DE = .DAT keine
105-XX Datum und Zeit holen DE = .DAT Datum und Zeit
A = Sekunden
106-XX Passwort voreinstellen DE = .Passwrd keine
107-XX Seriennummer holen keiner DE = .Serial # Feld der Seriennummer
108-X- Programm Rückgabe-Code holen/setzen DE = 0FFFFH/
Code
HL= Rückgabe-Code
keine
109-X- Konsole-Einstellung holen/setzen DE = 0FFFFH/
Einstellung
HL= Konsoleinstellung/
keine
110-X- Endzeichen holen/setzen DE = 0FFFFH/
E = Endzeichen
A = Endzeichen/
keine
111-X- Textbereich ausgeben DE = .CCB keine
112-X- Textbereich drucken DE = .CCB keine
115-XX Graphische Erweiterung DE = Kontrollfeld Kontrollfeld
152-XX Dateinamen bestimmen DE = .PFCB Hinweis4
Die MP/M Funktionen
128--X Absolute Memory Request DE = .MD A = Fehlerkode
129--X Relocatable Memory Request DE = .MD A = Fehlerkode
130--X Memory Free DE = .MD keine
131--X Poll E = Device keine
132--X Flag Wait E = Flag A = Fehlerkode
133--X Flag Set E = Flag A = Fehlerkode
134--X Make Queue DE = .QCB keine
135--X Open Queue DE = .UQCB A = Fehlerkode
136--X Delete Queue DE = .QCB A = Fehlerkode
137--X Read Queue DE = .UQCB keine
138--X Conditional Read Queue DE = .UQCB A = Fehlerkode
139--X Write Queue DE = .UQCB keine
140--X Conditional Write Queue DE = .UQCB A = Fehlerkode
141--X Delay DE = # ticks keine
142--X Dispatch keiner keine
143--X Terminate Process E = Term. Code keine
144--X Create Process DE = .PD keine
145--X Set Priority E = Priority keine
146--X Attach Konsol keiner keine
147--X Detach Konsol keiner keine
148--X Set Konsol E = Konsol keine
149--X Assign Konsol DE = .APB A = Fehlerkode
150--X Send CLI Command DE = .CLICMD keine
151--X Call Resident Sys Proc DE = .CPB HL= result
153--X Get Konsol Number keiner A = Konsol #
154--X System Data Address keiner HL= Sys Data Addr
155--X Get Date and Time DE = .TOD date and time
156--X Return Process Descriptor keiner HL= PD Addr
157--X Abort Specified Process DE = .ABT PB A = Fehlerkode
158--X Attach List keiner keine
159--X Detach List keiner keine
160--X Set List E = List # keine
161--X Conditional Attach List keiner A = Fehlerkode
162--X Conditional Attach Konsol keiner A = Fehlerkode
163--X MPM Version Number keiner HL= Version #
164--X Get List Number keiner A = List #

Fußnoten
1. In der Version CP/M 2.2 wird Laufwerk A: als Standardlaufwerk eingestellt. Als Rückgabe erhält man 0FFH, wenn eine Datei gefunden wurde, deren Name mit $ beginnt, sonst 0.
Unter MP/M 2.1 wir bei Erfolg eine 0 zurückgegeben. Das Resultat ist 0FFH, wenn andere Prozesse Dateien geöffnet haben in Wechsel- oder schreibgeschützten Laufwerken.
2. Setzt das Laufwerk im Akku als aktuelles Laufwerk; meldet das Laufwerk an. Gibt 0 bei Erfolg zurück oder 0FFh im Fehlerfall. Unter MP/M II und späteren Versionen hält das Register H die physikalische Fehlernummer.
3. Verzeichniswert = Directory Code. Ein Wert zwischen 0 und 3. Dieser Wert kann verwendet werden, um die Adresse des entsprechenden Verzeichniswert zu bestimmen: DMA+A*32
4. Wandelt einen ASCII Dateinamen um in einen FCB. Der Parameterblock (PFCB) hat folgendes Format:
	DEFW	ASCII Adresse
	DEFW	FCB Adresse
Das Ergebnis im Register HL ist 0FFFFh, wenn der Dateiname ungültig war; 0, wenn der Dateiname mit Null oder RETURN abgeschlossen war; sonst die Adresse des dem Dateinamen folgenden Zeichens.
Der Dateiname kann beliebige Gestalt annehmen bis hin zu d:dateiname.typ;passwort (Passwort nur unter CP/M 3 und höher). Wenn der Dateiname analysiert wird, wird das Passwort kopiert nach FCB+10h mit der Länge in FCB+1Ah.
[Unter ZPM3 kann der Dateiname das folgende Format annehmen: du:dateiname.typ;passwort; der Wert in FCB+0Dh ist 0, wenn keine Nutzernummer (u) angegeben wurde oder andernfalls 1+u. Wenn ein Z-System geladen ist, kann ZPM3 auch den Dateinamen in der Form dir:dateiname.typ;passwort wandeln.
FEHLER: ZPM3 (Version N10) speichert das Passwort nach FCB+0Ch statt FCB+10h, wobei die Nutzernummer in FCB+0Dh überschrieben wird. Außerdem werden die letzten vier Bytes des FCB nicht auf Null gesetzt, wie CP/M es tut.]

Der Dateiname kann abgeschlossen werden durch eins der fogenden Zeichen: Leerzeichen Tabulator RETURN Null ; = > < . : , [ ] / | .

Letzte Änderung: 4.Juli 2005