Ein Drucker für zwei

Die Situation ist gar nicht so selten: Für zwei PCs ist nur ein Drucker da. Ein Umschalter kostet Geld und ist oft auch aus räumlichen Gründen unpraktisch, weil die Länge eines Druckerkabels stark begrenzt ist. Es ist aber weder der besagte Umschalter noch ein zweiter Drucker notwendig, wenn Sie unsere Programme LPTCOM- und LPTSHARE.DEB verwenden. Die Programme, stehen über ein Nullmodem-Kabel in Verbindung und regeln den Datenfluß von zwei unterschiedlichen PCs auf einen Drucker. LPTCOM installiert sich in den Interrupt 17h des druckerlosen PCs und leitet alle Daten, die für die parallele Schnittstelle bestimmt sind, mit einer Übertragungsgeschwindigkeit von 38400 Baud (!) auf den seriellen Port um.

Gemeinsam mit dem Empfängerprogramm im anderen PC, LPTSHARE, kommt es zu einem einfachen »Handshaking« - als Quittung für jedes übertragene Byte wird der Statuscode des Druckers verwendet. Erhält LPTCOM 5 Sekunden lang keine Möglichkeit, ein Byte zu drucken, geht das Programm von einem Fehler aus. Die druckende Anwendung merkt von der Umleitung absolut nichts. Auch mit dem »Vermittler«-PC können Sie während dieser Zeit wie gewohnt wieterarbeiten. Beide Programme arbeiten diskret im Hintergrund und benötigen jeweils weniger als 500 Byte. Sogar Hardcopies funktionieren problemlos auf beiden PCs. Kommt es zu einem Fehler, etwa weil die Leitung unterbrochen ist oder das Papier fehlt, erhalten Sie die gewohnten Meldungen. LPTSHARE klinkt sich je nach Schnittstelle entweder in den Interrupt 0Ch oder 0Bh ein. Bei größeren Übertragungen verbraucht das Programm zur Koordinierung etwas Rechenzeit. Bei einem mit 4,77 MHz getakteten Original IBM-PC mit einem sehr langsamen Drucker ohne eigenen Puffer (IBM-Grafikdrucker) reduziert sich die Arbeitsgeschwindigkeit um rund ein Drittel. Da auf beiden Computern das Drucken zu jeder Zeit möglich ist, sollten Sie sich natürlich mit Ihrem Kollegen absprechen, um Drucksalat zu vermeiden. Eine Übertragungsrate von 38400 Baud (3840 Byte pro Sekunde), bei der effektiv rund 1 KByte Daten pro Sekunde gedruckt werden kann, gewährleistet eine hohe Datensicherheit bei akzeptabler Geschwindigkeit. Für Laserdrucker können Sie die Datenrate übrigens auch erhöhen, indem Sie den dritten Wert von rechts in der DW-Zeile im hinteren Teil der Listings verändern. Beide Programme sind natürlich mit den selben Werten zu konfigurieren:

BaudrateWert
115200 1
57600 2
38400 3
19200 6
9600 C
7200 10
4800 18
2400 30
1200 60

Allerdings zeigt diese Erhöhung der Übertragungsgeschwindigkeit nur bei schnelleren Geräten einen Effekt – viele PCs sind einfach zu langsam, um auf die Übertragung eines Datenbytes mit der maximalen Rate von 115,2 KBaud (11,52 KByte pro Sekunde) in einer angemessenen Zeitspanne reagieren zu können. Probleme ergeben sich jedoch auch dadurch nicht. Solche können lediglich entstehen, wenn ein anderes Übertragungsprogramm gestartet wird, das auf die gleiche Schnittstelle zugreift, oder wenn zwischendurch die Schnittstellenparameter verändert werden. Wie Sie eine einfache Nullmodem-Verbindung realisieren können, erfahren Sie im Kapitel »Andere Hardware«.

<tr><td valign="top">Einschränkungen:</td><td> Funktioniert nur in Verbindung mit LPTSHARE.</td></tr> </table> A MOV AX,[82]  ;100 ADD [150],AX  ;103 CMP By[84],32  ;107 JNZ 112  ;10C DEC By[149]  ;10E MOV AX,3517  ;112 INT 21  ;115 MOV [198],BX  ;117 MOV [19A],ES  ;11B MOV DX,14E  ;11F MOV AX,2517  ;122 INT 21  ;125 MOV SI,8  ;127 MOV AX,[SI+19C]  ;12A CALL 147  ;12E SUB SI,2  ;131 JNB 12A  ;134 CALL 13E  ;136 MOV DX,19C  ;139 INT 27  ;13C XOR DX,DX  ;13E CS:ADD DX,[148]  ;140 IN AL,DX  ;145 RET  ;146 MOV DX,3F8  ;147 ADD DL,AH  ;14A OUT DX,AL  ;14C RET  ;14D CMP DX,D3CF  ;14E JNZ 197  ;152 PUSH CX  ;154 PUSH DX  ;155 CS:MOV [16B],AL  ;156 CMP AH,1  ;15A MOV AH,90  ;15D JNB 194  ;15F MOV AH,0  ;161 INT 1A  ;163 CS:MOV [180],DX  ;165 MOV AX,0  ;16A CALL 147  ;16D MOV DX,5  ;170 CALL 140  ;173 TEST AL,1  ;176 JNZ 18B  ;178 MOV AH,0  ;17A INT 1A  ;17C SUB DX,100  ;17E CMP DX,5A  ;182 JB 170  ;185 MOV AH,C9  ;187 JMP 194  ;189 CALL 13E  ;18B TEST AL,1  ;18E JNZ 16A  ;190 MOV AH,AL  ;192 POP DX  ;194 POP CX  ;195 IRET  ;196 JMP 0:0  ;197 DW 100,303,3,100,380 RCX A6 NLPTCOM.COM W Q
Name: LPTCOM.DEB
Funktion: Leitet Druckerausgaben auf eine serielle Schnittstelle um.
Übersetzung: DEBUG <LPTCOM.DEB
Prüfsumme: 632E
Anwendung: LPTCOM P,S

P = Parallele Schnittstelle (1 ... 4)

S = Serielle Schnittstelle (1 oder 2)</strong>
Name: LPTSHARE.DEB
Funktion: Leitet von der seriellen Schnittstelle empfangene Daten auf den Drucker um.
Übersetzung: DEBUG <LPTSHARE.DEB
Prüfsumme: 7170
Anwendung: LPTSHARE P,S

P = Parallele Schnittstelle (1 ... 4)

S = Serielle Schnittstelle (1 oder 2)
Einschränkungen: Funktioniert nur in Verbindung mit LPTCOM.

A
MOV AX,[82]         ;100
ADD [15B],AX        ;103
MOV AX,250C         ;107
MOV CL,EF           ;10A
CMP By[84],32       ;10C
JNZ 11B             ;111
DEC By[141]         ;113
DEC AL              ;117
MOV CL,F7           ;119
MOV DX,146          ;11B
INT 21              ;11E
MOV SI,A            ;120
MOV AX,[SI+176]     ;123
CALL 13F            ;127
SUB SI,2            ;12A
JNB 123             ;12D
MOV DX,[140]        ;12F
IN AL,DX            ;133
IN AL,21            ;134
AND AL,CL           ;136
OUT 21,AL           ;138
MOV DX,176          ;13A
INT 27              ;13D
MOV DX,3F8          ;13F
ADD DL,AH           ;142
OUT DX,AL           ;144
RET                 ;145
PUSH AX             ;146
PUSH DX             ;147
XOR DX,DX           ;148
CS:MOV DX,[140]     ;14A
IN AL,DX            ;14F
CS:MOV [168],AL     ;150
MOV AX,220          ;154
OUT 20,AL           ;157
STI                 ;159
MOV DX,D3CF         ;15A
INT 17              ;15D
OR AH,1             ;15F
TEST AH,80          ;162
JZ 16C              ;165
MOV AX,0            ;167
INT 17              ;16A
MOV AL,AH           ;16C
MOV AH,0            ;16E
CALL 13F            ;170
POP DX              ;173
POP AX              ;174
IRET                ;175
DW 408,101,303,3,100,380

RCX
82
NLPTSHARE.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot

Ihr Kommentar?

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Sie können folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>