Die Referenz

Inhaltsverzeichnis
Interrupt 10h - Der Videointerrupt
Interrupt 11h - Systemkonfiguration
Interrupt 12h - Speichergröße
Interrupt 13h - Disketten- und Festplattenzugriff
Interrupt 14h - Zugriff auf die serielle Schnittstelle
Interrupt 15h - AT-spezifische Funktionen
Interrupt 16h - Tastaturzugriff
Interrupt 17h - Druckerzugriff
Interrupt 18h - ROM-BASIC starten
Interrupt 19h - System booten
Interrupt 1Ah - Zugriff auf die Systemuhr
Interrupt 1Bh - Control-Break-Handler (nicht für Ctrl-C)
Interrupt 1Ch - Timer-Interrupt
Interrupt 1Dh - Zeiger auf Videotabelle
Interrupt 1Eh - Zeiger auf Laufwerkstabelle
Interrupt 1Fh - Zeiger auf Grafikzeichentabelle
Interrupt 21h - Der DOS-Interrupt
Interrupt 33h - Der Mouse-Interrupt

Zuerst werden die Funktionen der verschiedenen Software-BIOS-Interrupts vorgestellt, danach die Funktionen, die der sogenannte DOS-Interrupt (Interrupt 21h) bietet und danach die Funktionen des Mouse-Interrupts 33h

Einige Funktionen bieten Unterfunktionen. Dies drückt sich darin aus, daß die Hauptfunktionsnummer immer die gleiche bleibt und in einem weiteren Register die Unterfunktionsnummer steht.
In den Tabellen sollten Sie sich nicht davon verwirren lassen, daß mehrfach nacheinander die gleiche Hauptfunktionsnummer auftaucht, die entscheidende Unterfunktionsnummer steht dann in der zweiten Spalte.

Interrupt 10h - Der Videointerrupt

Die Funktionen des Videointerrupts 10h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Video-Modus setzen
AL: Modusnummer
keine;
Videomodi siehe nächste Tabelle
01h Cursorgröße einstellen
CH: Startzeile
CL: Endzeile
keine;
Bei VGA-Karten nur im Bereich von 00h bis 0Dh
02h Cursor positionieren
BH: Videoseite
DL: Cursorspalte
DH: Cursorzeile
keine;
Die Zählung beginnt in der linken oberen Ecke mit 0,0
Bei Werten oberhalb der eigentlich möglichen kann der Cursor verschwinden
03h Cursorposition und Größe lesen
BH: Videoseite
DL: aktuelle Spalte DH: aktuelle Zeile
CH: Startzeile
CL: Endzeile
04h Lichtgriffel lesen AH: Erfolgskennzeichen (00h=kein Lichtgriffel, 01h=Griffel angeschlossen
DL: Textspalte Lichtgriffel
DH: Textzeile Lichtgriffel
BX: Grafikspalte Lichtgriffel
CH: Grafikzeile Lichtgriffel
05h Videoseite wählen
AL: Seitennummer
keine;
Die Videoseitenzählung beginnt bei 0 (Null)
Standardmäßig ist Seite 0 eingeblendet
06h Aufwärts rollen
AL: Anzahl Zeilen
CL: Spalte oben links
CH: Zeile oben links
DL: Spalte unten rechts
DH: Zeile unten rechts
BH: Attribut
keine
Innerhalb des gewählten Fensters werden die Zeilen nach oben verschoben. Für jede Zeile, die oben aus diesem Bereich verschwindet wird unten eine leere Zeile eingefügt. Das Attribut bestimmt das Aussehen der neu hinzukommenden Zeilen. Wird für die Zeilenanzahl der Wert 0 (Null) gewählt, dann wird der Bereich gelöscht und entsprechend dem Attrubut eingefärbt
07h Abwärts rollen
AL: Anzahl Zeilen
CL: Spalte oben links
CH: Zeile oben links
DL: Spalte unten rechts
DH: Zeile unten rechts
BH: Attribut
keine
Innerhalb des gewählten Fensters werden die Zeilen nach unten verschoben. Für jede Zeile, die unten aus diesem Bereich verschwindet wird oben eine leere Zeile eingefügt. Das Attribut bestimmt das Aussehen der neu hinzukommenden Zeilen. Wird für die Zeilenanzahl der Wert 0 (Null) gewählt, dann wird der Bereich gelöscht und entsprechend dem Attribut eingefärbt
08h Zeichen an der aktuellen Position lesen
BH: Videoseite
AL: ASCII-Code des Zeichens
AH: Attribut des Zeichens
09h Zeichen und Attribut setzen
BH: Videoseite
AL: ASCII-Code des Zeichens
BL: Attribut
CX: Zeichenzahl
keine;
Steuercodes werden angezeigt;
Cursorposition wird nicht verändert;
Zeichenzahl gibt an, wie oft das Zeichen geschrieben wird
0Ah Zeichen wiederholt setzen
BH: Videoseite
AL: ASCII-Code des Zeichens
CX: Zeichenzahl
keine;
Steuercodes werden angezeigt
Cursorposition wird nicht verändert
0Bh Hintergrundfarbe setzen
BH: 00h
BL: Rahmen/Hintergrundfarbe
keine
0Bh Farpalette wählen
BH: 01h
BL: Palettennummer
keine
0Ch Pixel setzen
CX: Grafikspalte
DX: Grafikzeile
AL: Farbwert
keine;
Farbwert gilt nur relativ innerhalb einer Palette, nicht absolut
0Dh Pixel lesen
BH: Videoseite CX: Grafikspalte
DX: Grafikzeile
AL: Farbwert;
Wenn AL=00h dann hat der Punkt die Hintergrundfarbe, ist also gelöscht
0Eh Zeichen im TTY-Modus schreiben
BH: Videoseite (0 zeigt Grafik)
AL: ASCII-Code des Zeichens
BL: Vordergrundfarbe (nur Grafik)
keine;
Steuercodes werden ausgeführt, es werden nur Zeichen geschrieben
0Fh Videostatus lesen AL: Videomodusnummer
AH: Anzahl Zeichen je Zeile
BH: aktuelle Videoseite
10h verändere Palette-Register
AL: 00h
BL: Plettennummer
BH: Videoseite
keine
10h Rahmenfarbe wählen
AL: 01h
BH: Farbwert
keine
10h alle Palettenregister und Rahmenfarbe setzen
AL: 02h
ES:DX: Adresse Parametertabelle
keine
10h Hintergrundintensität setzen
AL: 03h
BL: Intensitätsbit
keine;
Wenn BL=1 dann gilt Attributbit 7 als Blinkbit, sonst HiColor
10h Palettenregister auslesen
AL: 07h
BL: Palettennumer
BH: Farbwert
10h Rahmenfarbe lesen
AL: 08h
BH: Rahmenfarbe
10h AL: 09h
ES:DX: Adresse einer 17-Byte-Parametertabelle
die ersten 16 Werte := Farbregistern, der 17. := Rahmenfarbe
10h DAC-Farbregister setzen
AL: 10h
BX: Registernummer
CL: Blauanteil
CH: Grünanteil
DH: Rotanteil
keine
10h mehrere DAC-Farbregister setzen
AL: 12h
BX: Nummer des ersten Farbregisters
CX: Registeranzahl
ES:DX: Adresse einer Parametertabelle
keine;
Ausgehend vom ersten Register in BX werden CX Farbregister mit neuen Werten belegt
10h Internes Register setzen
AL: 13h
BL: Registerauswahl
BH: Wert für Register oder Bit
keine
10h DAC-Farbregister lesen
AL: 15h
BX: Registernummer
CL: Blauanteil
CH: Grünanteil
DH: Rotanteil
10h Mehrere DAC-Register lesen
AL: 17h
BX: Nummer des ersten Registers
CX: Registeranzahl
ES:DX: Adresse Parametertabelle
keine
10h DAC-Maskierungsregister setzen
AL: 18h
BL: neuer Wert
keine
10h DAC-Maskierungsregister lesen
AL: 19h
BL: Wert des Maskierungsregisters
10h Interne Register lesen
AL: 1Ah
BL: Bit 7 des Modus-Registers
BH: Bits des Farbauswahlregisters
10h Graustufen zuordnen
AL: 1Bh
BX: 1. Farbregister
CX: Anzahl Farbregister
keine
11h Lade Zeichensatz mit Reset
AL: 00h
BH: Byteanzahl je Zeichen
BL: Blocknummer
CX: Zeichenanzahl
DX: Videospeicheroffset
ES:BP: Adresse Zeichensatz
Blocknummer ist die Zahl, ab der der neue Zeichensatz den alten substituieren soll;
max 32 Bytes je Zeichen
11h Monochromzeichensatz mit Reset laden
AL: 01h
BL: Blocknummer
lädt den 9x14-Zeichensatz
11h 8x8-Zeichensatz mit Reset laden
AL: 02h
BL: Blocknummer
keine
11h Zeichensatz auswählen
AL: 03h
BL: Wert für Character-Map-Select-Register
Bits 5/3/2: Zeichensatz
Bits 4/1/0: Zeichensatz A
Bits 6/7: nicht belegt
11h 8x16-Zeichensatz mit Reset laden
AL: 04h
BL: Blocknummer
keine
11h Zeichensatz laden
AL: 10h
BH: Bytes je Zeichen
BL: Blocknummer
CX: Zeichenanzahl
ES:BP: Adresse Zeichensatz
keine
11h Monochrom-Zeichensatz setzen
AL: 11h
BL: Blocknummer
keine
11h 8x8-Zeichensatz setzen
AL: 12h
BL: Blocknummer
keine
11h 8x16-Zeichensatz setzen
AL: 14h
BL: Blocknummer
keine
11h Benutzerzeichensatz für Int 1Fh einrichten
AL: 20h
ES:BP: Adresse Zeichensatz
keine;
Zeichensatzdefinition für Zeichen 128-255, nur Videomodi 4,5 und 6
11h Benutzerzeichensatz einrichten
AL: 21h
BL: Bildschirmzeilen
CX: Bytezahl je Zeichen
DL: Zeilenanzahl
ES:BP: Adresse Zeichensatz
keine
11h 8x14-Zeichensatz für Grafikmodus setzen
AL: 22h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11h 8x8-Zeichensatz in doppelter Dichte setzen
AL: 23h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11h 8x16-Zeichensatz für Grafikmodus setzen
AL: 24h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11h Zeichensatzinformationen auslesen
AL: 30h
BH: Zeichensatz (Codierung siehe außerhalb der Tabelle)
CX: Byte je Zeichen
DL: Anzahl Bildschirmzeilen
ES:BP: Adresse Zeichensatz
12h Hardcopy-Routine festlegen
BL: 20h
AL: 00h
keine
12h Rasterzeilen festlegen
BL: 30h
AL: Rasterzeilenzahl
(Angabe: 0/1/2=2007350/400 Rasterzeilen)
AL: Fehlercode(12h=fehlerfrei)
12h Laden der Standardpalette erlauben/verbieten
BL: 31h
AL: 0/1 = erlauben/verhindern
AL: Fehlercode(12h=fehlerfrei)
12h Bildschirmzugriff ein/ausschalten
BL: 32h
AL: 0/1 = ein/aus
AL: Fehlercode(12h=fehlerfrei)
12h Graustufenumwandlung ein/ausschalten
BL: 33h
AL: 0/1 = ein/aus
AL: Fehlercode(12h=fehlerfrei)
12h Bildschirmumschaltung
BL: 35h
AL: Modus
schaltet zwischen 2 Grafikkarten um; nur PS/2
12h Monitor ein/ausschalten
BL: 36h
AL: 0/1 = ein/aus
AL: Fehlercode
13h Textstring ausgeben
AL: Ausgabemodus
BL: Zeichenattribut
CX: Stringlänge
DL: Textspalte
DH: Textzeile
BH: Videoseite
ES:BP: Adresse des Strings
Modus: 0=Attribut in BL, Cursorpos. nicht ändern
1=Attribut in BL, Cursorposition ändern
2=Attribut im String enthalten, Cursorpos. nicht ändern
3=Attribut im String enthalten, Cursorposition ändern
1Ah Grafikkarte ermitteln
AL: 00h
BL: aktive Grafikkarte
BH: passive Grafikkarte
1Ah aktuelle Grafikkarte setzen
AL: 01h
BL/BH: aktive/passive Grafikkarte
wenn korrekt verlaufen dann AL= 1AH
1Bh Video-BIOS-Informationen lesen
BX: 00h
ES:DI: Adresse eines 64-Byte-Puffers
wenn korrekt verlaufen dann AL=1Bh
1Ch Puffergröße für Zustandinformationen durch Unterfunktion 01h ermitteln
AL: 00h
CX: Bereich
(0=Hardwarestatus,
1=BIOS-Datenbereich,
2=DAC-Status)
AL: Fehlercode (1CH=kein Fehler)
BX: Puffergröße in Einheiten zu 64 Bytes
1Ch Zustand lesen
AL: 01h
CX: Bereich
ES:BX: Pufferadresse
AL: Fehlercode (1CH=kein Fehler)
1Ch Zustand setzen
AL: 02h
CX: Bereich
AL: Fehlercode (1CH=kein Fehler)

Grafikmodi
Video-Modus Auflösung Anzahl Farben Grafikkarten
00h Text (40x25) 2 CGA, EGA, MCGA, VGA
01h Text (40x25) 16 CGA, EGA, MCGA, VGA
02h Text (80x25) 2 CGA, EGA, MCGA, VGA
03h Text (80x25) 16 CGA, EGA, MCGA, VGA
04h Grafik (320x200) 2 CGA, EGA, MCGA, VGA
05h Grafik (320x200) 4 CGA, EGA, MCGA, VGA
06h Grafik (640x200) 2 CGA, EGA, MCGA, VGA
07h Text (80x25) 2 MDA, HERCULES
0Dh Grafik (320x200) 16 EGA, VGA
0Eh Grafik (640x200) 16 EGA, VGA
0Fh Grafik (640x350) 2 EGA, VGA
10h Grafik (640x350) 16 EGA, VGA
11h Grafik (640x480) 2 MCGA, VGA
12h Grafik (640x480) 16 VGA
13h Grafik (320x200) 256 MCGA, VGA

Die einzelnen Paletten
Palette 0 Palette 1 Palette 2 Palette 3
Grün Türkis Hellgrün Helltürkis
Rot Magenta Hellrot Lila
Braun Hellgrau Gelb Weiß

Zeichensatzcodierung (Funktion 11h/30h)
Code Zeichensatz
00h Zeichensatz von Interrupt 1Fh
01h Zeichensatz von Interrupt 43h
02h 8x14 ROM-Zeichensatz
03h 8x8 ROM-Zeichensatz für ASCII 00h bis 79h
04h 8x8 ROM-Zeichensatz für ASCII 80h bis FFh
05h 9x14 ROM-Zeichensatz
06h 8x16 ROM-Zeichensatz
07h 9x16 ROM-Zeichensatz

Grafikkarteninformationen (Funktion 1Ah/00h)
Wert Grafikkarte
00h keine Karte
01h MDA
02h CGA
04h EGA mit Farbmonitor
05h EGA mit Schwarz-Weiß-Monitor
06h EGA
07h VGA mit analogem Schwarz-Weiß-Monitor
08h VGA mit analogem Farbmonitor
0Ah MCGA mit digitalem Farbmonitor
0Bh MCGA mit analogem Schwarz-Weiß-Monitor
0Ch MCGA mit analogem Farbmonitor
0Fh unbekannte Werte

Video-BIOS-Informationen
Offset Datentyp Bedeutung
00h DWord Adresse der Modusinformationstabelle
04h Byte Aktueller Videomodus
05h Word Anzahl dargestellter Zeichenspalten
07h Word Länge des dargestellten Bereiches des Bildschirmspeichers
09h Word Startadresse der Bildschirminfos im Bildschirmspeicher
0Bh 16 Bytes Tabelle der Cursorpositionen (X;Y) für 8 Videoseiten
1Bh Byte Startzeile der Cursordarstellung
1Ch Byte Endzeile der Cursordarstellung
1Dh Byte aktuelle Bildschirmseite
1Eh Word Port-Adresse des CRTC-Registers
20h Byte Inhalt des Modusregisters des CRTC
21h Byte Inhalt des Palettenregisters des CRTC
22h Byte Anzahl der dargestellen Zeichenzeilen
23h Word Höhe eines Zeichens in Scanzeilen
25h Byte Aktive Videokarte
26h Byte Passive Videokarte
27h Word Anzahl gleichzeitig dargestellter Farben
29h Byte Anzahl möglicher Bildschirmseiten
2Ah Byte Scan-Zeilen des akt. Videomodus:
0 = 200 Zeilen,
1 = 350 Zeilen,
2 = 400 Zeilen,
3 = 480 Zeilen
2Bh Byte VGA-Zeichensatz, der bei abgeschaltetem Attributbit 3 verwendet wird (nur VGA-Karte
2Ch Byte VGA-Zeichensatz, der bei eingeschaltetem Attributbit 3 verwendet wird (nur VGA-Karte)
2Dh 4 Bytes Reserviert
31h Byte Bildschirmspeichergröße:
Wenn 0/1/2/3 dann 64/128/192/256 KByte
32h 14 Bytes Reserviert

Modus-Informationstabelle
Offset Datentyp Bedeutung
00h Byte unterstützte Videomodi:
sind die Bits 0 bis 7 gesetzt, so unterstützt die Karte die entsprechenden Videomodi 00h - 07h
01h Byte unterstützte Videomodi:
sind die Bits 0 bis 7 gesetzt, so unterstützt die Karte die entsprechenden Videomodi 08h - 0Fh
02h Byte unterstützte Videomodi:
sind die Bits 0 bis 3 gesetzt, so unterstützt die Karte die entsprechenden Videomodi 10h - 13h
Die Bits 4-7 sind reserviert
03h 4 Bytes reserviert
07h Byte Scanzeilen in den alphanumerischen Modi:
Bit 0/1/2=1 dann 200/350/400 Zeilen
08h Byte maximale Anzahl darstellbarer Zeichensätze
09h Byte Anzahl der verfügbaren Zeichensätze im Zeichensatzspeicher
0Ah Byte reserviert

Interrupt 11h - Systemkonfiguration

Eingabe: keine
Ausgabe: AX: Konfigurationswort
Konfigurationswort für ATs und PS/2
Bitnummer Bedeutung
0 gesetzt wenn mind. 1 Diskettenlaufwerk angeschlossen ist
1 gesetzt wenn ein Coprozessor vorhanden ist
2-3 ungenutzt
4-5 Videomodus nach Einschalten
00b=unbekannt
01b=40x25 Color
10b=80x25 Color
11b=80x25 einfarbig
6-7 Anzahl angeschlossener Diskettenlaufwerke
00b:=1 bis 11b:=4
8 ungenutzt
9-11 Anzahl serieller Karten
12-13 reserviert
14-15 Anzahl paralleler Karten

Interrupt 12h - Speichergröße

Eingabe: keine
Ausgabe: Speichergröße in KB bis zu 1 MB

Interrupt 13h - Disketten- und Festplattenzugriff

Die Funktionen des Interrupts 13h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Laufwerk initialisieren
DL: Laufwerksnummer (0:=alle, 1:=A usw)
Wenn CF=1 dann Fehler und AH=Fehlercode
01h Status lesen
DL: Laufwerksnummer (0:=akt. LW, 80h:= 1. Festplatte)
Wenn CF=1 dann Fehler und AH=Fehlercode
02h Sektoren lesen
DL: LW-Nr. (0:=A, 1:=B, 80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Lesepuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
Der Lesepuffer muß für einen Sektor ausreichend groß dimensioniert sein (512 Bytes und größer)
03h Sektoren schreiben
DL: LW-Nr. (0:=A, 1:=B, 80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Schreibpuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
04h Sektoren prüfen
DL: LW-Nr. (0:=A, 1:=B, 80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Überprüfungspuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
05h Spuren oder Zylinder formatieren
DL: LW-Nr. (0:=A, 1:=B, 80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Formatpuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
06h Spur kennzeichnen
DL: Festplattennummer (80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektorregister (Bit 6 und 7 bilden Bit 8 und 9 von CH)
Wenn CF=1 dann Fehler und AH=Fehlercode
07h Zylinder ab CH formatieren
DL: LW-Nr. (0:=A, 1:=B, 80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Formatpuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
08h Format ermitteln
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
DL: Festplattenanzahl
CH: Zylinderanzahl
CL: Sektorenanzahl
09h Fremdlaufwerke anpassen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
0Ah erweiterte Sektoren lesen
DL: Festplattennummer (80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Lesepuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
0Bh erweiterte Sektoren schreiben
DL: Festplattennummer (80h:=1. Festplatte)
DH: Seiten/Kopfnummer
CH: Spur/Zylindernummer
CL: Sektornummer
AL: Sektorenanzahl
ES:BX: Adresse Lesepuffer
Wenn CF=1 dann Fehler und AH=Fehlercode
0Ch Schreib/Lesekopf bewegen
DL: LW-NR (0:=A, 80h:=C)
CX: Spur/Zylindernummer
DH: Kopfnummer
Wenn CF=1 dann Fehler und AH=Fehlercode
10h Überprüfung der Laufwerksbereitschaft
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
11h Plattenköpfe parken
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
13h Sektor 0 überprüfen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
14h Controller testen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
15h Diskettentyp ermitteln
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
16h Diskettenwechsel ermitteln
DL: DiskLW-Nr.
AH: Wechselflag (0:=kein Wechsel; 6:=Wechsel)
17h Diskettenformat fixieren
AL: Diskettenformat
Wenn CF=1 dann Fehler und AH=Fehlercode
19h Plattenköpfe parken
DL: Festplattennummer
Wenn CF=1 dann Fehler und AH=Fehlercode

Fehlercodes für die Funktionen 00h bis 16h
Code Bedeutung Code Bedeutung
00h Kein Fehler 01h Illegale Funktionsnummer
02h Keine Adressmarkierung 04h Sektor nicht gefunden
05h Reset war erfolglos 07h Fehlerhafte Initialisierung
09h Segmentgrenzenüberlauf des DMA 10h Lesefehler
11h Daten trotz falscher Prüfsumme gelesen 20h Fehler des Controllers
40h Spur nicht gefunden 80h Laufwerk reagiert nicht
BBh BIOS-Fehler FFh nicht aufschlüsselbarer Fehler

Fehlercodes für die Funktionen 17h und 19h
Code Bedeutung Code Bedeutung
01h Illegale Funktionsnummer 02h Keine Adressmarkierung
03h Diskette ist schreibgeschützt 04h Sektor nicht gefunden
08h Überlauf des DMA 09h Segmentgrenzenüberlauf
10h Lesefehler 20h Fehler des Controllers
40h Spur nicht gefunden 80h Laufwerk reagiert nicht

Interrupt 14h - Zugriff auf die serielle Schnittstelle

Die Funktionen des Interrupts 14h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Initialisierung
DX: Schnittstellennummer(0:=COM1)
AL: Konfigurationscode
AH: Zeilenstatus
AL: Modemstatus (s. unten)
01h Zeichen senden
DX: Schnittstellennummer(0:=COM1)
AL: Zeichencode
AH: Zeilenstatus
02h Zeichen lesen
DX: Schnittstellennummer(0:=COM1)
AH: Zeilenstatus
AL: Zeichencode des Zeichens
03h Status erfragen
DX: Schnittstellennummer(0:=COM1)
AH: Zeilenstatus
AL: Modemstatus
04h erweiterte Initialisierung vornehmen
AL: Break-Zustand
BH: Parität
BL: Stopbitanzahl
CH: Datenbitanzahl
CL: Baudrate
DX: Schnittstellennummer(0:=COM1)
AH: Leitungszustand
AL: Modemstatus

Konfigurationscode
Bitnummer Bedeutung
0 Datenbitflag: 0=7 Datenbits, 1=8 Datenbits
1 muß immer 1 sein
2 Stopbitflag: 0=1 Stopbit, 1=2 Stopbits
3 Paritätsbitflag: 0=keine Parität, 1=mit Parität
4 Paritätsmodus: 0=ungerade Parität, 1=gerade Parität
5-7 Code der Baudrate
000: 110 Baud; 001: 150 Baud; 010: 300 Baud
011: 600 Baud; 100: 1200 Baud; 101: 2400 Baud
110: 4800 Baud; 111: 9600 Baud

Zeilenstatus / Leitungsstatus
Bitnummer Bedeutung
0 Daten stehen zum Empfang bereit (Data ready)
1 Datenüberlauf (Overrun Error)
2 Paritätsfehler
3 Protokollfehler
4 Unterbrechung erkannt
5 Übertragungs-Halteregister frei
6 Übertragungsschieberegister frei
7 Timeoutfehler

Modemstatus
Bitnummer Bedeutung
0 (D) Klar zum Senden
1 (D) Modem ist bereit
2 (D) Telefon läutet
3 (D) Datenträgersignal erkannt
4 Klar zum Senden
5 Modem ist bereit
6 Telefon läutet
7 Datenträgersignal erkannt

Interrupt 15h - AT-Spezifische Funktionen

Die Funktionen des Interrupts 15h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Kassettenrecordermotor einschalten keine
01h Kassettenrecordermotor ausschalten keine
02h Kassettenblock lesen
CX: Byteanzahl
ES:BX: Adresse Lesepuffer
DX: Anzahl gelesener Bytes
AH: Kassettenstatus
03h Kassettenblock schreiben
CX: Byteanzahl
ES:BX: Adresse Schreibpuffer
Kassettenstatus
83h Flag nach Intervall setzen
ES:BX: Adresse des Flags
CX: Timerwert HI
DX: Timerwert LO
keine;
Die Angabe erfolgt in Millisekunden
Der Rechner ist während dieser Zeit nicht blockiert
84h Joystick-Zugriff
DX:=0: Feuerknopfstatus ermitteln
DX:=1: Joystickstellung ermitteln
CF zeigt Fehler
AL: Status der Feuerknöpfe
CF zeigt Fehler
AX: X-Stellung Joystick 1
BX: Y-Stellung Joystick 1
CX: X-Stellung Joystick 2
DX: Y-Stellung Joystick 2
85h SysReq ausführen
AL: Statusflag
keine
86h Intervall abwarten
CX: Timerwert HI
DX: Timerwert LO
keine
Der Rechner ist blockiert bis die Millisekunden abgelaufen sind
87h Speicherblock verschieben
CX: Anzahl zu verschiebender Words
ES:SI: Adresse einer GDT
CF zeigt Fehler
ACX: Fehlercode
88h Größe des Extended Memory ermitteln AX: Größe des HI-Speichers
89h In den Protected Mode schalten keine

Interrupt 16h - Tastaturzugriff

Die Funktionen des Interrupts 16h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Tastaturcode aus Puffer lesen Wenn AL=00h dann in AH erw. Tastaturcode
sonst: AL: ASCII und AH: Scancode
Falls keine Zeichen im Puffer, dann wird gewartet
01h Tastaturpuffer prüfen Wenn ZF=1 dann keine Zeichen im Puffer
Wenn ZF=1 dann AX: nächstes auszugebendes Zeichen
02h Tastaturstatus lesen AL: Tastaturstatus
Bit 0=1: Shift rechts
Bit 1=1: Shift links
Bit 2=1: CTRL
Bit 3=1: ALT
Bit 4=1: Scroll Lock
Bit 5=1: Num Lock
Bit 6=1: Caps Lock
Bit 7=1: Ins
05h Zeichen in Puffer stellen
CL: ASCII-Code des Zeichens
keine
10h Tastaturcode aus Puffer lesen wie Funktion 00h
Diese Funktion erkennt F11 und F12
11h Tastaturpuffer prüfen wie Funktion 01h
Diese Funktion erkennt F11 und F12
12h Tastaturstatus lesen wie Funktion 02h

Interrupt 17h - Druckerzugriff

Die Funktionen des Interrupts 17h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Zeichen parallel ausgeben
DX: Schnittstellennummer
AL: Zeichencode
AH: Schnittstellenstatus
01h Initialisierung
DX: Schnittstellennummer (0=LPT1)
AH: Schnittstellenstatus
02h Schnittstellenstatus ermitteln
DX: Schnittstellennummer
AH: Schnittstellenstatus

Schnittstellenstatus
Bitnr. Zustand Bitnr. Zustand
0 Timeout-Fehler 4 On Line
1 ist immer 0 5 Papierende
2 ist immer 0 6 Empfangsbestätigung
3 Ein/Ausgabefehler 7 Beschäftigt

Interrupt 18h - ROM-BASIC starten

Eingabe: keine
Ausgabe: keine

Interrupt 19h - System booten

Eingabe: keine
Ausgabe: keine

Wenn der Computer gebootet wird (Kaltstart), dann wird nach einigen Sekunden eine Tabelle angezeigt, in der wichtige Informationen über den Systemzustand enthalten sind, z. B. Anzahl der Festplatten und Diskettenlaufwerke, Festplattenmodi (PIO4, UDMA), Portadressen der parallelen und seriellen Schnittstellen usw.
Ohne weitere Angaben wird der PC durch diesen Interrupt neu gestartet, überspringt aber die die ersten Tätigkeiten wie zum Beispiel das Hochzählen des Speichers. Er würde an der Stelle einsetzen, an der bei einem Kaltstart die eben angesprochene Tabelle gezeigt wird und versuchen, ein Betriebssystem ausfindig zu machen

Interrupt 1Ah - Zugriff auf die Systemuhr

Die Funktionen des Interrupts 1Ah
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Zeitzähler lesen CX: Timerwert HI
DX: Timerwert LO
AL: 24-Stundenzähler
01h Zeitzähler setzen
CX: Timerwert HI
DX: Timerwert LO
keine
02h RTC-Uhr auslesen CF zeigt Fehler
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
03h RTC-Uhr setzen
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
DL: Sommerzeit-Flag (1=Sommerzeit)
CF zeigt Fehler
04h RTC-Datum auslesen CF zeigt Fehler
CH: Jahrhundert (BCD)
CL: Jahr (BCD)
DH: Monat (BCD)
DL: Tag (BCD)
05h RTC-Datum setzen
CH: Jahrhundert (BCD)
CL: Jahr (BCD)(im Bereich 19-20)
DH: Monat (BCD)
DL: Tag (BCD)
CF zeigt Fehler
06h RTC-Alarmzeit setzen
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
CF zeigt Fehler
07h RTC-Alarmzeit löschen CF zeigt Fehler

Interrupt 1Bh - Control-Break-Handler (nicht für Ctrl-C)

Eingabe: keine
Ausgabe: keine

Interrupt 1Ch - Timer-Interrupt

Eingabe: keine
Ausgabe: keine

Interrupt 1Dh - Zeiger auf Videotabelle

Eingabe: keine
Ausgabe: keine

Interrupt 1Eh - Zeiger auf Laufwerkstabelle

Eingabe: keine
Ausgabe: keine

Interrupt 1Fh - Zeiger auf Grafikzeichentabelle

Eingabe: keine
Ausgabe: keine

Interrupt 21h - Der DOS-Interrupt

Die Funktionen des Interrupts 21h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Programm beenden
CS: PSP-Segmentadresse
keine
01h Zeicheneingabe mit Echo AL: ASCII-Code
02h Zeichen darstellen
DL: ASCII-Code
keine
03h Eingabe von serieller Schnittstelle AL: ASCII-Code des Zeichens
04h Ausgabe an serielle Schnittstelle
DL: Zeichencode
keine
05h Ausgabe an Parallelschnittstelle
DL: Zeichencode
keine
06h Zeichenein/ausgabe direkt
DL: wenn 255 dann Zeichen einlesen
alles andere ausgeben
wenn einlesen, dann in AL Zeichencode
07h Zeicheingabe direkt AL: Zeichencode
08h Zeicheneingabe AL: Zeichencode
09h Zeichenkettenausgabe
DS:DX: Adresse des Strings
keine
Der String muß mit einem Dollar-Zeichen enden
0Ah Zeichenketteneingabe
DS:DX: Adresse des Puffers
Puffer[0]: max. Länge
Puffer[1]: tatsächliche Länge
ab Puffer[2] dann die Zeichen ohne abschließendes ENTER
0Bh Eingabestatus lesen AL: Statusflag (00=kein Zeichen verfügbar; 0FFh=mind. ein Zeichen)
0Ch Eingabepuffer löschen und Funktion aufrufen
AL: Funktionsnummer
AL: Löschflag (nur gültig, wenn Funktionsnummer nicht 01h, 06h, 07h, 08h, oder 0Ah war)
Um nur den Eingabepuffer zu löschen: AL=00
0Dh Laufwerke zurücksetzen keine
0Eh Laufwerk auswählen
DL: Laufwerkscode (00=A:, 01=B:)
AL: Anzahl installierter Blocktreiber
0Fh FCB-Datei öffnen
DS:DX: Adresse FCB
AL: Statuscode
10h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
11h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
12h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
13h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
14h sequentiell lesen
DS:DX: Adresse FCB
AL: Statuscode
15h sequentiell schreiben
DS:DX: Adresse FCB
AL: Statuscode
16h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
17h FCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
19h aktuelles Laufwerk bestimmen AL: Gerätecode (00=A:)
1Ah DTA setzen
DS:DX: DTA-Adresse
keine
1Bh Standardlaufwerksinformationen ermitteln AL: Sektoren/Cluster
CX: Bytes/Sektor
DX: Cluster/Laufwerk
DS:BX: Adresse FAT-ID-Byte
1Ch Laufwerksinformationen ermitteln
DL: Laufwerks-code (00=akt. 01=A:)
AL: Sektoren/Cluster
CX: Bytes/Sektor
DX: Cluster/Laufwerk
DS:BX: Adresse FAT-ID-Byte
1Fh aktuelle DPB-Adresse ermitteln DS:BX: Adresse DPB
21h FCB-Dateidirektzugriff Lesen
DS:DX: Adresse FCB
AL: Statuscode
22h FCB-Dateidirektzugriff Schreiben
DS:DX: Adresse FCB
AL: Statuscode
23h FCB-Dateigröße ermitteln
DS:DX: Adresse FCB
AL: Statuscode
24h FCB-Datensatznummer setzen
DS:DX: Adresse FCB
AL: Statuscode
25h Interrupt-Vektor setzen
AL: Interruptnummer
DS:DX: Adresse der ISR
keine
26h neuen PSP erstellen
DX: Segmentadresse des neuen PSP
keine
27h FCB-Datei Direktzugriff
Blockweise lesen
DS:DX: Adresse FCB
CX: Datensatzzahl
CX: Zahl gelesener Datensätze
AL: Statuscode
28h FCB-Datei Direktzugriff
Blockweise schreiben
DS:DX: Adresse FCB
CX: Datensatzzahl
CX: Zahl geschriebener Datensätze
AL: Statuscode
29h FCB-Dateinamen umwandeln
DS:SI: Adresse String
ES:DI: Adresse FCB
AL: Statuscode
2Ah Datum ermitteln AL: Wochentag (0=Sonntag)
CX: Jahr (Offset zu 1980)
DH: Monat
DL: Tag im Monat
2Bh Datum setzen
CX: Jahr (Offset zu 1980)
DH: Monat
DL: Tag im Monat
AL: Statusflag (0FFh=Fehler)
2Ch Zeit ermitteln
(im 24-Stunden-Format)
CH: Stunde
CL: Minute
DH: Sekunde
DL: Hundertstelsekunde
2Dh Zeit setzen
CH: Stunde
CL: Minute
DH: Sekunde
DL: Hundertstelsekunde
AL: Statusflag (0FFh=Fehler)
2Eh Verify Flag setzen/zurücksetzen
AL: Verifystatus (0=kein Verify)
keine
2Fh DTA-Adresse ermitteln ES:BX: Adresse der DTA
30h DOS-Versionsnummer ermitteln
AL: Leseflag (00=Versionsnummer lesen; 01=Prüfen auf ROM-DOS
AH: Nebenversionsnummer
BH: OEM-Seriennummer
BL:CX: 24-Bit-Benutzernummer
31h Programm im Speicher behalten
AL: Return-Code
DX: Anzahl belegter Paragraphen
keine
32h Disketteninformationen ermitteln
DL: Laufwerksnummer (0=A:)
AL: Laufwerkskennzeichen
DS:BX: Adresse Informationsblock
33h Breakstatus lesen
AL: 00h
DL: Flagzustand
AL: Statuscode
33h Breakstatus setzen
AL: 01h
DL: Breakflag (0=löschen, 1=setzen)
AL: Statuscode
33h Startlaufwerk ermitteln
AL: 05h
DL: Startlaufwerk (01=A:, 02=B:)
33h DOS-Version bestimmen
AL: 06h
BL: Hauptversionsnummer
BH: Nebenversionsnummer
DL: Revisionsnummer
DH: Versionsflag (Bits 7-5 und 2-0 sind reserviert
wenn Bit 4 gesetzt dann liegt DOS im HMA
wenn Bit 3 gesetzt, dann DOS-Version des Betriebssystems)
34h Adresse DOS-Aktivbyte bestimmen ES:BX: Adresse InDOS-Flag (1=keine DOS-Funktion aktiv)
35h Interruptvektor ermitteln
AL: Interruptnummer
ES:BX: Adresse ISR
36h Freien Diskettenplatz ermitteln
DL: Laufwerksnummer (0=aktuelles Laufwerk, 01=A:)
AX: Sektoren/Cluster oder Fehlerflag
BX: noch verfügbare Cluster
CX: Bytes/Sektor
DX: Cluster/Laufwerk
37h Parameterschalter festlegen
AL: 01h
DL: neuer Parameterschalter
keine
Standardparamterschalter ist '/' (undokumentiert)
38h landesspezifische Daten ermitteln
AL: Landescode
BX: erweiterter Landescode
DS:DX: Adresse des Puffers
CF zeigt Fehler (AX: Fehlercode)
BX: Landescode
Landescodetabelle siehe unten
Pufferinhalt siehe unten
38h landesspezifische Daten setzen
DX: 0FFFFh
AL: Landescode
BX: erweiterter Landescode
CF zeigt Fehler (AX: Fehlercode)
Es kann nur ein Land gesetzt werden, nicht die Parameter des Landes
Lassen Sie sich nicht von der doppelten Hauptfunktionsnummer 38h verwirren, der Unterschied liegt im Register DX
39h Unterverzeichnis erstellen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3Ah Unterverzeichnis löschen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3Bh aktuelles Verzeichnis wechseln
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3Ch Handle-Datei erstellen
DS:DX: Adresse ASCIIZ-Pfadname
CX: Attributcode (Bit 0: ReadOnly; Bit 1: Hidden; Bit 2: Systemfile)
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
3Dh Handle-Datei öffnen
AL: Zugriffscode
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
3Eh Handle-Datei schließen
BX: Dateihandle
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
3Fh Handle-Datei lesen
BX: Dateihandle
CX: Anzahl zu lesender Bytes
DS:DX: Adresse Lesepuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl gelesener Bytes
40h Handle-Datei schreiben
BX: Dateihandle
CX: Anzahl zu schreibender Bytes
DS:DX: Adresse Schreibpuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl geschriebener Bytes
41h Datei löschen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
42h Handle-Dateizeiger bewegen
BX: Dateihandle
CX:DX: 32-Bit-Differenz
AL: Bewegungsmodus (00=relativ zum Dateianfang; 01=relativ zur aktuellen Position; 02=relativ zum Dateiende)
CF zeigt Fehler (AX: Fehlercode)
sonst AX:DX: neue 32-Bit-Position in Bytes relativ zum Dateianfang
43h Dateiattribut lesen oder ändern
AL: Modus (0=lesen, 1=setzen)
CX: Dateiattribut
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
CX: Dateiattribut (nur gültig im Lesemodus)
44h IOCTL-Attribut lesen
AL: 00h
BX: Handlenummer
CF zeigt Fehler (AX: Fehlercode)
DX: Geräteattribute
44h IOCTL-Attribut setzen
AL: 01h
BX: Handlenummer
DX: Geräteatribute
CF zeigt Fehler (AX: Fehlercode)
44h Kontrolldaten von Zeichentreiber empfangen
AL: 02h
BX: Handle (Funktion 3Ch oder 3Dh)
CX: Anzahl zu übertragender Bytes
DS:DX: Adresse Empfangspuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl empfangener Bytes
44h Kontrolldaten an Zeichentreiber senden
AL: 03h
BX: Handle
CX: Anzahl zu übertragender Bytes
DS:DX: Sendepuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl gesendeter Bytes
44h Kontrolldaten vom Blocktreiber empfangen
AL: 04h
BL: Laufwerksnummer (0=akt; 1=A:)
CX: Anzahl zu übertragender Bytes
DS:DX: Adresse Empfangspuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl empfangener Bytes
44h Kontrolldaten an Blocktreiber sendenen
AL: 05h
BL: Laufwerksnummer (0=akt; 1=A:)
CX: Anzahl zu übertragender Bytes
DS:DX: Adresse Sendepuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl gesendeter Bytes
44h Eingabestatus ermitteln
AL: 06h
BX: Handle (Funktion 3Ch oder 3Dh)
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Status (0=nicht bereit; 0FFh=bereit für Senden/Empfangen)
44h Ausgabestatus ermitteln
AL: 07h
BX: Handle (Funktion 3Ch oder 3Dh)
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Status (0=nicht bereit; 0FFh=bereit für Senden/Empfangen)
44h Medium überprüfen
AL: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Mediumstatus (0=wechselbar, 1=nicht wechselbar)
44h Netzlaufwerk erkennen
AL: 09h
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst DX: Geräteattributcode
44h Netzhandle erkennen
AL: 0Ah
BX: Handle
CF zeigt Fehler (AX: Fehlercode)
sonst DX: Geräteattributcode
44h IOCTL-Zugriffswiederholung setzen
AL: 0Bh
CX: Warteschleifengröße
DX: Anzahl Wiederholungsversuche
CF zeigt Fehler (AX: Fehlercode)
44h Codepages umschalten
AL: 0Ch
44h Wiederholungszähler für Drucker setzen
AL: 0Ch
CL: 45h
BX: Handlenummer (0,1,3,5)
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Codepage auswählen
AL: 0Ch
CL: 4Ah
BX: Handlenummer (0,1,3,5)
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Codepageübertragung starten
AL: 0Ch
CL: 4Ch
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Codepageübertragung beenden
AL: 0Ch
CL: 4Dh
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Wiederholungszähler für Drucker lesen
AL: 0Ch
CL: 65h
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Abfrage der aktuellen Codepage
AL: 0Ch
CL: 6Ah
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Codepage-Vorbereitungsliste abfragen
AL: 0Ch
CL: 6Bh
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44h Allgemeine IOCTL-Anforderung für Blocktreiber
AL: 0Dh
44h Geräteparameter setzen
AL: 0Dh
CL: 40h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Spur auf logisches Laufwerk schreiben
AL: 0Dh
CL: 41h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Spuren auf logischem Laufwerk formatieren
AL: 0Dh
CL: 42h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Speichermedium setzen
AL: 0Dh
CL: 46h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Geräteparameter laden
AL: 0Dh
CL: 60h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Spur von logischem Laufwerk lesen
AL: 0Dh
CL: 61h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Spuren auf logischem Laufwerk prüfen
AL: 0Dh
CL: 62h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Speichermedium lesen
AL: 0Dh
CL: 66h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Speichermedium prüfen
AL: 0Dh
CL: 68h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44h Laufwerkszuweisung ermitteln
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AL: Laufwerksanzahl (0=nur physikalische)
44h logische Laufwerkszuordnung setzen
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AL: Laufwerkszuordnung
44h IOCTL-Handle abfragen
AL: 10h
BX: Gerätehandle
CH: Kategorie (1=COM, 3=CON, 5=LPT)
CL: Funktionsnummer
CF zeigt Fehler (AX: Fehlercode)
44h IOCTL-Gerät abfragen
AL: 11h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
CL: Funktionsnummer
CF zeigt Fehler (AX: Fehlercode)
45h Datei-Handle verdoppeln
BX: Dateihandle
CF zeigt Fehler (AX: Fehlercode)
sonst AX: neuer Dateihandle
46h Datei-Handles anpassen
BX: erstes Dateihandle
CX: zweites Dateihandle
CF zeigt Fehler (AX: Fehlercode)
47h DL: Laufwerksnummer (0=aktuelles Laufwerk, 1=A:)
DS:SI: Adresse Pfadpuffer
CF zeigt Fehler (AX: Fehlercode)
Ergebnis ist der reine Pfadstring ohne LW:\
48h Speicherbereich zuweisen
BX: Paragraphenzahl
CF zeigt Fehler (AX: Fehlercode)
Wenn Fehlercode=08h dann BX: Anzahl verfügbarer Paragraphen
sonst AX: Speichersegmentadresse
49h Speicherblock freigeben
ES: Segmentadresse Speicherbereich
CF zeigt Fehler (AX: Fehlercode)
4Ah Speicherblock setzen
BX: Paragraphenzahl
ES: Speichersegmentadresse
CF zeigt Fehler (AX: Fehlercode)
wenn AX=08h dann BX: Anzahl verfügbarer Paragraphen
4Bh Unterprogrammaufrufe
4Bh Unterprogramm laden und starten
AL: 00h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4Bh Programm laden
AL: 01h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4Bh Unterprogramm laden
AL: 03h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4Bh Programmausführung setzen
AL: 05h
ES:BX: Adresse Parameterblock
keine
4Ch Programm beenden
AL: Returncode
keine
Der Return-Code kann als ERRORLEVEL abgefragt werden
4Dh Beendigungscode ermitteln AH: Art der Programmbeendigung (0=normales Ende; 1=Abbruch durch STRG+X oder STRG+BREAK; 2=Fehler beim Gerätezugriff; 3=durch Funktion 31h beendet)
AL: Returncode
4Eh Ersten Eintrag finden
CX: Dateiattribut
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
Die gefundenen Daten stehen in der DTA
4Fh Weiteren Eintrag finden CF zeigt Fehler (AX: Fehlercode)
50h PSP-Adresse setzen
BX: neue Segmentadresse des PSP
keine
51h PSP-Adresse feststellen BX: Segmentadresse des PSP
52h DIB-Adresse ermitteln ES:BX: Adresse DIB
54h Verify-Flag ermitteln AL: Verify-flag (0=aus, 1=ein)
56h Datei umbenennen oder verschieben
DS:DX: alter ASCIIZ-Pfadstring
ES:DI: neuer ASCIIZ-Pfadstring
CF zeigt Fehler (AX: Fehlercode)
57h Datum und Zeit der letzen Änderung einer Datei lesen bzw. setzen
AL: Modus (0=lesen, 1=setzen)
BX: Dateihandle
CX: Zeit
DX: Datum
CF zeigt Fehler (AX: Fehlercode)
sonst CX: Zeit (Bits 0-4=Tag, 5-8=Monat, 9-15=Jahr (Offset zu 1980)
DX: Datum (Bits 0-4=Sekunden in 2er-Schritten, 5-10=Minuten, 11-15=Stunden)
58h Konzept der Speicherverwaltung lesen oder setzen
AL: Modus (0=lesen, 1=setzen)
BX: Strategie
CF zeigt Fehler (AX: Fehlercode)
sonst CX: Strategie
58h UMB-Verbindung abfragen
AL: 02h
AL: UMB-Verbindung (0=UMB wird nicht berücksichtigt, 1=vorhandener UMB wird berücksichtigt, wenn geeignete Strategie gewählt wird)
58h UMB-Verbindung setzen
BX: UMB-Verbindung (s. Rückgabe bei Funktion 5802h)
CF zeigt Fehler (AX: Fehlercode)
sonst CX: Strategie
59h Erweiterten Fehlercode lesen
BX: 00h
AX: erweiterter Fehlercode
BH: Fehlerkategorie
BL: Verfahrensvorschlag
CH: Fehlerquelle
5Ah Temporäre Datei erstellen
CX: Dateiattribut (nur Bits 0124)
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
5Bh neue Datei erstellen
CX: Datei-Attribut (nur Bits 0124)
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
5Ch Datei sperren/freigeben
AL: Modus (0=sperren, 1=freigeben)
BX: Dateihandle
CX:DX: 32-Bit-Offset
SI:DI: 32-Bit-Datenbereichslänge
CF zeigt Fehler (AX: Fehlercode)
Funktioniert nur bei installierter File-Sharing-Software
5Dh Erweiterten Fehler setzen
AL: 0Ah
DS:DX: Adresse Paramterblock
keine
Parameterblock:
Offset Datentyp Bedeutung
00h Word Wert für AX
02h Word Wert für BX
04h Word Wert für CX
06h Word Wert für DX
08h Word reserviert
0Ah Word Wert für DI
0Ch Word reserviert
0Eh Word Wert für ES
5Eh Maschinenspezifika
5Eh Maschinennamen lesen
AL: 00h
DS:DX: Adresse 16-Byte-Puffer
CF zeigt Fehler (AX: Fehlercode)
sonst CH: Gültigkeit
CL: Nummer des Netzwerkbios
5Eh Maschinennamen setzen
AL: 01h
keine
5Eh Druckerzeichenkette setzen
AL: 02h
keine
5Eh Druckerzeichenkette lesen
AL: 03h
keine
5Fh Eintrag aus Zuweisungsliste lesen
AL: 02h
keine
5Fh Eintrag in Zuweisungsliste einfügen
AL: 03h
keine
5Fh Eintrag aus Zuweisungsliste löschen
AL: 04h
keine
62h PSP-Adresse ermitteln BX: PSP-Segment-Adresse
65h Länderinformationen
65h Standard-Länderinfors ermitteln
AL: 01h
keine
65h Zeiger auf Großschrifttabelle ermitteln
AL: 02h
keine
65h Zeiger auf Dateinamentabelle zur Großschrift ermitteln
AL: 04h
keine
65h Begrenzungszeichen für Dateinamen ermitteln
AL: 05h
keine
65h Ordnugstabelle ermitteln
AL: 06h
keine
65h Zeichen umwandeln
AL: 20h
keine
65h Zeichenkette umwandeln
AL: 21h
keine
65h ASCIIZ-Kette umwandeln
AL: 22h
keine
66h Zeichensatztabellen
66h Globale Zeichensatztabelle ermitteln
AL: 01h
keine
66h Globale Zeichensatztabelle setzen
AL: 02h
keine
67h Maximale Handleanzahl setzen
BX: Handle-Anzahl
CF zeigt Fehler (AX: Fehlercode)
68h Dateipuffer schreiben CF zeigt Fehler (AX: Fehlercode)
6Ch Erweitertes Öffnen
BX: Modus
CX: Datei-Attribut
DX: Reaktions
DS:SI: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)

FAT-ID-Byte (Funktion 1Bh)
Wert Bedeutung
0FFh doppelseitige 5,25" Disk, 8 Sektoren/Spur, 40 Spuren
0FEH einseitige 5,25" Disk, 8 Sektoren/Spur, 40 Spuren (auch 8"-Disk)
0FDh doppelseitige 5,25" Disk, 9 Sektoren/Spur, 40 Spuren (auch 8"-Disk)
0FCh einseitige 5,25" Disk, 9 Sektoren/Spur, 40 Spuren
0FBh doppelseitige 3,5" Disk, 8 Sektoren/Spur, 80 Spuren
0FAh einseitige 5,25" Disk, 8 Sektoren/Spur, 80 Spuren
0F9h doppelseitige 5,25" Disk, 15 Sektoren/Spur, 40 Spuren
doppelseitige 3,5" Disk, 9 Sektoren/Spur, 80 Spuren
0F8h Festplatte
0F0h doppelseitige 5,25" Disk, 15 Sektoren/Spur, 80 Spuren
doppelseitige 3,5" Disk, 36 Sektoren/Spur, 80 Spuren
doppelseitige 3,5" Disk, 18 Sektoren/Spur, 80 Spuren

Drive Parameter Block (Funktionen 1Fh, 32h)
Offset Datentyp Bedeutung
00h Byte Nummer des Laufwerks
01h Byte Physikalische Nummer des Laufwerkes
02h Word Anzahl Bytes/Sektor
04h Byte Anzahl Sektoren/Cluster - 1
05h Byte Anzahl Sektoren/Cluster 2^x
06h Word Nummer des ersten FAT-Sektors
08h Byte Anzahl der FATs
09h Word Anzahl Stammverzeichniseinträge
0Bh Word Nummer des ersten Datensektors
0Dh Word Anzahl Cluster + 1
0Fh Word Anzahl Sektoren/FAT
11h Word Nummer des ersten Sektors im Stammverzeichnis
13h DWord Zeiger auf den Gerätetreiberkopf
17h Byte Speichermedium
18h Byte Kennzeichen: Laufwerk schon benutzt
19h DWord Zeiger auf den nächsten DPB
1Dh Word Zeiger auf den letzten belegten Cluster
1Fh Word Anzahl freie Cluster

Landescodetabelle
Code Bedeutung Code Bedeutung
000 Abfrage aktueller Systemparameter 001 USA
002 Kanada 003 Lateinamerika
031 Holland 032 Belgien
033 Frankreich 034 Spanien
036 Ungarn 038 Jugoslawien
039 Italien 041 Schweiz
042 Tschechoslowakei 044 Großbritannien
045 Dänemark 046 Schweden
047 Norwegen 048 Polen
049 Deutschland 055 Brasilien
061 International 081 Japan
085 Korea 086 China
088 Bangladesh 090 Türkei
351 Portugal 354 Island
358 Finnland

34-Byte-Puffer nach Aufruf von Funktion 38h
Byte Bedeutung
00h Datumsformat (0=USA [MMTTJJ]; 1=Europa [TTMMJJ]; 3=Japan [JJMMTT]
01h immer 0
02h-06h ASCIIZ-String für landesspezifisches Währungssymbol ('DM'); Rest ist #0
07h ASCII-Code für landesspezifisches Tausendertrennzeichen ('.')
08h immer 0
09h ASCII-Code für landesspezifisches Dezimalzeichen (',')
0Ah immer 0
0Bh ASCII-Code für landesspezifisches Datumstrennzeichen ('.')
0Ch immer 0
0Dh ASCII-Code für landesspezifisches Zeittrennzeichen (':')
0Eh immer 0
0Fh Gibt an, ob das Währungssymbol dem Betrag vorangeht (Bit 0=0) oder dem Betrag folgt (Bit 0=1); außerdem, ob zwischen beiden ein Leerzeichen (Bit 1=0) oder nicht (Bit 1=1) stehen soll
10h gibt Anzahl der Nachkommastellen bei Währungsangaben an
11h Zeitformat; 0=12-Stunden-Format, 1=24-Stunden-Format
12h Adresse des landesspezifischen Groß&Kleinbuchstabenwandlers; wird mit zu wandelndem ASCII-Code zwischen 80h und 0FFh in AL aufgerufen
16h Listentrennzeichen
18h-21h reserviert für DOS

Dateizugriffscode (Funktion 3Dh)
Bitnummer Bedeutung
0-1 Dateiattribut; 00b=readonly; 01b=writeonly; 10b=read an write
2-3 immer 0
4-6 File-Sharing-Modus (nur mit installierter Software in einem Netzwerk)
000b=jeder Prozeß kann auf die Datei zugreifen, falls sie nicht schon ein anderer Prozeß mit einem anderen Zugriffscode benutzt
001b=nur der aktuelle Prozeß darf auf die Datei zugreifen, sie aber nur einmal öffnen
010b=ein anderer Prozeß darf die Datei nur lesen
011b=ein anderer Prozeß darf die Datei nur beschreiben
100b=ein anderer Prozeß darf die Datei lesen und beschreiben
7 Handle-Flag
0=auch vom aktuellen Prozeß aus aufgerufene Programme dürfen auf das Handle dieser Datei zugreifen
1=nur der aktuelle Prozeß darf das Handle der Datei benutzen

Datei-Attribute (Funktionen 43h, 4Eh)
Bitnummer Bedeutung
0 wenn 1: Datei ist readonly
1 wenn 1: Datei ist hidden
2 wenn 1: Systemdatei
3 wenn 1: Volume-Label
4 wenn 1: Verzeichnis
5 wenn 1: Archiv-Datei
Der Wert 3Fh steht für Anyfile

Geräte-Attribut (Funktionen 44h/00h-01h)
Bitnummer Bedeutung
0 wenn 1: Treiber ist ein logischer CON-Eingabe-Treiber (Tastatur)
1 wenn 1: Treiber ist ein logischer CON-Ausgabe-Treiber (Bildschirm)
2 wenn 1: Treiber ist ein NUL-Treiber
3 wenn 1: Treiber ist ein Clock-Treiber
4 reserviert
5 wenn 0: Treiber arbeitet im Raw-Modus, wenn 1 im Cooked-Modus
6 wenn 0: Dateiende bei Eingabe; wenn 1: Treiber kann Daten liefern
8-10 reserviert
11 Treiber versteht Öffnen/Schließen
12 Netzwerk-Treiber
13 Treiber unterstützt Belegt-Kontrollzeichen
14 wenn 1: Treiber kann Kontrollzeichenketten, die mit den Unterfunktionen 02 und 03 gesendet werden, verarbeiten
15 reserviert

Geräte-Attribut-Code (Funktion 44h/09h)
Bitnummer Bedeutung
0-8 reserviert (immer 0)
9 wenn 1: Laufwerk ist lokal vorhanden, wird aber von anderen Einheiten im Netz adressiert
10-11 reserviert (immer 0)
12 immer 1
13-14 reserviert (immer 0)
15 wenn 0: Laufwerk existiert physikalisch
DX-Register bei Server-Laufwerken
Geräte-Attribut-Code (Funktion 44h/09h)
Bitnummer Bedeutung
0 reserviert
1 wenn 1: Partitionen von mehr als 32 MB werden unterstützt
2-5 reserviert (immer 0)
6 wenn 1: Funktion 440Dh von Int 21h wird unterstützt
7 wenn 1: Funktion 4411h von Int 21h wird unterstützt
8 reserviert (immer 0)
9 wenn 1: Laufwerk ist lokal vorhanden, wird aber von anderen Einheiten im Netz adressiert
10 reserviert (immer 0)
11 wenn 1: Funktion 4408h von Int 21h und die Kommandocodes 0Dh, 0Eh und 0Fh werden unterstützt
12 0
13 wenn 0: Speichermedium arbeitet mit Standardformat
14 wenn 1: Int 21h unterstützt die Funktionen 4404h und 4405h
15 wenn 0: das Laufwerk existiert physikalisch
DX-Register bei nicht vernetzten Laufwerken

Parameterblock der Funktionen 44h/0Dh/40h,41h
Bytenummer Bedeutung
00h Spezialfunktionen
01h Gerätetyp
02h-03h Geräteattribute
04h-05h Anzahl Zylinder/Sektor
06h Typ des Speichermediums
07h-08h Segmentadresse des BPB
09h-0Ah Offsetadresse des BPB
0Bh-0Ch Segmentadresse des Spurlayouts
0Dh-0E Offsetadresse des Spurlayouts

BPB - BIOS-Parameter-Block (Funktionen 44h/0Dh/40h-68h)
Bytenummer Bedeutung
00h-01h Anzahl Bytes/Sektor
02h Anzahl Sektoren/Cluster
03h-04h Anzahl reservierter Sektoren
05h Anzahl FATs
06h-07h Anzahl Einträge im Hauptverzeichnis
08h-09h Anzahl gesamter Sektoren
0Ah Beschreibungscode des Speichermediums
0Bh-0Ch Anzahl Sektoren/FAT
0Dh-0Eh Anzahl Sektoren/Spur
0Fh-10h Anzahl der Schreib/Leseköpfe
11h-14h versteckte Sektoren
15h-1Ah reserviert

Strategiecodes der Funktion 58h
Code Bedeutung
00h First fit
01h Best fit
02h Last fit
80h durchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 00h
81h durchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 01h
82h durchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 02h
0Ch durchsucht nur den UMB-Bereich
0C1h durchsucht nur den UMB-Bereich
0C2h durchsucht nur den UMB-Bereich

Aufbau der DTA (Funktionen 1Ah, 2Fh)
Offset Bedeutung
00h-14h reserviert für DOS
15h Attribut des Eintrags
16h-17h Erstellungszeit: Bits 0-4=Sekunde in 2er-Schritten, 5-10=Minute, 11-15=Stunde
18h-19h Erstellungsdatum: Bits 0-4=Tag (1-31), 5-8=Monat (1-12), 9-15=Jahr als Offset zu 1980
1Ah-1Dh Größe in low:high
1Eh-2Bh ASCIIZ-Dateiname

Interrupt 33h - Der Mouse-Interrupt

Dieser Interrupt wird auf die richtige Adresse eingestellt, wenn der Maustreiber ordentlich geladen wurde. Es ist daher vor Verwendung von Mausfunktionen zu prüfen, ob tatsächlich ein Maustreiber vorhanden ist. Dies wird unter anderem durch die Funktion 00h erledigt.
Im Gegensatz zu allen anderen Interrupts, die die Hauptfunktionsnummer im Register AH erwarten, muß bei diesem Interrupt das ganze Register AX mit der Funktionsnummer gefüllt werden.

Die Funktionen des Interrupts 33h
Funktion Bedeutung und Eingabe Ausgabe und Kommentar
00h Maus-Reset und Status AX: Status (0FFFFh=Maus vorhanden, 00000=keine Maus installiert)
BX: Anzahl Maustasten
01h Mauscursor zeigen keine
02h Mauszeiger ausblenden keine
03h Maustastenstatus und Pos. ermitteln BX: Status der Maustaste
CX: aktuelle Mausspalte
DX: aktuelle Mauszeile
04h Mauszeiger setzen
CX: Mausspalte
DX: Mauszeile
keine
05h Maustastenstatus beim Drücken
BX: Maustaste (00=linke Taste, 01=rechte Taste)
AX: Status (1=Taste gedrückt)
BX: Zähler (Anzahl Klicks seit letztem Aufruf)
CX: Mausspalte beim letzten Druck
DX: Mauszeile beim letzten Druck
06h Maustastenstatus beim Loslassen
BX: Maustaste
AX: Status
BX: Zähler
CX: Mausspalte beim letzten Loslassen
DX: Mauszeile beim letzten Loslassen
07h min. und max. Mausspalte festlegen
CX: linke Grenze
DX: rechte Grenze
keine
08h min. und max. Mauszeile festlegen
CX: obere Grenze
DX: untere Grenze
keine
09h Grafikcursor festlegen
BX: X-Offset des HotSpots
CX: Y-Offset des HotSpots
ES:DX: Adresse der Cursormaske
keine
0Ah Textcursor festlegen
BX: Zeigertyp(0=Softwarecursor, 1=Hardwarecursor
CX: Bildschirmmaske / Zeigerstart
DX: Zeigermaske / Zeigerende
keine
Wenn Zeigertyp=Softwarecursor, dann müssen in CX/DX die Masken eingetragen werden, ansonsten die Start- und Endzeile
0Bh Bewegungszähler der Maus lesen CX: X-Zähler
DX: Y-Zähler
0Ch Interruptmaske und Adresse festlegen
CX: Aufrufmaske
ES:DX: Adresse des Handlers
keine
siehe auch unten
0Dh Lichtgriffelemulation einschalten keine
0Eh Lichtgriffelemulation ausschalten keine
0Fh Mickey/Bildpunkt-Verhältnis setzen
CX: X-Verhältnis
DX: Y-Verhältnis
keine
10h Mauscursor bedingt abschalten
CX: rechte X-Koordinate
DX: untere Y-Koordinate
SI: linke X-Koordinate
DI: obere Y-Koordinate
keine
Im festgelegten virtuellen Mausbildschirm wird der Cursor abgeschaltet, sobald er ihn betritt; er kann nur durch Funktion 01h wieder sichtbar gemacht werden
13h Anfangswert für doppelte Geschwindigkeit setzen
DX: Grenzwert
keine
Standardwert: 64 Mickeys/Sekunde
14h Interruptmaske und Adresse lesen und festlegen
ES:DX: Adresse Interrupthandler
CX: Aufrufmaske
Bits 15-5: nicht belegt
Bit 4: Rechts wird losgelassen
Bit 3: Rechts wird gedrückt
Bit 2: Links wird losgelassen
Bit 1: Links wird gedrückt
Bit 0: Mausposition verändert sich
Der Handler muß mit RETF, nicht mit IRET enden
ES:DX: Adresse des alten Handlers
CX: alte Aufrufmaske
bei Aktivierung sind folgende Register belegt
AX: Bedingungsmaske
BX: Tastenzustand
CX: X-Koordinate
DX: Y-Koordinate
SI: X-Mickey-Zähler
DI: Y-Mickey-Zähler
Ein gesetztes Bit in der Bedingungsmaske zeigt das Ereignis für die Aktivierung des Handlers an
15h Puffergröße für Maustreiberstatus ermitteln BX: benötigter Speicher für Status
16h Maustreiberstatus speichern
ES:DX: Adresse des Puffers
keine
17h Maustreiberstatus zurücksetzen
ES:X: Adresse des Puffers
keine
18h erweiterte Interruptmaske und Adresse setzen
ES:DX: Adresse des Interrupthandlers
CX: erweiterte Aufrufmaske
Bit 15-8 sind nicht belegt
Bit 7: ALT+Maus gedrückt/losgelassen
Bit 6: CTRL+Maus gedrückt/losgelassen
Bit 5: SHIFT+Maus gedrückt/losgelassen
Rest wie Funktion 14h
wie Funktion 14h
Es können maximal drei Interrupthandler installiert werden, vorausgesetzt, sie verfügen über unterschiedliche Bedingungsmasken
19h erweiterte Interruptadresse ermitteln
CX: gesuchte Aufrufmaske (s. Funktion 18h)
AX: Fehlerstatus
CX: tatsächliche Aufrufmaske
ES:DX: Adresse Interrupthandler
1Ah Mausempfindlichkeit setzen
BX: X-Empfindlichkeit
CX: Y-Empfindlichkeit
DX: Anfangswert für doppelte Geschwindigkeit
keine
1Bh Mausempfindlichkeit ermitteln BX: X-Empfindlichkeit
CX: Y-Empfindlichkeit
DX: Anfangswert für doppelte Geschwindigkeit
1Ch Maus-Interrupt-Rate setzen
BX: Rate (00=keine Abfrage; 01=30/sec; 02=50/sec; 03=100/sec; 04=200/sec
keine
Legt fest, wie oft die Maus durch den Treiber abgefragt wird. Funktioniert nur bei InPort-Maus
1Dh Nummer der Bildschirmseite setzen
BX: Bildschirmseite
keine
1Eh Nummer der Bildschirmseite ermitteln BX: Bildschirmseite
1Fh Maustreiber abschalten AX: Fehlerstatus (0FFFFh=Abschaltung nicht möglich)
ES:BX: Adresse ISR Int 33h
20h Maustreiber einschalten keine; Folge von Funktion 1Fh
21h Software-Reset AX: Fehlercode (21h=keine Maus installiert; 0FFFFh=Maus installiert)
22h Sprache setzen
BX: Sprache (00=Englisch; 01=Französisch; 02=Niederländisch; 03=Deutsch; 04=Schwedisch; 05=Finnisch; 06=Spanisch; 07=Portugisisch; 08=Italienisch
keine
23h Sprachennummer ermitteln BX: augenblickliche Sprache
24h Konfigurationsdaten ermitteln BX: Version (Hauptversion)
CH: Maustyp (01=Busmaus; 02=serielle Maus; 03=InPort-Maus; 04=PS/2-Maus; 05=HP-Maus
CL: Interruptleitung

Nach oben
Zum Index