Die Funktionen den Interruptes 15h (AT - Funktionen) stellt die
folgende Tabelle dar:
| Funktion |
Unter- Funktion |
Bedeutung |
Eingabe |
Ausgabe |
BIOS - Implementierung |
Anmerkungen |
| 4Fh |
- |
Tastatur abfangen |
AH=4Fh
AL=Tastatur - Auswahlcode |
CF=1: Taste wurde verarbeitet
CF=0: BIOS soll Taste verarbeiten |
AT, PS/2 |
Diese Funktion kann nicht direkt aufgerufen werden, sondern wird selbständig
vom Hardware - Interrupt 9 aufgerufen und kann auf eine eigene Routine umgelegt werden, die mit
RETF 2 enden muß. Sie bietet deshalb die Möglichkeit, die Tastatur abzufangen, wird
jedoch selten genutzt. |
| 83h |
00h |
Flag nach Zeitintervall setzen |
AH=83h
AL=0
CX=Zeit in Mikrosekunden (Bits 16 - 31)
DX=Zeit in Mikrosekunden (Bits 0 - 15)
ES:BX Zeiger auf ein Byte |
CF=1: Timer läuft bereits |
AT, PS/2 |
Es wird ein Timer gestartet, der Bit 7 des Bytes ES:BX auf 1 setzt. |
| 83h |
01h |
Timer stoppen |
AH=83h
AL=1 |
CF=1: Funktion nicht unterstützt |
AT, PS/2 |
Stoppt den mit der Unterfunktion 00h gestarteten Timer. |
| 84h |
00h |
Joystick, Feuertasten - Status lesen |
AH=84h
DX=0 |
CF=1: kein Joystick angeschlossen
sonst:
AL=Status der Feuerknöpfe |
AT, PS/2 |
Liest den Status der Feuerknöpfe eines
Joysticks. |
| 84h |
01h |
Joystick, Widerstandswerte lesen |
AH=84h
DX=1 |
CF=1: kein Joystick angeschlossen
sonst:
AX=X-Stellung des ersten Joysticks
BX=Y-Stellung des ersten Joysticks
CX=X-Stellung des zweiten Joysticks
DX=Y-Stellung des zweiten Joysticks |
AT, PS/2 |
Liefert die Stellungen der angeschlossenen Joysticks zurück. |
| 85h |
- |
SysReq - Taste betätigt |
AH=85h |
AL=1: Taste gedrückt,
AL=0: Taste losgelassen
(wenn Carry gesetzt: Fehler) |
AT, PS/2 |
stellt den Zustand der System - Request - Taste fest. |
| 86h |
- |
Warten |
AH=86h
AL=0
CX=Zeit in Mikrosekunden (Bits 16 - 31)
DX=Zeit in Mikrosekunden (Bits 0 - 15) |
- |
AT, PS/2 |
Wartet die entsprechende Zeit. |
| 87h |
- |
Speicherbereiche verschieben |
AH=87h
CX=Anzahl der zu verschiebenden Worte (<8000h)
ES:SI zeigt auf eine Global Descriptor Tabelle. |
AH=Status:
00=erfolgreich, 01=RAM-Parität, 02=anderer Exception-Fehler, 03=Protected-Mode konnte nicht
richtig initialisiert werden.
bei Fehler Carry-Flag gesetzt. |
AT, PS/2 |
- |
| 88h |
- |
Speichergröße über 1 MB |
AH=88h |
AX=Speichergröße |
AT, PS/2 |
Ermittelt die Größe des verfügbaren erweiterten Speichers. Bei
installiertem XMS - Treiber ist der Rückgabewert dieser Funktion in der Regel 0. |
| 89h |
- |
Umschaltung in den Protected Mode |
AH=89h
BH=Index auf Interrupt - Level 1
BL=Index auf Interrupt - Level 2
ES:SI zeigt auf eine Global Descriptor Tabelle |
AX=00h, wenn erfolgreich. Alle anderen zerstört.
Carry gesetzt bei Fehler. |
AT, PS/2 (?) |
- |
Der Interrupt 15h unterstützt zusätzlich einige weitere,
geräteabhängige Funktionen wie z.B. Funktionen zur Kassettenansteuerung etc.. Da diese
jedoch längst überholt sind und i.d.R. nicht mehr unterstützt werden, sind sie hier
nicht mehr aufgeführt (daher auch der Untertitel "AT-Funktionen").
Die Funktionen können mit dem Turbo-Pascal-eigenen Assembler
aufgerufen werden. Ein Anwendungsbeispiel könnte so aussehen:
Generell wird im Register AH die Funktionsnummer übergeben.
| Bit |
Bedeutung |
| 0 - 3 |
unbenutzt |
| 4 |
erster Feuerknopf des ersten Joysticks |
| 5 |
zweiter Feuerknopf des ersten Joysticks |
| 6 |
erster Feuerknopf des zweiten Joysticks |
| 7 |
zweiter Feuerknopf des zweiten Joysticks |
| Offset |
Länge |
Zeiger auf |
| 00h |
8 Bytes |
Dummy |
| 08h |
8 Bytes |
Global Descriptor Tabelle |
| 10h (16) |
8 Bytes |
Interrupt Descriptor Tabelle |
| 18h (24) |
8 Bytes |
Daten - Segment (Benutzer) |
| 20h (32) |
8 Bytes |
Extra - Segment (Benutzer) |
| 28h (40) |
8 Bytes |
Stapel - Segment (Benutzer) |
| 30h (48) |
8 Bytes |
Code - Segment (Benutzer) |
| 38h (56) |
8 Bytes |
Zeitweises BIOS - Code - Segment |
Alle Angaben ohne Gewähr.