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.