Home Programmierung
und BIOS
Shareware-
FAQ
Kontakt u.
Infos

BIOS-Interrupt 16h

Die Funktionen den Interruptes 16h (Tastatur-Routinen) stellt die folgende Tabelle dar:

Funktion Bedeutung Eingabe Ausgabe BIOS - Implementierung Anmerkungen
00h Zeichen lesen AH=00h AL=0: AH=erweiterter Tastaturcode

AL > 0: AL=ASCII - Code, AH=Scan - Code
PC, XT, AT, PS/2 Liest ein Zeichen von der Tastatur. Ist kein Zeichen vorhanden, wird gewartet, bis dies der Fall ist.
01h Zeichen vorhanden AH=01h ZF=1: kein Zeichen vorhanden;
sonst:
AL=0: AH=erweiterter Tastaturcode

AL > 0: AL=ASCII - Code, AH=Scan - Code
PC, XT, AT, PS/2 Überprüft, ob ein Zeichen von der Tastatur gelesen werden kann, Das gelesene Zeichen wird nich aus dem Tastaturpuffer entfernt.
02h Status abfragen AH=02h AL=Tastenstatus PC, XT, AT, PS/2 Ermittelt den Status von bestimmten Sondertasten wie Alt, Strg etc.
03h Automatische Zeichenwiederholung / Verzögerung setzen / abfragen AH=03h
AL=05h (setzen)
bzw. AL=06h (lesen)
bei AL=05h:
BH=Verzögerung
BL=Rate
im Lesemodus (AL=06h):
BH=Verzögerung
BL=Rate
AT, PS/2 Gültige Werte für Rate und Verzögerung sind unter dieser Tabelle zu finden.
05h Tastendruck simulieren AH=05h
CH=Scan - Code der Taste
CL=ASCII - Code der Taste
AL=0: OK
AL=1: Tastaturpuffer voll
AT, PS/2 Dient zur Simulierung eines Tastendruckes. Schreibt ein Zeichen direkt in den Tastaturpuffer.
10h Zeichen lesen (inkl. F11 und F12) AH=10h AL=0: AH=erweiterter Tastaturcode

AL > 0: AL=ASCII - Code, AH=Scan - Code
AT, PS/2 Liest ein Zeichen von der Tastatur. Ist kein Zeichen vorhanden, wird gewartet, bis dies der Fall ist. Dient insbesondere zur Abfrage von F11 und F12, die über Funktion 0h nicht unterstützt werden.
11h Zeichen vorhanden (inkl. F11 und F12) AH=11h ZF=1: kein Zeichen vorhanden;
sonst:
AL=0: AH=erweiterter Tastaturcode

AL > 0: AL=ASCII - Code, AH=Scan - Code
AT, PS/2 Überprüft, ob ein Zeichen von der Tastatur gelesen werden kann. Das gelesene Zeichen wird nicht aus dem Tastaturpuffer entfernt. Dient insbesondere zur Abfrage von F11 und F12, die über Funktion 0h nicht unterstützt werden.
12h Erweiterten Tastatur-Status ermitteln AH=12h AH=erweiterter Tastatur-Status
AL=normaler Tastatur-Status wie bei Funktion 02h
AT, PS/2 -

Die Funktionen können mit dem Turbo-Pascal-eigenen Assembler aufgerufen werden. Ein Anwendungsbeispiel könnte so aussehen:


ASM

  mov {...}

  {Register entsprechend der Spalte "Eingabe" belegen...}

  int $16;

  mov {...}

  {Register auslesen gemäß der Spalte "Ausgabe"...}

END;

Generell wird im Register AH die Funktionsnummer übergeben.

Tastaturstatus (Funktionen 02h & 12h)

Bit Bedeutung
0 rechte Shift-Taste betätigt
1 linke Shift-Taste betätigt
2 Strg-Taste betätigt
3 Alt-Taste betätigt
4 Rollen-Taste an
5 Num-Lock an
6 Feststelltaste an
7 Einfügemodus an

Gültige Verzögerungswerte und Wiederholraten (Funktion 03h)

Wert von BH Verzögerung
00h 250 ms
01h 500 ms
02h 750 ms
03h 1000 ms
Wert von BL Rate in cps
00h 30
01h 26,7
02h 24
03h 21,8
04h 20
05h 18,5
06h 17,1
07h 16
08h 15
09h 13,3
0Ah 12
0Bh 10,9
0Ch 10
0Dh 9,2
0Eh 8,6
0Fh 8
10h 7,5
11h 6,7
12h 6
13h 5,5
14h 5
15h 4,6
16h 4,3
17h 4
18h 3,7
19h 3,3
1Ah 3
1Bh 2,7
1Ch 2,5
1Dh 2,3
1Eh 2,1
1Fh 2
20h bis FFh reserviert

Erweiterter Tastaturstatus (Funktion 12h)

Bit Bedeutung
0 SysReq-Taste gedrückt
1 Caps-Lock gedrückt
2 Num-Lock gedrückt
3 Scroll-Lock gedrückt
4 Rechte Alt-Taste gedrückt
5 Rechte Strg-Taste gedrückt
6 Linke Alt-Taste gedrückt
7 Linke Strg-Taste gedrückt

Alle Angaben ohne Gewähr.

Achtung: bitte Hinweise zur Aktualitšt der Daten beachten! Copyright