Int 17h Parallele Schnittstelle

Die BIOS-Funktionen des Int 17h können bis zu drei parallele Schnittstellen bedienen. Die Nummer der Schnittstelle wird im DX-Register übergeben. Nach Aufruf liefert jede der drei Funktionen das Status-Byte der Schnittstelle in AH zurück.

LPT1: DX = 0
LPT2: DX = 1
LPT3: DX = 2

Funktion 0 - Zeichen ausgeben

Bearbeiten
MOV   AH, 00   ; Funktionsnummer 0
MOV   AL, char ; ASCII-Zeichen
MOV   DX, 00   ; LPT1
INT   17h      ; Liefert in AH den Status zurück.

Funktion 1 - LPT initialisieren

Bearbeiten
MOV   AH, 01   ; Keyboard Status OHNE Abholung des Zeichens
MOV   DX, 02   ; LPT3
INT   17h      ; Liefert in AH den Status zurück.

Funktion 2 - LPT-Status abfragen

Bearbeiten
MOV   AH, 02   ; Shift Status
MOV   DX, 01   ; LPT2
INT   17h      ; Liefert in AH den Status zurück.

Status-Byte

Bearbeiten
Bit 7  0 = Drucker ist beschäftigt (busy)
Bit 6  1 = Empfangsbestätigung
Bit 5  1 = Kein Papier mehr
Bit 4  1 = Drucker ist Online
Bit 3  1 = Übertragungsfehler
Bit 2  unbenutzt
Bit 1  unbenutzt
Bit 0  1 = Time-Out-Fehler

Time-Out-Fehler werden immer dann gemeldet, wenn nach einer gewissen Anzahl an Versuchen das Zeichen nicht vom Endgerät angenommen wurde. Dies kommt relativ häufig vor, da die parallele Schnittstelle im Vergleich zu einem z.B. angeschlossenen Drucker sehr schnell ist. Der Time-Out-Wert ist daher per BIOS-Variable anpassbar.

0040:0078 - Time-Out-Wert LPT1
0040:0079 - Time-Out-Wert LPT2
0040:007A - Time-Out-Wert LPT3

Beim Booten wird durch das BIOS standardmäßig der Wert 20 eingetragen. Da die Wiederholschleife sehr kurz ist, wird der hier eingetragene Wert mit einer Konstanten, meist 262.140 (4*65536) multipliziert. Der Wert 20 entspricht daher mehr als 5 Millionen Versuchen.

Da es sich um eine reine Software-Schleife handelt, ist die Time-Out-Dauer direkt von der Prozessorgeschwindigkeit abhängig. Oft wird jedoch kein höherer Time-Out-Wert gesetzt, sondern eine größere interne Konstante gewählt, z. B. 8 * 65536. Sollten trotzdem Time-Out-Fehler auftreten, können die Time-Out-Werte über die BIOS-Variablen vom Benutzer weiter angepasst werden.