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:
Baudrate | Wert |
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«.
Name: | LPTCOM.DEB |
Funktion: | Leitet Druckerausgaben auf eine serielle Schnittstelle um. |
Übersetzung: | DEBUG <LPTCOM.DEB |
Prüfsumme: | 632E |
Anwendung: | LPTCOM P,SP = Parallele Schnittstelle (1 … 4) S = Serielle Schnittstelle (1 oder 2)</strong> |
Einschränkungen: | Funktioniert nur in Verbindung mit LPTSHARE. |
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: | LPTSHARE.DEB |
Funktion: | Leitet von der seriellen Schnittstelle empfangene Daten auf den Drucker um. |
Übersetzung: | DEBUG <LPTSHARE.DEB |
Prüfsumme: | 7170 |
Anwendung: | LPTSHARE P,SP = 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
💡 Sie haben einen Linkedin-Account? Dann können Sie meinen Newsletter „Der 18-Jährige, der einen Zettel schrieb und verschwand“ abonnieren ✔︎