BDOS Systemaufrufe

Das Original enthält Beschreibungen für CP/M 1, 2 and 3, sowie teilweise Beschreibungen für MP/M und DOSPLUS.
Ich habe die Beschreibungen reduziert auf CP/M 2 und 3 Aufrufe nur für 8 Bit CPUs.

Wie ein Aufruf durchgeführt wird

Ein BDOS-Aufruf wird aufgerufen mit:
        LD      DE,Parameter
        LD      C,Funktion
        CALL    5
Unter CP/M 1.x werden 8-Bit Ergebnisse im Akku und 16-Bit Ergebnisse in BA zurückgegeben. In späteren 8-Bit Versionen erfolgt die Rückgabe auch entsprechend in L und HL.

Die Aufrufe

BDOS Funktion 0 - Rücksetzen des Systems

Unterstützt von: CP/M 2, 3.

Aufruf mit C=0. Ohne Rückgabe.

Bricht das aktuelle Programm ab und kehrt zur Befehlseingabe zurück. Dieser Aufruft wird kaum benutzt, da RST 0 das Gleiche bewirkt, allerdings um vier Bytes kürzer.

BDOS Funktion 1 - Konsoleingabe

Unterstützt von: Alle Versionen

Aufruf mit C=1. Rückgabe A=L=Zeichen.

Wartet auf ein Zeichen von der Tastatur; gibt dies auf dem Bildschirm aus und kehrt dann damit zurück.

BDOS Funktion 2 - Konsolausgabe

Unterstützt von: Alle Versionen

Aufruf mit C=2, E=ASCII Zeichen.

Gibt das Zeichen in E auf dem Bildschirm aus. Tabulatoren werden in Leerzeichen umgesetzt. Die Ausgabe kann mit ^S angehalten und mit ^Q fortgesetzt werden (oder mit einer beliebigen Taste vor CP/M 3). Wenn die Ausgabe anhält, kann das Programm abgebrochen werden mit ^C.

BDOS Funktion 3 - Eingabe von Hilfsgerät (Leser)

Unterstützt von: Alle CP/M Versionen

Aufruf mit C=3. Rückgabe A=L=ASCII Zeichen

Achtung: Dieser Aufruf kann hängen, wenn das Hilfsgerät keine Daten sendet.

BDOS Funktion 4 - Ausgabe auf Hilfsgerät (Stanzer)

Unterstützt von: Alle Versionen.

Aufruf mit C=4, E=ASCII Zeichen.

Achtung: Wenn das Gerät dauerhaft nicht bereit ist, kann der Aufruf hängen.

BDOS Funktion 5 - Druckerausgabe

Unterstützt von: Alle Versionen

Aufruf mit C=5, E=ASCII Zeichen.

Achtung: Wenn der Drucker dauerhaft ausgeschaltet oder belegt ist, kann der Aufruf hängen.

BDOS Funktion 6 - Direkte Konsol-Ein/Ausgabe

Unterstützt von: CP/M 1.4 und später, mit Abweichungen

Aufruf mit C=6, E=Code. Zurückgegebene Werte (in A) differieren.

E=0FFh Gibt ein Zeichen ohne Ausgabe zurück, wenn eins vorhanden ist; im anderen Fall wird eine Null zurückgegeben.
E=0FEh Rückgabe des Status der Konsoleingabe. Null wenn kein Zeichen ansteht, ungleich Null bei vorhandenem Zeichen.
E=0FDh Wartet bis ein Zeichen vorhanden ist, Rückgabe ohne Ausgabe des Zeichens.

Wenn der Wert in E an einzelnen System nicht als Code unterstützt wird, erfolgt die Ausgabe als Zeichen. Unter CP/M 2 und davor dürfen die direkten Konsol-Ein/Ausgabe-Funktionen nicht gemeinsam mit den nicht direkten Funktionen benutzt werden, da verschiedene Puffer umgangen werden könnten. Funktionen nicht mischen.

BDOS Funktion 7 - Status der Hilfsgeräte-Eingabe

Unterstützt von: CP/M 3 und darüber.

Aufruf mit C=7. Rückgabe A=0 oder 0FFh.

0FFh wird zurückgegeben wenn das Hilfsgerät ein Zeichen bereithält; andernfalls wird 0 zrückgegeben.

BDOS Funktion 7 - I/O Byte holen

Unterstützt von: CP/M 2 und Vergleichbare.

Aufruf mit C=7. Rückgabe I/O Byte.

Hier wird beschrieben, wie das IOBYTE funktioniert.

BDOS Funktion 8 - Status der Hilfsgeräte-Ausgabe

Unterstützt von: CP/M 3 und darüber.

Aufruf mit C=8. Rückgabe A=0 oder 0FFh.

0FFh wird zurückgegeben wenn das Hilfsgerät bereit ist für ein Zeichen; andernfalls wird 0 zrückgegeben.

BDOS Funktion 8 - I/O Bytes setzen

Unterstützt von: CP/M 2 und Vergleichbare.

Aufruf mit C=8, E=I/O Byte.

Hier wird beschrieben, wie das IOBYTE funktioniert.

BDOS Funktion 9 - Zeichenkette ausgeben

Unterstützt von: Alle Versionen

Aufruf mit C=9, DE=Adresse der Zeichenkette.

Gibt eine Kette von ASCII Zeichen auf dem Bildschirm aus, abgeschlossen wit dem Zeichen $. Deshalb darf die Zeichenkette das Zeichen $ nicht enthalten - z.B. kann das VT52 Kommando zum Setzen des Cursors, ESC Y y+32 x+32, die Reihe y=4 nicht darstellen.

Unter CP/M 3 und darüber kann das Endzeichen mit der BDOS Funktion 110 geändert werden.

BDOS Funktion 10 - Gepufferte Konsoleingabe

Unterstützt von: Alle Versionen, mit Abweichungen

Aufruf mit C=0Ah, DE=Adresse oder Null.

Diese Funktion liest Zeichen von der Tastatur in den Speicherpuffer bis RETURN betätigt wird. Die DELete-Taste wird richtig verwendet. In späteren Versionen können mehr Eigenschaften an dieser Stelle genutzt werden.

Bei Aufruf ist Register DE die Adresse eines Puffers. Wenn DE=0 ist, dann wird die DMA-Adresse verwendet (CP/M 3 und später) und der Puffer beinhaltet bereits Daten:

DE=Adresse:DE=0:
Puffer: DEFB    Kapazität
        DEFB    ?
        DEFB    Daten
Puffer: DEFB    Kapazität
        DEFB    Länge
        DEFB    Daten

Der Wert an der Stelle Puffer+0 gibt den Betrag zur Verfügung stehender Bytes im Puffer an. Wenn dieser Wert erreicht ist, können keine weiteren Daten hinzugefügt werden, jedoch kann der Zeileneditor weiter verwendet werden.

Wenn DE=0 ist, hält das nächste Byte an der Stelle Puffer+1 die Anzahl Bytes, die sich bereits im Puffer befinden; andernfalls wird das ignoriert. Bei der Rückkehr von der Funktion steht hier die Anzahl eingelesener Bytes im Puffer.

Die eingegeben Bytes folgen danach. Es gibt kein Endzeichen.

BDOS Funktion 11 - Status der Konsole

Unterstützt von: Alle Versionen

Aufruf mit C=0Bh. Rückgabe A=L=Status

Bei der Rückkehr hält A=0, wenn kein Zeichen vorhanden ist und ungleich Null bei einem vorhandenen Zeichen.

BDOS Funktion 12 - Rückgabe der Versionsnummer

Unterstützt von: Version 2.0 und danach

Aufruf mit C=0Ch. Rückgabe B=H=System Typ, A=L=Versionsnummer.

Der System Typ ist unterteilt in Maschinen- und CP/M-Typen. Der Maschinen-Typ belegt die oberen vier Bits des Bytes; der CP/M-Typ ist abgelegt in den unteren vier Bits.

Maschinen-Typen: CP/M-Typen: Versionsnummern:
0 - 8080
1 - 8086
2 - 68000/Z8000
Bit 0 gesetzt für MP/M
Bit 1 gesetzt für CP/Net
     (d.h.:Netzwerk vorhanden)
Bit 2 gesetzt in 16-Bit Multi-User OS

Für einfaches CP/M ist der Typ 0.
00h - Version 1
20h - Version 2.0
21h - Version 2.1
22h - Version 2.2
25h - Version 2.5 (DOS +)
28h - Version 2.8 (Personal CP/M-80)
30h - Version 3.0 (MP/M II)
31h - Version 3.1 (CP/M Plus)
41h - Version 4.1 (DOSPLUS 1)
60h - Version 6.0 (DOSPLUS 2)

BDOS Funktion 13 - Rücksetzen der Laufwerke

Unterstützt von: Alle Versionen.

Aufruf mit C=0Dh. Rückgabewerte variieren.

Setzt Laufwerke zurück. Alle Laufwerke werden abgemeldet und die Disk-Puffer geleert. Als aktuelles Laufwerk wird A: eingestellt. Laufwerke, die per Programm auf R/O gesetzt wurden, werden auf R/W gesetzt.

In Version 1 und 2 wird das Laufwerk A: angemeldet und 0FFh zurückgegeben, wenn eine Datei vorhanden ist, deren Name mit $ beginnt, sonst eine Null.

BDOS Funktion 14 - Laufwerk wählen

Unterstützt von: Alle Versionen

Aufruf mit C=0Eh, E=Laufwerknummer. Rückgabe L=A=0 oder 0FFh.

Die Laufwerknummer, die an diese Funktion übergeben wird, ist 0 für A:, 1 für B: bis 15 für P:.

Setzt das aktuelle Laufwerk auf das Laufwerk im Akku; das Laufwerk wird angemeldet. Die Rückgabe is 0 bei Erfolg oder 0FFh im Fehlerfall. Unter MP/M II und späteren Versionen kann H eine physikalische Fehlernummer beinhalten.

BDOS Funktion 15 - Datei öffnen

Unterstützt von: Alle Versionen

Aufruf mit C=0Fh, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Diese Funktion öffnet eine Datei zum Lesen oder Schreiben. Der FCB ist eine 36 Byte große Datenanordnung von denen die meisten Bytes von CP/M instand gehalten werden. Siehe hier für Details.

Der FCB muss die Felder DR, Fn und Tn entsprechend belegt haben. Die vier Felder EX, S1, S2 und RC sollten auf Null gesetzt werden. Unter CP/M 3 und später wird in das Feld CR der Bytezähler innerhalb des letzten Rekords gespeichert, wenn es beim Aufruf auf 0FFh gesetzt war. CR sollte normalerweise auf Null gesetzt sein, wenn ein sequentieller Dateizugriff benutzt werden soll.

Wenn die Datei in der Betriebsart "unlocked" geöffnet wird, dann wird der Dateibezeichner (gebraucht für "record locking") abgelegt in FCB+21h.

Unter MP/M II und späteren Versionen kann ein Passwort an diese Funktion übergeben werden, wobei die DMA Adresse auf das Passwort zeigt.

Der Rückgabewert im Akku ist 0FFh im Fehlerfall oder 0-3 bei Erfolg. Einige Versionen (darunter CP/M 3) geben immer Null zurück; andere geben 0-3 als Hinweis, wo einen Directory-Eintrag gefunden werden kann (80h+20h*A).

Wenn A=0FFh ist, gibt CP/M 3 einen Hardwarefehler in H und B zurück. Außerdem werden einige Bits im FCB gesetzt:

BDOS Funktion 16 - Datei schließen

Unterstützt von: Alle Versionen

Aufruf mit C=10h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Diese Funktion schließt eine Datei und schreibt noch anstehende Daten. Diese Funktion sollte immer verwendet werden, wenn Daten geschrieben wurden.

Der Rückgabewert im Akku ist 0FFh im Fehlerfall oder 0-3 bei Erfolg. Einige Versionen geben immer Null zurück; andere geben 0-3 als Hinweis, wo einen Directory-Eintrag gefunden werden kann (80h+20h*A).

Wenn unter CP/M 3 F5' auf 1 gesetzt ist, dann werden anstehende Daten geschrieben und die Datei konsistent gemacht. Die Datei bleibt aber geöffnet.

Wenn A=0FFh ist, gibt CP/M 3 einen Hardwarefehler in H und B zurück.

BDOS Funktion 17 - Suche nach erster Datei

Unterstützt von: Alle Versionen

Aufruf mit C=11h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Suche nach dem ersten Auftreten der angegebenen Datei; der Dateiname muss im bereitgestellten FCB abgelegt sein. Er darf Fragezeichen (?) enthalten, die als Jokerzeichen verwendet werden. Wenn das erste Byte im FCB ein ? ist, dann wird jeder Directory Eintrag verwendet (einschließlich Label des Datenträgers, Zeitmarken, usw.). Auch das EX Feld wird überprüft; es wird normalerweise auf Null gesetzt, mit einem ? hingegen werden alle passenden Extents verwendet.

Rückgabe A=0FFh im Fehlerfall (CP/M 3 gibt Hardwarefehler in H und B zurück), oder A=0-3 bei Erfolg. Der Rückgabewert kann benutzt werden, um die Speicheradresse des Directory Eintrages zu ermitteln; die Berechnung erfolgt mittels DMA+A*32.

BDOS Funktion 18 - Suche nach nächster Datei

Unterstützt von: Alle Versionen

Aufruf mit C=12h, (DE=Adresse der FCB)?. Rückgabe von Fehlercodes in BA und HL.

Diese Funktion sollte unmittelbar nach Funktion 17 oder einem weiteren Aufruf der Funktion 18 ausgeführt werden. Dazwischen dürfen keine anderen Disk-Zugriffe liegen. (Manchmal will man aber gerade zwischen zwei Suchfunktionen die gefundenen Dateien bearbeiten, hier Hinweise dazu)

Funktion 18 verhält sich genau wie Funktion 17, sie findet den nächsten Eintrag der angegebenen Datei nach der, die beim letzten Suchvorgang gefunden wurde. Der FCB Parameter ist nicht dokumentiert, jedoch führt Jim Lopushinsky in der Datei LD301.DOC aus:

In keinem der offiziellen Programmierhandbücher wird erwähnt, dass für eine beliebige CP/M Version der FCB für die Suche nach nächster Datei (Funktion 18) benötigt wird. Wenn jedoch der FCB für die Suche nach erster Datei einen eindeutigen Dateinamen (d.h. kein Fragezeichen) enthält, dann benötigt die Suche nach nächster Datei einen FCB im Register DE.

BDOS Funktion 19 - Datei löschen

Unterstützt von: Alle Versionen

Aufruf mit C=13h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Löscht alle Directory-Einträge, die mit dem angegeben Dateinamen übereinstimmen. Der Name darf ? enthalten. Rückgabe A=0FFh im Fehlerfall, andernfalls 0-3 (CP/M 3 gibt Hardwarefehler in H und B zurück).

Ist unter CP/M 3 das Bit F5' 1 gesetzt, so bleibt die Datei erhalten, jedoch wird eine Passwortsicherung entfernt. Wenn eine Passwortsicherung besteht, dann muss die DMA Adresse auf das Passwort zeigen, wenn die Funktion aufgerufen wird.

BDOS Funktion 20 - Lesen des nächsten Rekords

Unterstützt von: Alle Versionen

Aufruf mit C=14h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Lädt einen Rekord (normalerweise 128 Bytes, unter CP/M 3 kann dies jedoch ein Vielfaches davon sein) in die zuvor festgelegte DMA Adresse. Die Rückgabewerte im Akku sind:
0
1
9
10
0FFh
-
-
-
-
-
Erfolgreich
Ende der Datei
Ungültiger FCB
Datenträgerwechsel
Hardwarefehler
Wenn A nicht 0FFh zurückgibt, dann enthält H die Anzahl gelesener Rekords vor dem Fehler (MP/M II und danach).

BDOS Funktion 21 - Schreiben des nächsten Rekords

Unterstützt von: Alle Versionen

Aufruf mit C=15h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Schreibt einen Rekord (normalerweise 128 Bytes, unter CP/M 3 kann dies jedoch ein Vielfaches davon sein) aus der zuvor festgelegten DMA Adresse. Die Rückgabewerte im Akku sind:
0
1
2
9
10
0FFh
-
-
-
-
-
-
Erfolgreich
Directory voll
Datenträger voll
Ungültiger FCB
Datenträgerwechsel
Hardwarefehler
Wenn A nicht 0FFh zurückgibt, dann enthält H die Anzahl geschriebener Rekords vor dem Fehler (nur CP/M 3).

BDOS Funktion 22 - Datei anlegen

Unterstützt von: Alle Versionen

Aufruf mit C=16h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Legt die angegebene Datei an. Rückgabe A=0FFh wenn Directory voll ist.

Falls die Datei bereits existiert, dann ist die Voreinstellung Rückkehr zur Kommandoeingabe, unter CP/M 3 kann jedoch stattdessen ein Hardwarefehler zrückgegeben werden.

Unter MP/M II und danach kann F6' gesetzt werden, um eine Passwortsicherung für die Datei anzulegen; die DMA Adresse muss auf einen 9-Byte Puffer zeigen:
        DEFS    8       ;Passwort
        DEFB    1       ;Passwort Modus

BDOS Funktion 23 - Datei umbebennen

Unterstützt von: Alle Versionen

Aufruf mit C=17h, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Benennt die Datei, deren neuer Name abgelegt ist unter FCB+16, um. Die Umbennenung kann nicht über verschiedene Laufwerke erfolgen, so dass das "Laufwerk"-Byte beider Dateinamen gleich sein muss. Rückgabe A=0-3 bei Erfolg; A=0FFh im Fehlerfall. Wenn Register H unter CP/M 3 Null ist, dann wurde die Datei nicht gefunden; im anderen Fall enthält es einen Hardwarefehler.

BDOS Funktion 24 - Rückgabe der Bitmap der angemeldeten Laufwerke

Unterstützt von: Alle Versionen

Aufruf mit C=18h. Rückgabe der Bitmap in HL.

Bit 7 von H entspricht P:, während Bit 0 von L A: entspricht. Ein gesetztes Bit zeigt an, dass das entsprechende Laufwerk angemeldet ist.

BDOS Funktion 25 - Rückgabe des aktuellen Laufwerks

Unterstützt von: Alle Versionen

Aufruf mit C=19h. Rückgabe des Laufwerks in A. Rückgabe des aktuellen gewählten Laufwerks. 0 => A:, 1 => B: usw.

BDOS Funktion 26 - DMA Adresse festlegen

Unterstützt von: Alle Versionen

Aufruf mit C=1Ah, DE=Adresse.

Setzen der Direct Memory Access Adresse; ein Zeiger wohin oder woher CP/M Daten liest oder schreibt. Anfangs war dies lediglich für den Austausch von 128-Byte Rekords zwischen Speicher und Datenträger gedacht, mittlereweile kamen viele andere Funktionen hinzu.

BDOS Funktion 27 - Rückgabe der Adresse des Belegungsvektors

Unterstützt von: Alle Versionen, aber unterschiedlich in "banked" (segmentierten) Versionen.

Aufruf mit C=1Bh. Rückgabe Adresse in HL.

Gibt die Adresse der Belegungs-Bitmap (welche Blöcke belegt sind und welche frei) in HL zurück. Unter segmentiertem CP/M 3 und MP/M liegt die Adresse in Bank 0 (Systembank) und ist nicht einfach zugreifbar.

In vorigen Versionen ist das Format der Bitmap eine Reihe von Bytes, wobei Bit 7 des Bytes den niedrigsten Block auf dem Datenträger darstellt. Die Zählung beginnt mit Block 0 (dem Directory). Ein Bit ist gesetzt, wenn der entsprechende Block belegt ist.

Unter CP/M 3 kann der Belegungsvektor wie oben beschrieben aufgebaut sein (Einzel-Bit) oder jedem Block werden zwei Bits zugewiesen (Doppel-Bit). Diese Information ist abgelegt im SCB.

BDOS Funktion 28 - Aktuelles Laufwerk vor Schreiben schützen

Unterstützt von: Alle Versionen, mit Unterschieden

Aufruf mit C=1Ch.

Das aktuelle Laufwerk wird zeitweilig auf Read-Only gesetzt; Schreibversuche führen zu einem Fehler. Bei Original CP/M Systemen bleibt dieser Zustand aktiv bis die Funktion 13 (Rücksetzen der Laufwerke) oder 37 (Rücksetzen ausgewählter Laufwerke) aufgerufen wird; in Parxis bedeutet dies, dass alle Laufwerke auf Read/Write zurückgesetzt werden, sobald ein Programm beendet und die Kommandoeingabe gestartet wird. Späterer BDOS Ersatz setzt das Laufwerk nur dann zurück, wenn die Funktion 37 aufgerufen wird.

BDOS Funktion 29 - Rückgabe der Bitmap von Read-Only Laufwerken

Unterstützt von: Alle Versionen

Aufruf mit C=1Dh. Rückgabe der Bitmap in HL.

Bit 7 von H entspricht P:, während Bit 0 von L A: entspricht. Ein gesetztes Bit zeigt an, dass das entsprechende Laufwerk per Software schreibgeschützt ist.

BDOS Funktion 30 - Dateieigenschaften setzen

Unterstützt von: Alle Versionen

Aufruf mit C=1Eh, DE=Adresse der FCB. Rückgabe von Fehlercodes in BA und HL.

Setzen und Löschen der benötigten Bits. Standard CP/M Versionen erlauben die Änderung der Bits F1', F2', F3', F4', T1' (Read-Only), T2' (System) und T3' (Archiv). Einige alternative BDOS Versionen erlauben das Setzen der Bits F5', F6', F7' und F8', doch sollte man dies unterlassen, da CP/M 3 sich dadurch unterschiedlich verhalten kann.

Unter CP/M 3 kann der Last Record Byte Count definiert werden durch Abspeichern des Wertes in FCB+32 (FCB+20h) und Setzen des Bits F6'.

Der Rückgabewert im Akku ist 0-3 bei Erfolg oder 0FFh im Fehlerfall. Wenn unter CP/M 3 A=0FFh ist und H nicht Null, dann beinhaltet H einen Hardwarefehler.

BDOS Funktion 31 - Rückgabe der DPB Adresse

Unterstützt von: CP/M 2 und später.

Aufruf mit C=1Fh. Rückgabe der Adresse in HL.

Gibt die Adresse des Disc Parameter Blocks des aktuellen Laufwerkes zurück. Siehe die Formatliste für Details über die DPB für verschiedene CP/M Versionen.

BDOS Funktion 32 - Holen/Setzen der User-Nummer

Unterstützt von: CP/M 2 und später.

Aufruf mit C=20h, E=Nummer. Wenn E=0FFh, Rückgabe der Nummer in A.

Setz die aktuelle User-Nummer. E muss im Bereich 0-15 liegen oder 255 sein, um die aktuelle Nummer zu ermitteln, die dann im Akku steht. Bei einigen Versionen können auch die Nummern 16-31 verwendet werden, dies sollte aber aus Kompatibilitätsgründen unterlassen werden.

BDOS Funktion 33 - Rekord lesen mit wahlweisem Zugriff

Unterstützt von: CP/M 2 und später.

Aufruf mit C=21h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Lesen des Rekords, dessen Nummer im FCB definiert ist, in die DMA Adresse. Die Zeiger im FCB werden aktualisiert, so dass der nächste Rekord, der mit einem sequentiellem Aufruf gelesen wird, genau der gerade gelesene ist. Die zurückgegebenen Fehlernummern sind:
0
1
4
6
9
10
0FFh
-
-
-
-
-
-
-
Erfolgreich
Lesen von ungeschriebenen Daten
Lesen eines ungeschriebenen Extents (ein 16k großer Teil der Datei existiert nicht)
Rekord Nummer außerhalb des gültigen Bereiches
Ungültiger FCB
Datenträgerwechsel
[CP/M 3] Hardwarefehler in H

BDOS Funktion 34 - Rekord schreiben mit wahlweisem Zugriff

Unterstützt von: CP/M 2 und später.

Aufruf mit C=22h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Schreiben des Rekords, dessen Nummer im FCB definiert ist, aus der DMA Adresse. Die Zeiger im FCB werden aktualisiert, so dass der nächste Rekord, der mit einem sequentiellem Aufruf geschrieben wird, genau der gerade geschriebene ist. Die zurückgegebenen Fehlernummern sind:
0
2
3
5
6
9
10
0FFh
-
-
-
-
-
-
-
-
Erfolgreich
Kein Platz in der Directory
Extent kann nicht geschlossen werden
Kein Platz in der Directory
Rekord Nummer außerhalb des gültigen Bereiches
Ungültiger FCB
Datenträgerwechsel
[CP/M 3] Hardwarefehler in H

Wenn der angegebene Rekord über dem Dateiende hinaus liegt, dann wird er geschrieben und die Datei enthält eine Lücke; Versuche, diese Lücke zu lesen, führen zum Fehler "Lesen von ungeschriebenen Daten" oder unsinnigen Daten.

BDOS Funktion 35 - Dateigröße ermitteln

Unterstützt von: CP/M 2 und später.

Aufruf mit C=23h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Setzt die Felder für die Random Rekords FCB+33, FCB+34, FCB+35 (FCB+21h, FCB+22h, FCB+23h) auf die Zahl der 128-Byte Rekords in dieser Datei. Rückgabe A=0FFh im Fehlerfall (Datei nicht gefunden oder CP/M 3 Hardwarefehler); sonst A=0.

BDOS Funktion 36 - Aktualisierung des Zeigers für wahlweisen Zugriff

Unterstützt von: CP/M 2 und später.

Aufruf mit C=24h, DE=FCB Adresse.

Setzt die Felder für die Random Rekords FCB+33, FCB+34, FCB+35 (FCB+21h, FCB+22h, FCB+23h) auf die Zahl des zuletzt sequentiell gelesenen/geschriebenen Rekords.

BDOS Funktion 37 - Rücksetzen ausgewählter Laufwerke

Unterstützt von: CP/M 2 und später.

Aufruf mit C=25h, DE=Bitmap der Laufwerke, die zurückgesetzt werden sollen. Rückgabe A=0.

Bit 7 von D entspricht P:, während Bit 0 von E A: entspricht. Ein Bit ist gesetzt, wenn das entsprechende Laufwerk zurückgesetzt werden soll. Das Rücksetzen eines Laufwerkes löscht die Software Read-Only Einstellung.

BDOS Funktion 38 - Belegung eines Laufwerkes

Unterstützt von: MP/M, Concurrent CP/M, CP/Net.

Aufruf mit C=26h.

Diese MP/M Funktion wird nicht unterstützt von CP/M 3. Nach Aufruf wird unter CP/M 3 immer A=0 zurückgegeben.

BDOS Funktion 39 - Freigabe eines Laufwerkes

Unterstützt von: MP/M, Concurrent CP/M, CP/Net.

Aufruf mit C=27h.

Diese MP/M Funktion wird nicht unterstützt von CP/M 3. Nach Aufruf wird unter CP/M 3 immer A=0 zurückgegeben.

BDOS Funktion 40 - Rekord schreiben mit Lückenfüllung

Unterstützt von: CP/M 2.2 und später.

Aufruf mit C=28h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Wie Funktion 34, allerdings wird im Falle eines neu anzulegenden Blocks der Rest dieses Blocks mit Nullen gefüllt.

BDOS Funktion 41 - Rekord testen und schreiben

Unterstützt von: MP/M.

Aufruf mit C=29h

Diese MP/M Funktion wird nicht unterstützt von CP/M 3. Nach Aufruf wird unter CP/M 3 immer A=0FFh und H=0 zurückgegeben.

BDOS Funktion 42 - Rekord sperren

Unterstützt von: MP/M.

Aufruf mit C=2Ah.

Diese MP/M Funktion wird nicht unterstützt von CP/M 3. Nach Aufruf wird unter CP/M 3 immer A=0 zurückgegeben.

BDOS Funktion 43 - Rekord freischalten

Unterstützt von: MP/M.

Aufruf mit C=2Bh.

Diese MP/M Funktion wird nicht unterstützt von CP/M 3. Nach Aufruf wird unter CP/M 3 immer A=0 zurückgegeben.

BDOS Funktion 44 - Anzahl Rekords für Lesen/Schreiben festlegen

Unterstützt von: MP/M II und später.

Aufruf mit C=2Ch, E=Anzahl Rekords. Rückgabe A=0 oder 0FFh.

Setzt die Anzahl Rekords, die die Funktionen 20, 21, 33, 34 und 40 auf einmal verarbeiten. E muss im Bereich 1-127 liegen. Rückgabe A=0 wenn E gültig ist, sonst 0FFh. Die Rekord-Nummern werden weiterhin behandelt wie 128 Bytes/Rekord.

BDOS Funktion 45 - Aktion bei Hardwarefehler setzen

Unterstützt von: MP/M II und später.

Aufruf mit C=2Dh, E=Aktion.

Weist CP/M an, was im Falle eines Hardwarefehlers getan wird:
E < 254
E = 254
E = 255
Kompatibilitäts-Mode; das Programm wird beendet und eine Fehlermeldung ausgegeben
Fehlercode wird in H zurückgegeben, es wird eine Fehlermeldung ausgegeben
Fehlercode wird in H zurückgegeben, es wird keine Fehlermeldung ausgegeben
Zur Beachtung: Bei einer Fehlermeldung (wenn diese ausgegeben wird) erfolgt keine Zeilenschaltung.

BDOS Funktion 46 - Freien Platz auf Datenträger ermitteln

Unterstützt von: MP/M II und später.

Aufruf mit C=2Eh, E=Laufwerk. Rückgabe von Fehlercodes in BA und HL.

Setzt die drei Bytes in der DMA Adresse auf den Wert der freien 128-Byte Rekords dem Datenträger, beginnend mit dem niederwertigen Byte. E gibt das Laufwerk an (0 für A:, 1 für B: usw.). Bei Rückgabe von A=0FFh findet sich ein Hardwarefehler in H.

BDOS Funktion 47 - Anderes Programm aufrufen

Unterstützt von: MP/M II und später.

Aufruf mit C=2Fh, E=Aufrufmerker. Rückkehr nur im Fehlerfall.

Führt die Kommandozeile in Adresse 80h aus. Der Rückgabe-Code im Fehlerfall bleibt erhalten, so dass das neue Programm den Status des alten Programmes verabeiten kann.

Wenn E=255 ist, dann werden das aktuelle Laufwerk und der aktuelle User (wie durch die Aufrufe 25 und 32 definiert) auf die Werte des aufrufenden Programms gesetzt; andernfalls werden die Werte des CCP eingestellt.

BDOS Funktion 48 - Datenträger-Puffer leeren

Unterstützt von: MP/M II und später.

Aufruf mit C=30h, E=Merker. Rückgabe von Fehlercodes in BA und HL.

Erzwingt die Ausführung aller anhängigen Schreibvorgänge. Wenn E=255 ist, dann werde ebenfalls alle Lesepuffer geleert (dadurch müssen Infrmationen neu von dem Datenträger gelesen werden - dies wird bei Programmen zur Dateiprüfung genutzt).

Rückgabe A=0FFh bei Hardwarefehler in H.

BDOS Funktion 49 - Zugriff auf den System Control Block

Unterstützt von: CP/M 3.

Aufruf mit C=31h, DE=Adresse des Parameterfeldes. Rückgabewerte variieren.

Der SCB ist ein 100 Byte großer Speicherbereich (offiziell) zur Abspeicherung von Systemeinstellungen. Das Parameterfeld pb ist wie folgt aufgebaut:
pb+0:   DB      Offset          ;0-99
pb+1:   DB      Anweisung       ;0    => Lesen des Bytes an der Stelle Offset
                                ;        nach A, und des Wortes an der Stelle
                                ;        Offset nach HL.
                                ;0FEh => Schreibe Wort aus pb+2 in den SCB an 
                                ;        die Stellen Offset und Offset+1
                                ;0FFh => Schreibe Byte aus pb+2 in den SCB an
                                ;        die Stelle Offset
BDOS Funktion 50 - BIOS Aufruf

Unterstützt von: CP/M 3 und später.

Aufruf mit C=32h, DE=Adresse des Parameterfeldes. Rückgabewerte variieren.

Unter CP/M 3 sollten die BIOS Funktionen nicht direkt aufgerufen werden, Ausnahmen sind die Zeichen Ein-/Ausgabe und die USERF Aufrufe. Stattdessen sollte diese Funktion verwendet werden. Das Parameterfeld pb ist wie folgt aufgebaut:
pb+0:   DB      BIOS-Funktion   ;0-32
pb+1:   DB      BIOS-A          ;Wert für den Akku
pb+2:   DB      BIOS-C          ;Wert für das C Register
pb+3:   DB      BIOS-B          ;Wert für das B Register
pb+4:   DB      BIOS-E          ;Wert für das E Register
pb+5:   DB      BIOS-D          ;Wert für das D Register
pb+6:   DB      BIOS-L          ;Wert für das L Register
pb+7:   DB      BIOS-H          ;Wert für das H Register
BDOS Funktion 59 - Laden eines Overlays

Unterstützt von: CP/M 3 und höheren Ladern.

Aufruf mit C=3Bh, DE=FCB Adresse. Rückgabe Fehlercode in A.

Lädt ein Programm oder eine RSX. Die FCB muss vor dem Aufruf geöffnet sein; die Ladeadresse muss in FCB+33 (FCB+21h) abgelegt sein. Falls das Programm ein PRL (Paged Relocatable) ist, lädt es der Original CP/M Lader.

Ist DE=0 dann werden lediglich die zum Löschen markierten RSXen aus der RSX-Kette entfernt.

Rückgabe A=0 bei Erfolg, 0FEh im Fehlerfall oder 0FFh wenn der Lader nicht vorhanden ist.

BDOS Funktion 60 - Aufruf einer RSX

Unterstützt von: CP/M 3 und spätere RSXen.

Aufruf mit C=3Ch, DE=RSXPB Adresse

Dieser Aufruf unterstützt Programme, die mit RSXen (Resident System eXtension) kommunizieren. Es gibt eine separate Liste der Funktionen, die von speziellen RSXen unterstützt werden. Das Format des RSXPB ist wie folgt:
        DEFB    Funktion, 0-127 ;(128-255 werden intern von CP/M benutzt)
        DEFB    Anzahl          ;Anzahl von Parameterworten übergeben an die RSX.
        DEFW    Parameter
Eine gängige Vereinbarung für das erste Parameterwort ist, dass dieses auf auf den Namen der vorgesehenen RSX zeigt; zum Beispiel:
RSXPB:  DEFB    100     ;Funktion
        DEFB    1       ;1 Parameter
        DEFW    RNAME   ;RSX Name
RNAME:  DEFB    'GETERL  '
Dieser Aufruf gibt BA=HL=00FFh zurück, wenn die geforderte RSX nicht im Speicher liegt; andernfalls sind die Rückgabewerte abhängig von der RSX.

BDOS Funktion 98 - Datenträger aufräumen

Unterstützt von: CP/M 3 (Intern?).

Aufruf mit C=62h. Rückgabe A=0 bei Erfolg, 0FFh bei ungültigem aktuellen Laufwerk

Diese Funktion wird vom CCP aufgerufen sobald ein Programm endet. Offene Dateien werden geschlossen; gepufferte Daten werden nicht weggeschrieben, so dass für das Schreiben geöffnete Dateien zerstört werden können, wenn sie nicht ordentlich geschlossen werden.

BDOS Funktion 99 - Datei verkürzen

Unterstützt von: CP/M 3 und später.

Aufruf mit C=63h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Setzt den Wert des Random Rekords des FCB auf die gewünschte Dateigröße in Rekords. Wenn die Datei mit einem Passwort versehen ist, muss die DMA Adresse auf das Passwort zeigen. Rückgabe A=0-3 bei Erfolg, 0FFh bei Fehler; H kann Hardwarefehler enthalten.

BDOS Funktion 100 - Directory Kennzeichnung setzen

Unterstützt von: MP/M II und später.

Aufruf mit C=64h, DE=FCB. Rückgabe von Fehlercodes in BA und HL.

Im EX Byte in FCB+12 (FCB+0Ch) im FCB muss das Kennzeichnungsbyte stehen:
Bit   Bedeutung wenn gesetzt
---------------------------------------------------------------------
7     Passworte aktiviert
6     Stempel bei Zugriff
5     Stempel bei Aktualisierung
4     Stempel bei Anlage
0     Zuweisung des Passwortes an der Stelle DMA+8 zur Kennzeichnung.
Diese Funktion benötigt möglicherweise ein Passwort in der DMA Adresse, falls eine Kennzeichnung mit Passwort auf dem Datenträger existiert.

Die Funktion gibt bei Erfolg A=0 zurück, 0FFh im Fehlerfall. H kann Hardwarefehler enthalten.

BDOS Funktion 101 - Directory Kennzeichnungsbyte holen

Unterstützt von: MP/M II und später.

Aufruf mit C=65h, E=drive. Rückgabe A=Byte

Das zurückgegebene Byte hat folgende Bedeutung:
Bit   Bedeutung wenn gesetzt
---------------------------------------------------------------------
7     Passworte aktiviert
6     Stempel bei Zugriff
5     Stempel bei Aktualisierung
4     Stempel bei Anlage
0     Directory Kennzeichnung existiert
Bit 0 Null ist, haben die anderen Bits keine Bedeutung.

Wenn eine Kennzeichnung existiert, so kann diese mittels der Funktionen 17 und 18 ermittelt werden, wobei die ersten 13 Bytes des FCB mit einem "?" belegt werden müssen. Das Ergebnis steht dann in einer Datei, dessen User Nummer = 32 ist.

BDOS Funktion 102 - Datum und Uhrzeit einer Datei holen

Unterstützt von: MP/M II und später.

Aufruf mit C=66h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Holt den Zeitstempel der Datei sowie die Passworteinstellung. Von FCB+24 (FCB+18h) bis FCB+27 (FCB+1Bh) liegt der Stempel für Anlage oder Zugriff, von FCB+28 (FCB+1Ch) bis FCB+31 (FCB+1Fh) der Stempel für Aktualisierung. In FCB+12 (FCB+0Ch) findet sich die Passworteinstellung. Die Funktion gibt A=0-3 bei Erfolg zurück, im Fehlerfall 0FFh. Ob der Stempel für Anlage oder Zugriff ist, ergibt sich aus dem Directory Kennzeichnungsbyte.

Weitere Informationen über das Format der Datums- und Zeitstempel fineden sich unter den Aufrufen für Datum und Zeit. Die Passworteinstellung ist in der nächsten Funktion dokumentiert.

BDOS Funktion 103 - Datei Passwort und Schutz setzen

Unterstützt von: MP/M II und später.

Aufruf mit C=67h, DE=FCB Adresse. Rückgabe von Fehlercodes in BA und HL.

Setzt Datei Passwort- und Schutzeinstellung. In FCB+12 (FCB+0Ch) muss die benötigte Passworteinstellung stehen und die DMA Adresse zeigt auf das aktuelle Passwort. Das Byte für die Passworteinstellung kann folgende Bits setzen:
Bit   Bedeutung wenn gesetzt
---------------------------------------------------------------------
7     Lesen erfordert Passwort
6     Schreiben erfordert Passwort
5     Löschen erfordert Passwort
0     Zuweisung des Passwortes an der Stelle DMA+8 zur Datei.
BDOS Funktion 104 - Datum und Uhrzeit stellen

Unterstützt von: MP/M II und später.

Aufruf mit C=68h, DE=Adresse des Zeitstempels.

Der Zeitstempel hat folgendes Format:
        DW      Tag     ;Tag 1 ist 1.Januar 1978
        DB      Stunde  ;Gepacktes BCD
        DB      Minute  ;Gepacktes BCD
Unter CP/M 3 wird der "Sekunden"-Zähler auf Null gesetzt bei Aufruf der Funktion. Ein Hinweis auf die Wandlung einer binären Zahl in eine gepackte BCD Zahl findet sich hier.

BDOS Funktion 105 - Datum und Uhrzeit holen

Unterstützt von: MP/M II und später.

Aufruf mit C=69h, DE=Adresse des Zeitstempels. Rückgabe A=Sekunden (gepacktes BCD).

Der Zeitstempel hat folgendes Format:
        DW      Tag     ;Tag 1 ist 1.Januar 1978
        DB      Stunde  ;Gepacktes BCD
        DB      Minute  ;Gepacktes BCD
Unter MP/M II und späteren Versionen werden die "Sekunden" im Akku zurückgegeben. Ein Hinweis auf die Wandlung einer gepackten BCD Zahl in eine binäre Zahl findet sich hier.

BDOS Funktion 106 - Passwort voreinstellen

Unterstützt von: MP/M II und darüber.

Aufruf mit C=6Ah, DE=Adresse des Passwortes.

Sellt ein Passwort ein, das für alle Dateioperationen erforderlich ist, wenn explizit kein Passwort angegeben wird.

BDOS Funktion 107 - Seriennummer holen

Unterstützt von: MP/M II und darüber.

Aufruf mit C=6Bh, DE=Adresse des Puffers.

Speichert eine 6 Byte lange Seriennummer an die Adresse in DE. Normalerweise besteht diese Nummer aus druckbaren ASCII Zeichen.

BDOS Funktion 108 - Rückgabe-Code holen oder setzen

Unterstützt von: CP/M 3 und darüber.

Aufruf mit C=6Ch, DE=Code. Rückgabe HL=Code.

Wenn DE=0FFFFh ist, wird der aktuelle Code in HL zurückgegeben. Andernfalls wird der Code auf den Wert in DE gesetzt. Erlaubte Werte sind:

00000h - 0FEFFh
0FF00h - 0FF7Fh
0FF80h - 0FFFCh
0FFFDh
0FFFEh
Kein schwerer Fehler
Schwerer Fehler
Reserviert
Programm beendet wegen eines Hardwarefehlers.
Programm beendet durch Control-C.

Wenn ein Programm durch ein anderes mit der Funktion 47 aufgerufen wurde, dann steht ein Fehlercode, das vom vorigen Programm erzeugt wurde, dem neuen Programm zur Verfügung. Im anderen Fall setzt der CCP den Rückgabe-Code auf Null, wenn er ein Programm aufruft.

Wenn der Fehlercode 0FF00h oder höher ist und das nächste Kommando mit dem Zeichen : beginnt, dann wird es nicht ausgeführt.

BDOS Funktion 109 - Konsole-Einstellung holen oder setzen

Unterstützt von: CP/M 3 und darüber

Aufruf mit C=6Dh, DE=Einstellung oder 0FFFFh. Rückgabe HL=Einstellung.

Die Einstellung ist eine Bitmap. Unter CP/M 3 sind die gültigen Bits:

0Wenn gesetzt erfasst Funktion 11 nur ^C.
1Wenn gesetzt hält ^S die Ausgabe auf den Bildschirm nicht an.
2Wenn gesetzt erweitert die Ausgabe keine Tabulatoren und wird auch nicht auf dem Drucker wiederholt selbst wenn ^P eingegeben wurde.
3Wenn gesetzt bricht ^C das Programm nicht ab.
4Verhält sich wie Bit 2.
8Diese bilden eine 2-Bit Zahl zur Steuerung von GET und SUBMIT:
9
0Gibt "bedingten" Zustand der Funktion 11 zurück. Programme, die die Funktion 11 zum Testen auf Abbruch (z.B. SID) nutzen, werden nicht unterbrochen, aber solche, die diese zum Testen der Eingabe verwenden, bekommen die Eingabe. Durchgeführt wird dies durch Rückgabe von "FALSE" und danach "TRUE".
1Funktion 11 gibt immer "TRUE" zurück.
2Funktion 11 gibt immer "FALSE" zurück.
3Zeitweises Abschalten von GET/SUBMIT, die Eingabe kommt von der Tastatur.

BDOS Funktion 110 - Endzeichen für Zeichenkette holen oder setzen

Unterstützt von: CP/M 3 und darüber

Aufruf mit C=6Eh, DE=0FFFFh oder ASCII Zeichen. Rückgabe ASCII Zeichen in A.

Diese Funktion holt oder setzt das Endzeichen für eine Zeichenkette (benutzt in der Funktion 9 um das Ende der Ausgabe zu markieren). Wenn DE=0FFFFh ist, wird das aktuelle ASCII Zeichen im Akku zurückgegeben; andernfalls wird das Endzeichen in E gesetzt.

BDOS Funktion 111 - Textbereich zur Konsole ausgeben

Unterstützt von: CP/M 3 und darüber

Aufruf mit C=6Fh, DE=Adresse des Zeichen Kontrollfeldes.

Das Zeichen Kontrollfeld hat folgende Gestalt:
        DW      Text_Anfang
        DW      Text_Länge
BDOS Funktion 112 - Textbereich zum Drucker ausgeben

Unterstützt von: CP/M 3 und darüber

Aufruf mit C=70h, DE=Adresse des Zeichen Kontrollfeldes.

Format des Zeichen Kontrollfeldes

BDOS Funktion 152 - Dateinamen bestimmen

Unterstützt von: MP/M, CP/M 3 und höher.

Aufruf mit C=98h, DE=Adresse des PFCB. Rückgabewert in HL.

Die Funktion bestimmt einen FCB aus einem ASCII Dateinamen. Das Format des PFCB hat folgende Gestalt:
        DEFW    ASCII-Adresse
        DEFW    FCB-Adresse
Der Rückgabewert in HL ist 0FFFFh beim ungültigen ASCII Dateinamen; 00000h bei Ende des ASCII Dateinamens mit Null (00) oder Wagenrücklauf (Carriage Return, 0D); im anderen Fall die Adresse des nächsten Zeichens hinter dem Dateinamen.

Der Dateiname kann beliebig aufgebaut sein bis hin zum vollständigen Format d:Dateiname.typ;Passwort (Passworte nur unter CP/M 3 und darüber). Wenn der Dateiname analysiert wird, wird das Passwort an die Stelle FCB+16 (FCB+10h) kopiert und die Länge abgelegt nach FCB+26 (FCB+1Ah).

[Unter ZPM3 kann der Dateiname das Format du:Dateiname.typ;Passwort annehmen. Ohne User Nummer wird FCB+13 (FCB+0Dh) Null gesetzt oder auf 1+Nummer im anderen Fall. Wenn ein Z-System geladen ist, dann kann ZPM3 Dateinamen auch bestimmen bestimmen im Format dir:Dateiname.typ;Passwort]

Der Dateiname kann durch eins der folgenedn Zeichen beendet werden: "space tab cr nul ; = > < . : , [ ] / |".


CP/M 2 Ein/Ausgabe Auswahl

Unter CP/M 2 wird die Geräteauswahl durch das BIOS getroffen. Einige BIOS Versionen können die Möglichkeit, die Gerätewahl (welches Gerät den Bilfschirm, Drucker usw. bedient) mittels des IOBYTE zu treffen, implementiert haben.

Das IOBYTE liegt in Adresse 0003h und kann mit den BDOS Aufrufen 7 und 8 (IOBYTE holen/setzen). Das Byte ist eine Bitmap:
     Bits      Bits 6,7    Bits 4,5    Bits 2,3    Bits 0,1
     Gerät     DRUCKER     STANZER     LESER       KONSOLE

      Wert
       00      TTY:        TTY:        TTY:        TTY:
       01      CRT:        PTP:        PTR:        CRT:
       10      LPT:        UP1:        UR1:        BAT:
       11      UL1:        UP2:        UR2:        UC1:

     BAT = Stapelverarbeitung (Batch Modus). Verwendet den aktuellen LESER
           für Konsoleingabe und den aktuellen DRUCKER für Konsolausgabe.
     CRT = Normale Konsole (Tastatur und Bildschirm).
     LPT = Normaler Zeilendrucker.
     PTP = Normaler Lochstreifenstanzer.
     PTR = Normaler Lochstreifenleser.
     TTY = Teletype Gerät, z.B. eine serielle Schnittstelle.
     UC1 = Vom Nutzer festgelegtes (d.h. abhängig von der Implementierung) Konsolgerät.
     UL1 = Vom Nutzer festgelegtes (d.h. abhängig von der Implementierung) Druckergerät.
     UPn = Vom Nutzer festgelegtes (d.h. abhängig von der Implementierung) Ausgabegerät.
     URn = Vom Nutzer festgelegtes (d.h. abhängig von der Implementierung) Eingabegerät.

Steuerzeichen unter CP/M 3

ZeichenNonbankedBanked
CTRL-A Nicht verfügbar Bewegt den Cursor ein Zeichen nach links
CTRL-B Nicht verfügbar Bewegt den Cursor an den Beginn der Zeile wenn nicht bereits dort; andernfalls bewegt er den Cursor an das Ende der Zeile
CTRL-C Abbruch des laufenden Programmes, wenn der Cursor am Anfang der Zeile steht. Der Console Mode kann die Abbruch-Funktion unterbinden
CTRL-E Erzwingt Ende der Eingabe Erzwingt Ende der Eingabe; steht der Cursor innerhalb der Zeile, werden die Zeichen vom Cursor bis zum Ende der Zeile in der nächsten Zeile ausgegeben
CTRL-F Nicht verfügbar Bewegt den Cursor ein Zeichen nach rechts
CTRL-G Nicht verfügbar Löscht das Zeichen an der Cursorposition; steht der Cursor am Ende der Zeile, hat das keine Auswirkung
CTRL-H Löscht ein Zeichen und bewegt den Cursor eine Position nach links Bewegt den Cursor eine Position nach links am Ende der Zeile; andernfalls löscht es das Zeichen links vom Cursor
CTRL-J (Zeilenvorschub) Beendet Zeileneingabe (Zeilenvorschub) Beendet Zeileneingabe; der Cursor kann beliebig innerhalb der Zeile stehen; die komplette Eingabe wird akzeptiert; der vorige Zeilenpuffer wird als Eingabezeile gesetzt
CTRL-K Nicht verfügbar Löscht alle Zeichen rechts vom Cursor und auf der Cursorposition
CTRL-M (Wagenrücklauf) Beendet Zeileneingabe (Wagenrücklauf) Beendet Zeileneingabe; der Cursor kann beliebig innerhalb der Zeile stehen; die komplette Eingabe wird akzeptiert; der vorige Zeilenpuffer wird als Eingabezeile gesetzt
CTRL-P Gibt Ausgabe auf Konsole auf den Drucker.
CTRL-R Gibt die aktuelle Zeile nach der nächsten Zeile aus Gibt die Zeichen links vom Cursor an einer neuen Zeile aus
CTRL-U Löscht aktuelle Zeile nach nächster Zeile Schreibt Zeichen links vom Cursor in den vorigen Puffer; löscht die aktuelle und geht in die nächste Zeile
CTRL-W Nicht verfügbar Ruft die vorige Zeile ab falls aktuelle Zeile leer ist; andernfalls wird der Cursor an das Zeilenende bewegt
CTRL-X Löscht alle Zeichen bis zum Beginn der aktuellen Zeile Löscht alle Zeichen links vom Cursor
DELete Löscht das letzte Zeichen und gibt es aus

Eine binäre Zahl im Akku kann wie folgt in eine BCD Zahl gewandelt werden:
        cp      10
        ret     c               ;Wenn 0..9 dann sind die Zahlen gleich
        ld      b,a
        xor     a
int2bcd:
        inc     a
        daa
        djnz    int2bcd
        ret                     ;Akku hält gepackte BCD Zahl
Eine BCD Zahl im Akku kann wie folgt in eine binäre Zahl gewandelt werden:
        ld      b,a
        and     0f0h            ;Höherwertige Bits maskieren
        rrca
        rrca
        rrca
        ld      c,a
        add     a,a
        add     a,a
        add     a,c
        ld      c,a
        ld      a,b
        and     00fh            ;Niederwertige Bits maskieren
        add     a,c             ;Akku hält nun die Binärzahl
        ret

Letzte Änderung: 29.Januar 2008