Inhaltsverzeichnis

Interrupts

WRITEME noch nicht ganz vollständig

Ein Interrupt ist ein Unterbrechung eines Programms durch eine CPU-Funktion, (Interrupt Service Routine, ISR, Unterbrechungsroutine). Anschließend wird die Ausführung des Programmes an der Unterbrechungsstelle fortgesetzt. Interrupts können durch Programme oder durch Hardware Komponenten ausgelöst werden.
Interrupts werden zB. benötigt um auf Ein-/Ausgabe-Signale (z. B. Tastatur, Maus, Festplatte, Netzwerk usw.) oder Zeitgebern (Timern) zu reagieren. Sie dienen also dazu laufende Prozesse zu unterbrechen damit der CPU auf Aktionen reagieren kann. Auch Multitasking wäre ohne Interrupts nicht möglich, da Tasks nicht mehr unterbrochen und umgeschaltet werden könnten.
Unter DOS wurden Interrupts sehr häufig für diverse Aktionen eingesetzt, unter einem höheren Betriebsystem übernimmt dieses in der Regel das Management der meisten Hardware Ein-/Ausgabe Aktionen und Interrupts werden nur noch selten für spezielle Zweck benötigt.

Interrupt-Tabelle

NumAdresseBelegung
00h000h - 003hCPU: Division durch Null
01h004h - 007hCPU: Einzelschritt
02h008h - 00BhCPU: NMI (RAM-Fehler)
03h00Ch - 00FhCPU: Breakpoint erreicht
04h010h - 013hCPU: numerischer Überlauf
05h014h - 017hHardcopy
06h018h - 01Bhunbekannte Funktion (nur 286)
07h01Ch - 01Fhreserviert
08h020h - 023hIRQ0: Timer
09h024h - 027hIRQ1: Tastatur
0Ah028h - 02BhIRQ2: 2. Interrupt-Controller
0Bh02Ch - 02FhIRQ3: serielle Schnittstelle 2
0Ch030h - 033hIRQ4: serielle Schnittstelle 1
0Dh024h - 037hIRQ5: Festplatte
0Eh038h - 03BhIRQ6: Diskette
0Fh03Ch - 03FhIRQ7: Drucker
10h040h - 043hBIOS: Video-Funktionen
11h044h - 047hBIOS: Konfiguration ermitteln
12h048h - 04BhBIOS: RAM-Speichergröße ermitteln
13h04Ch - 04FhBIOS: Disketten/Festplatten-Funktionen
14h050h - 053hBIOS: Zugriff auf serielle Schnittstelle
15h054h - 057hBIOS: (Kassettenrecorder) erweiterte Funktionen
16h058h - 05BhBIOS: Tastaturabfrage
17h05Ch - 05FhBIOS: Zugriff auf parallelen Drucker
18h060h - 063hAufruf des ROM-BASIC
19h064h - 067hBIOS: System booten
1Ah068h - 06BhBIOS: Zeit/Datum abfragen
1Bh06Ch - 06FhBreak-Taste (nicht CTRL-C) gedrückt
1Ch070h - 073hTimer, wird nach jedem INT 08 aufgerufen
1Dh047h - 077hAdresse der Video-Parameter-Tabelle
1Eh078h - 07BhAdresse der Disketten-Parameter-Tabelle
1Fh07Ch - 07FhAdresse der Zeichen-Bitmuster
20h080h - 083hDOS: Programm beenden
21h084h - 087hDOS: Dos-Funktion aufrufen
22h088h - 08BhAdresse der Dos-Prog.-Ende-Routine
23h08Ch - 08FhAdresse der Dos-CTRL-BREAK-Routine
24h090h - 093hAdresse der Dos-Fehler-Routine
25h094h - 097hDOS: Diskette/Festplatte lesen
26h098h - 09BhDOS: Diskette/Festplatte schreiben
27h09Ch - 09FhDOS: Prog. beenden - resident bleiben
28h0A0h - 0A3hDOS: Dos ist unbeschäftigt
29-2Eh0A4h ... 0BBhDOS: reserviert
2Fh0BCh - 0BFhDOS: Multiplexer
30-32h0C0h ... 0CBhDOS: reserviert
33h0CCh - 0CFhFunktionen des Maustreibers
34-40h0D0h ... 0FFhDOS:reserviert
41h104h - 107hAdresse der Festplatten-Tabelle 1
42-46h108h ... 117hreserviert
47-49h11Ch ... 127hfrei: können von Programmen belegt werden
4Ah128h - 12BhAlarm-Zeit erreicht (nur AT)
4B-5Bh12Ch ... 16Fhfrei: können von Programmen belegt werden
5Ch170h - 173hFunktionen des NETBIOS
5D-66h174h ... 19Bhfrei: können von Programmen belegt werden
67h19Ch - 19FhFunktionen des EMS-Speichermanagers
68-6Fh1A0h ... 1BFhfrei: können von Programmen belegt werden
70h1C0h - 1C3hIRQ8: Echtzeituhr (nur AT)
71h1C4h - 1C7hIRQ9: (nur AT)
72h1C8h - 1CBhIRQ10: (nur AT)
73h1CCh - 1CFhIRQ11: (nur AT)
74h1D0h - 1D3hIRQ12: (nur AT)
75h1D4h - 1D7hIRQ13: 80287 NMI (nur AT)
76h1D8h - 1DBhIRQ14: Festplatte (nur AT)
77h1DCh - 1DFhIRQ15: (nur AT)
78-7Fh1E0h ... 1FFhwerden nicht genutzt
80-F0h200h ... 3C3hwerden innerhalb des BASIC-Interpreters genutzt
F1-FFh3C4h ... 3CFhwerden nicht genutzt

Videointerrupt (Interrupt 10h)

Funktionen des Videointerrupts 10h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hVideo-Modus setzen
AL: Modusnummer
keine
Videomodi siehe nächste Tabelle
01hCursorgröße einstellen
CH: Startzeile
CL: Endzeile
keine
Bei VGA-Karten nur im Bereich von 00h bis 0Dh
02hCursor 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
03hCursorposition und Größe lesen
BH: Videoseite
DL: aktuelle Spalte
DH: aktuelle Zeile
CH: Startzeile
CL: Endzeile
04hLichtgriffel lesenAH: Erfolgskennzeichen (00h=kein Lichtgriffel, 01h=Griffel angeschlossen
DL: Textspalte Lichtgriffel
DH: Textzeile Lichtgriffel
BX: Grafikspalte Lichtgriffel
CH: Grafikzeile Lichtgriffel
05hVideoseite wählen
AL: Seitennummer
keine
Die Videoseitenzählung beginnt bei 0 (Null)
Standardmäßig ist Seite 0 eingeblendet
06hAufwä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
07hAbwä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
08hZeichen an der aktuellen Position lesen
BH: Videoseite
AL: ASCII-Code des Zeichens
AH: Attribut des Zeichens
09hZeichen 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
0AhZeichen wiederholt setzen
BH: Videoseite
AL: ASCII-Code des Zeichens
CX: Zeichenzahl
keine
Steuercodes werden angezeigt
Cursorposition wird nicht verändert
0BhHintergrundfarbe setzen
BH: 00h
BL: Rahmen/Hintergrundfarbe
keine
0BhFarpalette wählen
BH: 01h
BL: Palettennummer
keine
0ChPixel setzen
CX: Grafikspalte
DX: Grafikzeile
AL: Farbwert
keine
Farbwert gilt nur relativ innerhalb einer Palette, nicht absolut
0DhPixel lesen
BH: Videoseite
CX: Grafikspalte
DX: Grafikzeile
AL: Farbwert;
Wenn AL=00h dann hat der Punkt die Hintergrundfarbe, ist also gelöscht
0EhZeichen 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
0FhVideostatus lesenAL: Videomodusnummer
AH: Anzahl Zeichen je Zeile
BH: aktuelle Videoseite
10hverändere Palette-Register
AL: 00h
BL: Plettennummer
BH: Videoseite
keine
10hRahmenfarbe wählen
AL: 01h
BH: Farbwert
keine
10halle Palettenregister und Rahmenfarbe setzen
AL: 02h
ES:DX: Adresse Parametertabelle
keine
10hHintergrundintensität setzen
AL: 03h
BL: Intensitätsbit
keine
Wenn BL=1 dann gilt Attributbit 7 als Blinkbit, sonst HiColor
10hPalettenregister auslesen
AL: 07h
BL: Palettennumer
BH: Farbwert
10hRahmenfarbe lesen
AL: 08h
BH: Rahmenfarbe
10hAL: 09h
ES:DX: Adresse einer 17-Byte-Parametertabelle
die ersten 16 Werte := Farbregistern, der 17. := Rahmenfarbe
10hDAC-Farbregister setzen
AL: 10h
BX: Registernummer
CL: Blauanteil
CH: Grünanteil
DH: Rotanteil
keine
10hmehrere 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
10hInternes Register setzen
AL: 13h
BL: Registerauswahl
BH: Wert für Register oder Bit
keine
10hDAC-Farbregister lesen
AL: 15h
BX: Registernummer
CL: Blauanteil
CH: Grünanteil
DH: Rotanteil
10hMehrere DAC-Register lesen
AL: 17h
BX: Nummer des ersten Registers
CX: Registeranzahl
ES:DX: Adresse Parametertabelle
keine
10hDAC-Maskierungsregister setzen
AL: 18h
BL: neuer Wert
keine
10hDAC-Maskierungsregister lesen
AL: 19h
BL: Wert des Maskierungsregisters
10hInterne Register lesen
AL: 1Ah
BL: Bit 7 des Modus-Registers
BH: Bits des Farbauswahlregisters
10hGraustufen zuordnen
AL: 1Bh
BX: 1. Farbregister
CX: Anzahl Farbregister
keine
11hLade 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
11hMonochromzeichensatz mit Reset laden
AL: 01h
BL: Blocknummer
lädt den 9x14-Zeichensatz
11h8x8-Zeichensatz mit Reset laden
AL: 02h
BL: Blocknummer
keine
11hZeichensatz 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
11h8x16-Zeichensatz mit Reset laden
AL: 04h
BL: Blocknummer
keine
11hZeichensatz laden
AL: 10h
BH: Bytes je Zeichen
BL: Blocknummer
CX: Zeichenanzahl
ES:BP: Adresse Zeichensatz
keine
11hMonochrom-Zeichensatz setzen
AL: 11h
BL: Blocknummer
keine
11h8x8-Zeichensatz setzen
AL: 12h
BL: Blocknummer
keine
11h8x16-Zeichensatz setzen
AL: 14h
BL: Blocknummer
keine
11hBenutzerzeichensatz für Int 1Fh einrichten
AL: 20h
ES:BP: Adresse Zeichensatz
keine
Zeichensatzdefinition für Zeichen 128-255, nur Videomodi 4,5 und 6
11hBenutzerzeichensatz einrichten
AL: 21h
BL: Bildschirmzeilen
CX: Bytezahl je Zeichen
DL: Zeilenanzahl
ES:BP: Adresse Zeichensatz
keine
11h8x14-Zeichensatz für Grafikmodus setzen
AL: 22h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11h8x8-Zeichensatz in doppelter Dichte setzen
AL: 23h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11h8x16-Zeichensatz für Grafikmodus setzen
AL: 24h
BL: Zeilenzahl
DL: Anzahl Bildschirmseiten
keine
11hZeichensatzinformationen auslesen
AL: 30h
BH: Zeichensatz (Codierung siehe außerhalb der Tabelle)
CX: Byte je Zeichen
DL: Anzahl Bildschirmzeilen
ES:BP: Adresse Zeichensatz
12hHardcopy-Routine festlegen
BL: 20h
AL: 00h
keine
12hRasterzeilen festlegen
BL: 30h
AL: Rasterzeilenzahl
(Angabe: 0/1/2=2007350/400 Rasterzeilen)
AL: Fehlercode(12h=fehlerfrei)
12hLaden der Standardpalette erlauben/verbieten
BL: 31h
AL: 0/1 = erlauben/verhindern
AL: Fehlercode(12h=fehlerfrei)
12hBildschirmzugriff ein/ausschalten
BL: 32h
AL: 0/1 = ein/aus
AL: Fehlercode(12h=fehlerfrei)
12hGraustufenumwandlung ein/ausschalten
BL: 33h
AL: 0/1 = ein/aus
AL: Fehlercode(12h=fehlerfrei)
12hBildschirmumschaltung
BL: 35h
AL: Modus
schaltet zwischen 2 Grafikkarten um; nur PS/2
12hMonitor ein/ausschalten
BL: 36h
AL: 0/1 = ein/aus
AL: Fehlercode
13hTextstring 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
1AhGrafikkarte ermitteln
AL: 00h
BL: aktive Grafikkarte
BH: passive Grafikkarte
1Ahaktuelle Grafikkarte setzen
AL: 01h
BL/BH: aktive/passive Grafikkarte
wenn korrekt verlaufen dann AL= 1AH
1BhVideo-BIOS-Informationen lesen
BX: 00h
ES:DI: Adresse eines 64-Byte-Puffers
wenn korrekt verlaufen dann AL=1Bh
1ChPuffergröß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
1ChZustand lesen
AL: 01h
CX: Bereich
ES:BX: Pufferadresse
AL: Fehlercode (1CH=kein Fehler)
1ChZustand setzen
AL: 02h
CX: Bereich
AL: Fehlercode (1CH=kein Fehler)


Grafikmodi

Video-ModusAuflösungAnzahl FarbenGrafikkarten
00hText (40x25)2CGA, EGA, MCGA, VGA
01hText (40x25)16CGA, EGA, MCGA, VGA
02hText (80x25)2CGA, EGA, MCGA, VGA
03hText (80x25)16CGA, EGA, MCGA, VGA
04hGrafik (320x200)2CGA, EGA, MCGA, VGA
05hGrafik (320x200)4CGA, EGA, MCGA, VGA
06hGrafik (640x200)2CGA, EGA, MCGA, VGA
07hText (80x25)2MDA, HERCULES
0DhGrafik (320x200)16EGA, VGA
0EhGrafik (640x200)16EGA, VGA
0FhGrafik (640x350)2EGA, VGA
10hGrafik (640x350)16EGA, VGA
11hGrafik (640x480)2MCGA, VGA
12hGrafik (640x480)16VGA
13hGrafik (320x200)256MCGA, VGA


Paletten

Palette 0Palette 1Palette 2Palette 3
GrünTürkisHellgrünHelltürkis
RotMagentaHellrotLila
BraunHellgrauGelbWeiß


Zeichensatzcodierung (Funktion 11h/30h)

CodeZeichensatz
00hZeichensatz von Interrupt 1Fh
01hZeichensatz von Interrupt 43h
02h8x14 ROM-Zeichensatz
03h8x8 ROM-Zeichensatz für ASCII 00h bis 79h
04h8x8 ROM-Zeichensatz für ASCII 80h bis FFh
05h9x14 ROM-Zeichensatz
06h8x16 ROM-Zeichensatz
07h9x16 ROM-Zeichensatz


Grafikkarteninformationen (Funktion 1Ah/00h)

WertGrafikkarte
00hkeine Karte
01hMDA
02hCGA
04hEGA mit Farbmonitor
05hEGA mit Schwarz-Weiß-Monitor
06hEGA
07hVGA mit analogem Schwarz-Weiß-Monitor
08hVGA mit analogem Farbmonitor
0AhMCGA mit digitalem Farbmonitor
0BhMCGA mit analogem Schwarz-Weiß-Monitor
0ChMCGA mit analogem Farbmonitor
0Fhunbekannte Werte


Video-BIOS-Informationen

OffsetDatentypBedeutung
00hDWordAdresse der Modusinformationstabelle
04hByteAktueller Videomodus
05hWordAnzahl dargestellter Zeichenspalten
07hWordLänge des dargestellten Bereiches des Bildschirmspeichers
09hWordStartadresse der Bildschirminfos im Bildschirmspeicher
0Bh16 BytesTabelle der Cursorpositionen (X;Y) für 8 Videoseiten
1BhByteStartzeile der Cursordarstellung
1ChByteEndzeile der Cursordarstellung
1DhByteaktuelle Bildschirmseite
1EhWordPort-Adresse des CRTC-Registers
20hByteInhalt des Modusregisters des CRTC
21hByteInhalt des Palettenregisters des CRTC
22hByteAnzahl der dargestellen Zeichenzeilen
23hWordHöhe eines Zeichens in Scanzeilen
25hByteAktive Videokarte
26hBytePassive Videokarte
27hWordAnzahl gleichzeitig dargestellter Farben
29hByteAnzahl möglicher Bildschirmseiten
2AhByteScan-Zeilen des akt. Videomodus:
0 = 200 Zeilen,
1 = 350 Zeilen,
2 = 400 Zeilen,
3 = 480 Zeilen
2BhByteVGA-Zeichensatz, der bei abgeschaltetem Attributbit 3 verwendet wird (nur VGA-Karte
2ChByteVGA-Zeichensatz, der bei eingeschaltetem Attributbit 3 verwendet wird (nur VGA-Karte)
2Dh4 BytesReserviert
31hByteBildschirmspeichergröße:
Wenn 0/1/2/3 dann 64/128/192/256 KByte
32h14 BytesReserviert


Modus-Informationstabelle

OffsetDatentypBedeutung
00hByteunterstützte Videomodi:
sind die Bits 0 bis 7 gesetzt, so unterstützt die Karte die entsprechenden Videomodi 00h - 07h
01hByteunterstützte Videomodi:
sind die Bits 0 bis 7 gesetzt, so unterstützt die Karte die entsprechenden Videomodi 08h - 0Fh
02hByteunterstü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
03h4 Bytesreserviert
07hByteScanzeilen in den alphanumerischen Modi:
Bit 0/1/2=1 dann 200/350/400 Zeilen
08hBytemaximale Anzahl darstellbarer Zeichensätze
09hByteAnzahl der verfügbaren Zeichensätze im Zeichensatzspeicher
0AhBytereserviert

Systemkonfiguration (Interrupt 11h)

Eingabe: keine
Ausgabe: AX: Konfigurationswort

Konfigurationswort für ATs und PS/2

BitnummerBedeutung
0gesetzt wenn mind. 1 Diskettenlaufwerk angeschlossen ist
1gesetzt wenn ein Coprozessor vorhanden ist
2-3ungenutzt
4-5Videomodus nach Einschalten
00b=unbekannt
01b=40x25 Color
10b=80x25 Color
11b=80x25 einfarbig
6-7Anzahl angeschlossener Diskettenlaufwerke
00b:=1 bis 11b:=4
8ungenutzt
9-11Anzahl serieller Karten
12-13reserviert
14-15Anzahl paralleler Karten

Speichergröße (Interrupt 12h)

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

Disketten- und Festplattenzugriff (Interrupt 13h)

Funktionen des Interrupts 13h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hLaufwerk initialisieren
DL: Laufwerksnummer (0:=alle, 1:=A usw)
Wenn CF=1 dann Fehler und AH=Fehlercode
01hStatus lesen
DL: Laufwerksnummer (0:=akt. LW, 80h:= 1. Festplatte)
Wenn CF=1 dann Fehler und AH=Fehlercode
02hSektoren 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)
03hSektoren 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
04hSektoren 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
05hSpuren 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
06hSpur 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
07hZylinder 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
08hFormat ermitteln
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
DL: Festplattenanzahl
CH: Zylinderanzahl
CL: Sektorenanzahl
09hFremdlaufwerke anpassen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
0Aherweiterte 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
0Bherweiterte 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
0ChSchreib/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
11hPlattenköpfe parken
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
13hSektor 0 überprüfen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
14hController testen
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
15hDiskettentyp ermitteln
DL: Festplattennummer (80h:=1. FP)
Wenn CF=1 dann Fehler und AH=Fehlercode
16hDiskettenwechsel ermitteln
DL: DiskLW-Nr.
AH: Wechselflag (0:=kein Wechsel; 6:=Wechsel)
17hDiskettenformat fixieren
AL: Diskettenformat
Wenn CF=1 dann Fehler und AH=Fehlercode
19hPlattenköpfe parken
DL: Festplattennummer
Wenn CF=1 dann Fehler und AH=Fehlercode


Fehlercodes für die Funktionen 00h bis 16h

CodeBedeutungCodeBedeutung
00hKein Fehler01hIllegale Funktionsnummer
02hKeine Adressmarkierung04hSektor nicht gefunden
05hReset war erfolglos07hFehlerhafte Initialisierung
09hSegmentgrenzenüberlauf des DMA10hLesefehler
11hDaten trotz falscher Prüfsumme gelesen20hFehler des Controllers
40hSpur nicht gefunden80hLaufwerk reagiert nicht
BBhBIOS-FehlerFFhnicht aufschlüsselbarer Fehler


Fehlercodes für die Funktionen 17h und 19h

CodeBedeutungCodeBedeutung
01hIllegale Funktionsnummer02hKeine Adressmarkierung
03hDiskette ist schreibgeschützt04hSektor nicht gefunden
08hÜberlauf des DMA09hSegmentgrenzenüberlauf
10hLesefehler20hFehler des Controllers
40hSpur nicht gefunden80hLaufwerk reagiert nicht

Zugriff auf die serielle Schnittstelle (Interrupt 14h)

Funktionen des Interrupts 14h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hInitialisierung
DX: Schnittstellennummer(0:=COM1)
AL: Konfigurationscode
AH: Zeilenstatus
AL: Modemstatus (s. unten)
01hZeichen senden
DX: Schnittstellennummer(0:=COM1)
AL: Zeichencode
AH: Zeilenstatus
02hZeichen lesen
DX: Schnittstellennummer(0:=COM1)
AH: Zeilenstatus
AL: Zeichencode des Zeichens
03hStatus erfragen
DX: Schnittstellennummer(0:=COM1)
AH: Zeilenstatus
AL: Modemstatus
04herweiterte Initialisierung vornehmen
AL: Break-Zustand
BH: Parität
BL: Stopbitanzahl
CH: Datenbitanzahl
CL: Baudrate
DX: Schnittstellennummer(0:=COM1)
AH: Leitungszustand
AL: Modemstatus


Konfigurationscode

BitnummerBedeutung
0Datenbitflag: 0=7 Datenbits, 1=8 Datenbits
1muß immer 1 sein
2Stopbitflag: 0=1 Stopbit, 1=2 Stopbits
3Paritätsbitflag: 0=keine Parität, 1=mit Parität
4Paritätsmodus: 0=ungerade Parität, 1=gerade Parität
5-7Code 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

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


Modemstatus

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

AT-Spezifische Funktionen (Interrupt 15h)

Funktionen des Interrupts 15h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hKassettenrecordermotor einschaltenkeine
01hKassettenrecordermotor ausschaltenkeine
02hKassettenblock lesen
CX: Byteanzahl
ES:BX: Adresse Lesepuffer
DX: Anzahl gelesener Bytes
AH: Kassettenstatus
03hKassettenblock schreiben
CX: Byteanzahl
ES:BX: Adresse Schreibpuffer
Kassettenstatus
83hFlag 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
84hJoystick-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
85hSysReq ausführen
AL: Statusflag
keine
86hIntervall abwarten
CX: Timerwert HI
DX: Timerwert LO
keine
Der Rechner ist blockiert bis die Millisekunden abgelaufen sind
87hSpeicherblock verschieben
CX: Anzahl zu verschiebender Words
ES:SI: Adresse einer GDT
CF zeigt Fehler
ACX: Fehlercode
88hGröße des Extended Memory ermittelnAX: Größe des HI-Speichers
89hIn den Protected Mode schaltenkeine

Tastaturzugriff (Interrupt 16h)

Funktionen des Interrupts 16h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hTastaturcode aus Puffer lesenWenn AL=00h dann in AH erw. Tastaturcode
sonst: AL: ASCII und AH: Scancode
Falls keine Zeichen im Puffer, dann wird gewartet
01hTastaturpuffer prüfenWenn ZF=1 dann keine Zeichen im Puffer
Wenn ZF=1 dann AX: nächstes auszugebendes Zeichen
02hTastaturstatus lesenAL: 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
05hZeichen in Puffer stellen
CL: ASCII-Code des Zeichens
keine
10hTastaturcode aus Puffer lesenwie Funktion 00h
Diese Funktion erkennt F11 und F12
11hTastaturpuffer prüfenwie Funktion 01h
Diese Funktion erkennt F11 und F12
12hTastaturstatus lesenwie Funktion 02h

Druckerzugriff (Interrupt 17h)

Funktionen des Interrupts 17h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hZeichen parallel ausgeben
DX: Schnittstellennummer
AL: Zeichencode
AH: Schnittstellenstatus
01hInitialisierung
DX: Schnittstellennummer (0=LPT1)
AH: Schnittstellenstatus
02hSchnittstellenstatus ermitteln
DX: Schnittstellennummer
AH: Schnittstellenstatus


Schnittstellenstatus

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

ROM-BASIC starten (Interrupt 18h)

Eingabe: keine
Ausgabe: keine

System booten (Interrupt 19h)

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.

Zugriff auf die Systemuhr (Interrupt 1Ah)

Funktionen des Interrupts 1Ah

FunktionBedeutung und EingabeAusgabe und Kommentar
00hZeitzähler lesenCX: Timerwert HI
DX: Timerwert LO
AL: 24-Stundenzähler
01hZeitzähler setzen
CX: Timerwert HI
DX: Timerwert LO
keine
02hRTC-Uhr auslesenCF zeigt Fehler
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
03hRTC-Uhr setzen
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
DL: Sommerzeit-Flag (1=Sommerzeit)
CF zeigt Fehler
04hRTC-Datum auslesenCF zeigt Fehler
CH: Jahrhundert (BCD)
CL: Jahr (BCD)
DH: Monat (BCD)
DL: Tag (BCD)
05hRTC-Datum setzen
CH: Jahrhundert (BCD)
CL: Jahr (BCD)(im Bereich 19-20)
DH: Monat (BCD)
DL: Tag (BCD)
CF zeigt Fehler
06hRTC-Alarmzeit setzen
CH: Stunde (BCD)
CL: Minute (BCD)
DH: Sekunde (BCD)
CF zeigt Fehler
07hRTC-Alarmzeit löschenCF zeigt Fehler

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

Eingabe: keine
Ausgabe: keine

Timer-Interrupt (Interrupt 1Ch)

Eingabe: keine
Ausgabe: keine

Zeiger auf Videotabelle (Interrupt 1Dh)

Eingabe: keine
Ausgabe: keine

Zeiger auf Laufwerkstabelle (Interrupt 1Eh)

Eingabe: keine
Ausgabe: keine

Zeiger auf Grafikzeichentabelle (Interrupt 1Fh)

Eingabe: keine
Ausgabe: keine

DOS-Interrupt (Interrupt 21h)

Funktionen des Interrupts 21h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hProgramm beenden
CS: PSP-Segmentadresse
keine
01hZeicheneingabe mit EchoAL: ASCII-Code
02hZeichen darstellen
DL: ASCII-Code
keine
03hEingabe von serieller SchnittstelleAL: ASCII-Code des Zeichens
04hAusgabe an serielle Schnittstelle
DL: Zeichencode
keine
05hAusgabe an Parallelschnittstelle
DL: Zeichencode
keine
06hZeichenein/Ausgabe direkt
DL: wenn 255 dann Zeichen einlesen
alles andere ausgeben
wenn einlesen, dann in AL Zeichencode
07hZeicheingabe direktAL: Zeichencode
08hZeicheneingabeAL: Zeichencode
09hZeichenkettenausgabe
DS:DX: Adresse des Strings
keine
Der String muß mit einem Dollar-Zeichen enden
0AhZeichenketteneingabe
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
0BhEingabestatus lesenAL: Statusflag (00=kein Zeichen verfügbar; 0FFh=mind. ein Zeichen)
0ChEingabepuffer 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
0DhLaufwerke zurücksetzenkeine
0EhLaufwerk auswählen
DL: Laufwerkscode (00=A:, 01=B:)
AL: Anzahl installierter Blocktreiber
0FhFCB-Datei öffnen
DS:DX: Adresse FCB
AL: Statuscode
10hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
11hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
12hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
13hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
14hsequentiell lesen
DS:DX: Adresse FCB
AL: Statuscode
15hsequentiell schreiben
DS:DX: Adresse FCB
AL: Statuscode
16hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
17hFCB-Datei en
DS:DX: Adresse FCB
AL: Statuscode
19haktuelles Laufwerk bestimmenAL: Gerätecode (00=A:)
1AhDTA setzen
DS:DX: DTA-Adresse
keine
1BhStandardlaufwerksinformationen ermittelnAL: Sektoren/Cluster
CX: Bytes/Sektor
DX: Cluster/Laufwerk
DS:BX: Adresse FAT-ID-Byte
1ChLaufwerksinformationen ermitteln
DL: Laufwerks-Code (00=akt. 01=A:)
AL: Sektoren/Cluster
CX: Bytes/Sektor
DX: Cluster/Laufwerk
DS:BX: Adresse FAT-ID-Byte
1Fhaktuelle DPB-Adresse ermittelnDS:BX: Adresse DPB
21hFCB-Dateidirektzugriff Lesen
DS:DX: Adresse FCB
AL: Statuscode
22hFCB-Dateidirektzugriff Schreiben
DS:DX: Adresse FCB
AL: Statuscode
23hFCB-Dateigröße ermitteln
DS:DX: Adresse FCB
AL: Statuscode
24hFCB-Datensatznummer setzen
DS:DX: Adresse FCB
AL: Statuscode
25hInterrupt-Vektor setzen
AL: Interruptnummer
DS:DX: Adresse der ISR
keine
26hneuen PSP erstellen
DX: Segmentadresse des neuen PSP
keine
27hFCB-Datei Direktzugriff
Blockweise lesen
DS:DX: Adresse FCB
CX: Datensatzzahl
CX: Zahl gelesener Datensätze
AL: Statuscode
28hFCB-Datei Direktzugriff
Blockweise schreiben
DS:DX: Adresse FCB
CX: Datensatzzahl
CX: Zahl geschriebener Datensätze
AL: Statuscode
29hFCB-Dateinamen umwandeln
DS:SI: Adresse String
ES:DI: Adresse FCB
AL: Statuscode
2AhDatum ermittelnAL: Wochentag (0=Sonntag)
CX: Jahr (Offset zu 1980)
DH: Monat
DL: Tag im Monat
2BhDatum setzen
CX: Jahr (Offset zu 1980)
DH: Monat
DL: Tag im Monat
AL: Statusflag (0FFh=Fehler)
2ChZeit ermitteln
(im 24-Stunden-Format)
CH: Stunde
CL: Minute
DH: Sekunde
DL: Hundertstelsekunde
2DhZeit setzen
CH: Stunde
CL: Minute
DH: Sekunde
DL: Hundertstelsekunde
AL: Statusflag (0FFh=Fehler)
2EhVerify Flag setzen/zurücksetzen
AL: Verifystatus (0=kein Verify)
keine
2FhDTA-Adresse ermittelnES:BX: Adresse der DTA
30hDOS-Versionsnummer ermitteln
AL: Leseflag (00=Versionsnummer lesen; 01=Prüfen auf ROM-DOS
AH: Nebenversionsnummer
BH: OEM-Seriennummer
BL:CX: 24-Bit-Benutzernummer
31hProgramm im Speicher behalten
AL: Return-Code
DX: Anzahl belegter Paragraphen
keine
32hDisketteninformationen ermitteln
DL: Laufwerksnummer (0=A:)
AL: Laufwerkskennzeichen
DS:BX: Adresse Informationsblock
33hBreakstatus lesen
AL: 00h
DL: Flagzustand
AL: Statuscode
33hBreakstatus setzen
AL: 01h
DL: Breakflag (0=löschen, 1=setzen)
AL: Statuscode
33hStartlaufwerk ermitteln
AL: 05h
DL: Startlaufwerk (01=A:, 02=B:)
33hDOS-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)
34hAdresse DOS-Aktivbyte bestimmenES:BX: Adresse InDOS-Flag (1=keine DOS-Funktion aktiv)
35hInterruptvektor ermitteln
AL: Interruptnummer
ES:BX: Adresse ISR
36hFreien 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
37hParameterschalter festlegen
AL: 01h
DL: neuer Parameterschalter
keine
Standardparamterschalter ist '/' (undokumentiert)
38hlandesspezifische 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
38hlandesspezifische 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
39hUnterverzeichnis erstellen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3AhUnterverzeichnis löschen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3Bhaktuelles Verzeichnis wechseln
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
3ChHandle-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
3DhHandle-Datei öffnen
AL: Zugriffscode
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
3EhHandle-Datei schließen
BX: Dateihandle
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
3FhHandle-Datei lesen
BX: Dateihandle
CX: Anzahl zu lesender Bytes
DS:DX: Adresse Lesepuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl gelesener Bytes
40hHandle-Datei schreiben
BX: Dateihandle
CX: Anzahl zu schreibender Bytes
DS:DX: Adresse Schreibpuffer
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Anzahl geschriebener Bytes
41hDatei löschen
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
42hHandle-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
43hDateiattribut 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)
44hIOCTL-Attribut lesen
AL: 00h
BX: Handlenummer
CF zeigt Fehler (AX: Fehlercode)
DX: Geräteattribute
44hIOCTL-Attribut setzen
AL: 01h
BX: Handlenummer
DX: Geräteatribute
CF zeigt Fehler (AX: Fehlercode)
44hKontrolldaten 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
44hKontrolldaten 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
44hKontrolldaten 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
44hKontrolldaten 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
44hEingabestatus 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)
44hAusgabestatus 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)
44hMedium überprüfen
AL: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Mediumstatus (0=wechselbar, 1=nicht wechselbar)
44hNetzlaufwerk erkennen
AL: 09h
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst DX: Geräteattributcode
44hNetzhandle erkennen
AL: 0Ah
BX: Handle
CF zeigt Fehler (AX: Fehlercode)
sonst DX: Geräteattributcode
44hIOCTL-Zugriffswiederholung setzen
AL: 0Bh
CX: Warteschleifengröße
DX: Anzahl Wiederholungsversuche
CF zeigt Fehler (AX: Fehlercode)
44hCodepages umschalten
AL: 0Ch
44hWiederholungszä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)
44hCodepage auswählen
AL: 0Ch
CL: 4Ah
BX: Handlenummer (0,1,3,5)
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hCodepageübertragung starten
AL: 0Ch
CL: 4Ch
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hCodepageübertragung beenden
AL: 0Ch
CL: 4Dh
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hWiederholungszähler für Drucker lesen
AL: 0Ch
CL: 65h
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hAbfrage der aktuellen Codepage
AL: 0Ch
CL: 6Ah
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hCodepage-Vorbereitungsliste abfragen
AL: 0Ch
CL: 6Bh
BX: Handle
CH: Gerätecode
DS:DX: Adresse Datenpuffer
CF zeigt Fehler (AX: Fehlercode)
44hAllgemeine IOCTL-Anforderung für Blocktreiber
AL: 0Dh
44hGeräteparameter setzen
AL: 0Dh
CL: 40h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44hSpur 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)
44hSpuren 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)
44hSpeichermedium setzen
AL: 0Dh
CL: 46h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44hGeräteparameter laden
AL: 0Dh
CL: 60h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44hSpur 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)
44hSpuren 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)
44hSpeichermedium lesen
AL: 0Dh
CL: 66h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44hSpeichermedium prüfen
AL: 0Dh
CL: 68h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
DS:DX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
44hLaufwerkszuweisung ermitteln
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AL: Laufwerksanzahl (0=nur physikalische)
44hlogische Laufwerkszuordnung setzen
BL: Laufwerksnummer (0=akt; 1=A:)
CF zeigt Fehler (AX: Fehlercode)
sonst AL: Laufwerkszuordnung
44hIOCTL-Handle abfragen
AL: 10h
BX: Gerätehandle
CH: Kategorie (1=COM, 3=CON, 5=LPT)
CL: Funktionsnummer
CF zeigt Fehler (AX: Fehlercode)
44hIOCTL-Gerät abfragen
AL: 11h
CH: 08h
BL: Laufwerksnummer (0=akt; 1=A:)
CL: Funktionsnummer
CF zeigt Fehler (AX: Fehlercode)
45hDatei-Handle verdoppeln
BX: Dateihandle
CF zeigt Fehler (AX: Fehlercode)
sonst AX: neuer Dateihandle
46hDatei-Handles anpassen
BX: erstes Dateihandle
CX: zweites Dateihandle
CF zeigt Fehler (AX: Fehlercode)
47hDL: Laufwerksnummer (0=aktuelles Laufwerk, 1=A:)
DS:SI: Adresse Pfadpuffer
CF zeigt Fehler (AX: Fehlercode)
Ergebnis ist der reine Pfadstring ohne LW:\
48hSpeicherbereich zuweisen
BX: Paragraphenzahl
CF zeigt Fehler (AX: Fehlercode)
Wenn Fehlercode=08h dann BX: Anzahl verfügbarer Paragraphen
sonst AX: Speichersegmentadresse
49hSpeicherblock freigeben
ES: Segmentadresse Speicherbereich
CF zeigt Fehler (AX: Fehlercode)
4AhSpeicherblock setzen
BX: Paragraphenzahl
ES: Speichersegmentadresse
CF zeigt Fehler (AX: Fehlercode)
wenn AX=08h dann BX: Anzahl verfügbarer Paragraphen
4BhUnterprogrammaufrufe
4BhUnterprogramm laden und starten
AL: 00h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4BhProgramm laden
AL: 01h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4BhUnterprogramm laden
AL: 03h
DS:DX: Adresse ASCIIZ-Pfad
ES:BX: Adresse Parameterblock
CF zeigt Fehler (AX: Fehlercode)
4BhProgrammausführung setzen
AL: 05h
ES:BX: Adresse Parameterblock
keine
4ChProgramm beenden
AL: Returncode
keine
Der Return-Code kann als ERRORLEVEL abgefragt werden
4DhBeendigungscode ermittelnAH: 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
4EhErsten Eintrag finden
CX: Dateiattribut
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
Die gefundenen Daten stehen in der DTA
4FhWeiteren Eintrag findenCF zeigt Fehler (AX: Fehlercode)
50hPSP-Adresse setzen
BX: neue Segmentadresse des PSP
keine
51hPSP-Adresse feststellenBX: Segmentadresse des PSP
52hDIB-Adresse ermittelnES:BX: Adresse DIB
54hVerify-Flag ermittelnAL: Verify-flag (0=aus, 1=ein)
56hDatei umbenennen oder verschieben
DS:DX: alter ASCIIZ-Pfadstring
ES:DI: neuer ASCIIZ-Pfadstring
CF zeigt Fehler (AX: Fehlercode)
57hDatum 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)
58hKonzept der Speicherverwaltung lesen oder setzen
AL: Modus (0=lesen, 1=setzen)
BX: Strategie
CF zeigt Fehler (AX: Fehlercode)
sonst CX: Strategie
58hUMB-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)
58hUMB-Verbindung setzen
BX: UMB-Verbindung (s. Rückgabe bei Funktion 5802h)
CF zeigt Fehler (AX: Fehlercode)
sonst CX: Strategie
59hErweiterten Fehlercode lesen
BX: 00h
AX: erweiterter Fehlercode
BH: Fehlerkategorie
BL: Verfahrensvorschlag
CH: Fehlerquelle
5AhTemporäre Datei erstellen
CX: Dateiattribut (nur Bits 0124)
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
5Bhneue Datei erstellen
CX: Datei-Attribut (nur Bits 0124)
DS:DX: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)
sonst AX: Dateihandle
5ChDatei 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
5DhErweiterten Fehler setzen
AL: 0Ah
DS:DX: Adresse Paramterblock
keine
Parameterblock:


Parameterblock:

OffsetDatentypBedeutung
00hWordWert für AX
02hWordWert für BX
04hWordWert für CX
06hWordWert für DX
08hWordreserviert
0AhWordWert für DI
0ChWordreserviert
0EhWordWert für ES
5EhMaschinenspezifikation
5EhMaschinennamen lesen
AL: 00h
DS:DX: Adresse 16-Byte-Puffer
CF zeigt Fehler (AX: Fehlercode)
sonst CH: Gültigkeit
CL: Nummer des Netzwerkbios
5EhMaschinennamen setzen
AL: 01h
keine
5EhDruckerzeichenkette setzen
AL: 02h
keine
5EhDruckerzeichenkette lesen
AL: 03h
keine
5FhEintrag aus Zuweisungsliste lesen
AL: 02h
keine
5FhEintrag in Zuweisungsliste einfügen
AL: 03h
keine
5FhEintrag aus Zuweisungsliste löschen
AL: 04h
keine
62hPSP-Adresse ermittelnBX: PSP-Segment-Adresse
65hLänderinformationen
65hStandard-Länderinfors ermitteln
AL: 01h
keine
65hZeiger auf Großschrifttabelle ermitteln
AL: 02h
keine
65hZeiger auf Dateinamentabelle zur Großschrift ermitteln
AL: 04h
keine
65hBegrenzungszeichen für Dateinamen ermitteln
AL: 05h
keine
65hOrdnugstabelle ermitteln
AL: 06h
keine
65hZeichen umwandeln
AL: 20h
keine
65hZeichenkette umwandeln
AL: 21h
keine
65hASCIIZ-Kette umwandeln
AL: 22h
keine
66hZeichensatztabellen
66hGlobale Zeichensatztabelle ermitteln
AL: 01h
keine
66hGlobale Zeichensatztabelle setzen
AL: 02h
keine
67hMaximale Handleanzahl setzen
BX: Handle-Anzahl
CF zeigt Fehler (AX: Fehlercode)
68hDateipuffer schreibenCF zeigt Fehler (AX: Fehlercode)
6ChErweitertes Öffnen
BX: Modus
CX: Datei-Attribut
DX: Reaktions
DS:SI: Adresse ASCIIZ-Pfadname
CF zeigt Fehler (AX: Fehlercode)


FAT-ID-Byte (Funktion 1Bh)

WertBedeutung
0FFhdoppelseitige 5,25" Disk, 8 Sektoren/Spur, 40 Spuren
0FEHeinseitige 5,25" Disk, 8 Sektoren/Spur, 40 Spuren (auch 8"-Disk)
0FDhdoppelseitige 5,25" Disk, 9 Sektoren/Spur, 40 Spuren (auch 8"-Disk)
0FCheinseitige 5,25" Disk, 9 Sektoren/Spur, 40 Spuren
0FBhdoppelseitige 3,5" Disk, 8 Sektoren/Spur, 80 Spuren
0FAheinseitige 5,25" Disk, 8 Sektoren/Spur, 80 Spuren
0F9hdoppelseitige 5,25" Disk, 15 Sektoren/Spur, 40 Spuren
doppelseitige 3,5" Disk, 9 Sektoren/Spur, 80 Spuren
0F8hFestplatte
0F0hdoppelseitige 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)

OffsetDatentypBedeutung
00hByteNummer des Laufwerks
01hBytePhysikalische Nummer des Laufwerkes
02hWordAnzahl Bytes/Sektor
04hByteAnzahl Sektoren/Cluster - 1
05hByteAnzahl Sektoren/Cluster 2^x
06hWordNummer des ersten FAT-Sektors
08hByteAnzahl der FATs
09hWordAnzahl Stammverzeichniseinträge
0BhWordNummer des ersten Datensektors
0DhWordAnzahl Cluster + 1
0FhWordAnzahl Sektoren/FAT
11hWordNummer des ersten Sektors im Stammverzeichnis
13hDWordZeiger auf den Gerätetreiberkopf
17hByteSpeichermedium
18hByteKennzeichen: Laufwerk schon benutzt
19hDWordZeiger auf den nächsten DPB
1DhWordZeiger auf den letzten belegten Cluster
1FhWordAnzahl freie Cluster


Landescodetabelle

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


34-Byte-Puffer nach Aufruf von Funktion 38h

ByteBedeutung
00hDatumsformat (0=USA [MMTTJJ]; 1=Europa [TTMMJJ]; 3=Japan [JJMMTT]
01himmer 0
02h-06hASCIIZ-String für landesspezifisches Währungssymbol ('DM'); Rest ist #0
07hASCII-Code für landesspezifisches Tausendertrennzeichen ('.')
08himmer 0
09hASCII-Code für landesspezifisches Dezimalzeichen (',')
0Ahimmer 0
0BhASCII-Code für landesspezifisches Datumstrennzeichen ('.')
0Chimmer 0
0DhASCII-Code für landesspezifisches Zeittrennzeichen (':')
0Ehimmer 0
0FhGibt 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
10hgibt Anzahl der Nachkommastellen bei Währungsangaben an
11hZeitformat; 0=12-Stunden-Format, 1=24-Stunden-Format
12hAdresse des landesspezifischen Groß&Kleinbuchstabenwandlers; wird mit zu wandelndem ASCII-Code zwischen 80h und 0FFh in AL aufgerufen
16hListentrennzeichen
18h-21hreserviert für DOS


Dateizugriffscode (Funktion 3Dh)

BitnummerBedeutung
0-1Dateiattribut; 00b=readonly; 01b=writeonly; 10b=read an write
2-3immer 0
4-6File-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
7Handle-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)

BitnummerBedeutung
0wenn 1: Datei ist readonly
1wenn 1: Datei ist hidden
2wenn 1: Systemdatei
3wenn 1: Volume-Label
4wenn 1: Verzeichnis
5wenn 1: Archiv-Datei
Der Wert 3Fh steht für Anyfile


Geräte-Attribut (Funktionen 44h/00h-01h)

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


Geräte-Attribut-Code (Funktion 44h/09h)

DX-Register bei Server-Laufwerken

BitnummerBedeutung
0-8reserviert (immer 0)
9wenn 1: Laufwerk ist lokal vorhanden, wird aber von anderen Einheiten im Netz adressiert
10-11reserviert (immer 0)
12immer 1
13-14reserviert (immer 0)
15wenn 0: Laufwerk existiert physikalisch

Geräte-Attribut-Code (Funktion 44h/09h)

DX-Register bei nicht vernetzten Laufwerken

BitnummerBedeutung
0reserviert
1wenn 1: Partitionen von mehr als 32 MB werden unterstützt
2-5reserviert (immer 0)
6wenn 1: Funktion 440Dh von Int 21h wird unterstützt
7wenn 1: Funktion 4411h von Int 21h wird unterstützt
8reserviert (immer 0)
9wenn 1: Laufwerk ist lokal vorhanden, wird aber von anderen Einheiten im Netz adressiert
10reserviert (immer 0)
11wenn 1: Funktion 4408h von Int 21h und die Kommandocodes 0Dh, 0Eh und 0Fh werden unterstützt
120
13wenn 0: Speichermedium arbeitet mit Standardformat
14wenn 1: Int 21h unterstützt die Funktionen 4404h und 4405h
15wenn 0: das Laufwerk existiert physikalisch


Parameterblock der Funktionen 44h/0Dh/40h,41h

BytenummerBedeutung
00hSpezialfunktionen
01hGerätetyp
02h-03hGeräteattribute
04h-05hAnzahl Zylinder/Sektor
06hTyp des Speichermediums
07h-08hSegmentadresse des BPB
09h-0AhOffsetadresse des BPB
0Bh-0ChSegmentadresse des Spurlayouts
0Dh-0EOffsetadresse des Spurlayouts


BPB - BIOS-Parameter-Block (Funktionen 44h/0Dh/40h-68h)

BytenummerBedeutung
00h-01hAnzahl Bytes/Sektor
02hAnzahl Sektoren/Cluster
03h-04hAnzahl reservierter Sektoren
05hAnzahl FATs
06h-07hAnzahl Einträge im Hauptverzeichnis
08h-09hAnzahl gesamter Sektoren
0AhBeschreibungscode des Speichermediums
0Bh-0ChAnzahl Sektoren/FAT
0Dh-0EhAnzahl Sektoren/Spur
0Fh-10hAnzahl der Schreib/Leseköpfe
11h-14hversteckte Sektoren
15h-1Ahreserviert


Strategiecodes der Funktion 58h

CodeBedeutung
00hFirst fit
01hBest fit
02hLast fit
80hdurchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 00h
81hdurchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 01h
82hdurchsucht auch den UMB-Bereich, wenn kein Fund dann nach Methode 02h
0Chdurchsucht nur den UMB-Bereich
0C1hdurchsucht nur den UMB-Bereich
0C2hdurchsucht nur den UMB-Bereich


Aufbau der DTA (Funktionen 1Ah, 2Fh)

OffsetBedeutung
00h-14hreserviert für DOS
15hAttribut des Eintrags
16h-17hErstellungszeit: Bits 0-4=Sekunde in 2er-Schritten, 5-10=Minute, 11-15=Stunde
18h-19hErstellungsdatum: Bits 0-4=Tag (1-31), 5-8=Monat (1-12), 9-15=Jahr als Offset zu 1980
1Ah-1DhGröße in low:high
1Eh-2BhASCIIZ-Dateiname

Mouse-Interrupt (Interrupt 33h)

Dieser Interrupt wird auf die richtige Adresse eingestellt, wenn der Maustreiber korrekt 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.

Funktionen des Interrupts 33h

FunktionBedeutung und EingabeAusgabe und Kommentar
00hMaus-Reset und StatusAX: Status (0FFFFh=Maus vorhanden, 00000=keine Maus installiert)
BX: Anzahl Maustasten
01hMauscursor zeigenkeine
02hMauszeiger ausblendenkeine
03hMaustastenstatus und Pos. ermittelnBX: Status der Maustaste
CX: aktuelle Mausspalte
DX: aktuelle Mauszeile
04hMauszeiger setzen
CX: Mausspalte
DX: Mauszeile
keine
05hMaustastenstatus 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
06hMaustastenstatus beim Loslassen
BX: Maustaste
AX: Status
BX: Zähler
CX: Mausspalte beim letzten Loslassen
DX: Mauszeile beim letzten Loslassen
07hmin. und max. Mausspalte festlegen
CX: linke Grenze
DX: rechte Grenze
keine
08hmin. und max. Mauszeile festlegen
CX: obere Grenze
DX: untere Grenze
keine
09hGrafikcursor festlegen
BX: X-Offset des HotSpots
CX: Y-Offset des HotSpots
ES:DX: Adresse der Cursormaske
keine
0AhTextcursor 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
0BhBewegungszähler der Maus lesenCX: X-Zähler
DX: Y-Zähler
0ChInterruptmaske und Adresse festlegen
CX: Aufrufmaske
ES:DX: Adresse des Handlers
keine
siehe auch unten
0DhLichtgriffelemulation einschaltenkeine
0EhLichtgriffelemulation ausschaltenkeine
0FhMickey/Bildpunkt-Verhältnis setzen
CX: X-Verhältnis
DX: Y-Verhältnis
keine
10hMauscursor 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
13hAnfangswert für doppelte Geschwindigkeit setzen
DX: Grenzwert
keine
Standardwert: 64 Mickeys/Sekunde
14hInterruptmaske 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
15hPuffergröße für Maustreiberstatus ermittelnBX: benötigter Speicher für Status
16hMaustreiberstatus speichern
ES:DX: Adresse des Puffers
keine
17hMaustreiberstatus zurücksetzen
ES:X: Adresse des Puffers
keine
18herweiterte 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
19herweiterte Interruptadresse ermitteln
CX: gesuchte Aufrufmaske (s. Funktion 18h)
AX: Fehlerstatus
CX: tatsächliche Aufrufmaske
ES:DX: Adresse Interrupthandler
1AhMausempfindlichkeit setzen
BX: X-Empfindlichkeit
CX: Y-Empfindlichkeit
DX: Anfangswert für doppelte Geschwindigkeit
keine
1BhMausempfindlichkeit ermittelnBX: X-Empfindlichkeit
CX: Y-Empfindlichkeit
DX: Anfangswert für doppelte Geschwindigkeit
1ChMaus-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
1DhNummer der Bildschirmseite setzen
BX: Bildschirmseite
keine
1EhNummer der Bildschirmseite ermittelnBX: Bildschirmseite
1FhMaustreiber abschaltenAX: Fehlerstatus (0FFFFh=Abschaltung nicht möglich)
ES:BX: Adresse ISR Int 33h
20hMaustreiber einschaltenkeine; Folge von Funktion 1Fh
21hSoftware-ResetAX: Fehlercode (21h=keine Maus installiert; 0FFFFh=Maus installiert)
22hSprache setzen
BX: Sprache (00=Englisch; 01=Französisch; 02=Niederländisch; 03=Deutsch; 04=Schwedisch; 05=Finnisch; 06=Spanisch; 07=Portugiesisch; 08=Italienisch
keine
23hSprachennummer ermittelnBX: augenblickliche Sprache
24hKonfigurationsdaten ermittelnBX: Version (Hauptversion)
CH: Maustyp (01=Busmaus; 02=serielle Maus; 03=InPort-Maus; 04=PS/2-Maus; 05=HP-Maus
CL: Interruptleitung

Assembler/Funktionen/Interrupts.txt · Zuletzt geändert: 2009/03/27 01:19 (Externe Bearbeitung)