Schück-VCR: IBM Laser 4019 Emulationsswitch (1998)
Früher hatten wir einen IBM Laser 4019 im Einsatz. Nachteil dieses Gerät war das er im Postscriptmodus sehr Langsam war um einen Brief auszudrucken. Es ging ca 30 Sekunden. Darum habe ich ein Programm geschrieben um den Datenstrom von Postscriptmodus auf PCL zu ändern. Damit waren Briefe in 3 Sekunden gedruckt.
DIM SetPort AS STRING
DIM SetPortAdr AS LONG
DIM SetDatenstrom AS STRING
DIM SetDatenstromNr AS INTEGER
DIM GetDatenStromNr AS INTEGER
DIM NewDatenStrom AS INTEGER
DIM FIL AS INTEGER
DIM TimerAn AS LONG
'
PRINT "IBM LaserPrinter 4019 Datenstrom wechsler, (C) 1996 Daniel Schck"
'ON ERROR GOTO ErrorHandler
StrPos = INSTR(1, COMMAND$, ",")
IF StrPos > 0 THEN
SetPort = "LPT" + LTRIM$(RTRIM$(LEFT$(COMMAND$, StrPos - 1))) + ":"
SetDatenstrom = UCASE$(LTRIM$(RTRIM$(MID$(COMMAND$, StrPos + 1))))
END IF
IF SetPort = "" THEN
SetPort = "LPT1:"
END IF
SELECT CASE SetPort
CASE "LPT1:"
SetPortAdr = &H378
CASE "LPT2:"
SetPortAdr = 0
END SELECT
'
IF COMMAND$ = "" OR SetDatenstrom = "" THEN
PRINT ""
PRINT "Syntax: "
PRINT ""
PRINT " IBMLZR (Port),(Emulation)"
PRINT ""
PRINT " IBMLZR 1,PPDS -> IBM Proprinter Emulation am Port 1"
PRINT " IBMLZR 1,HP -> Hewlett Packard Emulation am Port 1"
PRINT " IBMLZR 1,PLOTTER -> IBM Plotter Emulation am Port 1"
PRINT " IBMLZR 1,POSTSCRIPT -> Adobe Postscript Emulation am Port 1"
PRINT " IBMLZR 2,PPDS -> IBM Proprinter Emulation am Port 2"
PRINT " IBMLZR 2,HP -> Hewlett Packard Emulation am Port 2"
PRINT " IBMLZR 2,PLOTTER -> IBM Plotter Emulation am Port 2"
PRINT " IBMLZR 2,POSTSCRIPT -> Adobe Postscript Emulation am Port 2"
ELSE
FIL = FREEFILE
OPEN SetPort FOR OUTPUT AS FIL
WIDTH #FIL, 255
PRINT "- Alter Datenstrom: ";
TimerAn = TIMER
DO
GetDatenStromNr = INP(SetPortAdr)
LOOP UNTIL GetDatenStromNr <> 10 OR TIMER - TimerAn > 45
SELECT CASE GetDatenStromNr
CASE 1
PRINT "PPDS - Modus (IBM Proprinter)"
CASE 2
PRINT "HP - Modus (Hewlett Packard)"
CASE 3
PRINT "PLOTTER - Modus (IBM Plotter)"
CASE 8
PRINT "POSTSCRIPT - Modus (Adobe Postscript)"
CASE ELSE
PRINT "Nicht feststellbar "; GetDatenStromNr
GetDatenStromNr = 1
END SELECT
SELECT CASE GetDatenStromNr
CASE 1, 2, 3
PRINT #FIL, CHR$(27) + CHR$(91) + CHR$(75) + CHR$(3) + CHR$(0) + CHR$(7) + CHR$(49);
SELECT CASE SetDatenstrom
CASE "PPDS"
PRINT #FIL, CHR$(1);
NewDatenStromNr = 1
CASE "HP"
PRINT #FIL, CHR$(2);
NewDatenStromNr = 2
CASE "PLOTTER"
PRINT #FIL, CHR$(3);
NewDatenStromNr = 3
CASE "POSTSCRIPT"
PRINT #FIL, CHR$(8);
NewDatenStromNr = 8
END SELECT
CASE 8
PRINT #FIL, "serverdict begin 0 exitserver"
PRINT #FIL, "statusdict begin"
SELECT CASE SetDatenstrom
CASE "PPDS"
PRINT #FIL, 11;
NewDatenStromNr = 1
CASE "HP"
PRINT #FIL, 5;
NewDatenStromNr = 2
CASE "PLOTTER"
PRINT #FIL, 4;
NewDatenStromNr = 3
CASE "POSTSCRIPT"
PRINT #FIL, 0;
NewDatenStromNr = 8
END SELECT
PRINT #FIL, " setsoftwareiomode"
PRINT #FIL, "end"
PRINT #FIL, CHR$(11)
CASE ELSE
PRINT "- Datenstrom nicht gewechselt"
END SELECT
CLOSE FIL
'
FIL = FREEFILE
OPEN SetPort FOR OUTPUT AS FIL
WIDTH #FIL, 255
TimerAn = TIMER
DO
GetDatenStromNr = INP(SetPortAdr)
LOOP UNTIL GetDatenStromNr = NewDatenStromNr OR TIMER - TimerAn > 45
PRINT "- Neuer Datenstrom: ";
SELECT CASE GetDatenStromNr
CASE 1
PRINT "PPDS - Modus (IBM Proprinter)"
CASE 2
PRINT "HP - Modus (Hewlett Packard)"
CASE 3
PRINT "PLOTTER - Modus (IBM Plotter)"
CASE 8
PRINT "POSTSCRIPT - Modus (Adobe Postscript)"
CASE ELSE
PRINT "Nicht feststellbar "; GetDatenStromNr
GetDatenStromNr = 1
END SELECT
END IF
CLOSE FIL
Ende:
PRINT "- Eingestellter Modus feststellbar mit drcken auf Taste Position."
PRINT "- Dann Nummer ablesen: (1 = PPDS, 2 = HP, 3 = PLOTTER, 8 = POSTSCRIPT)"
END
'
ErrorHandler:
BEEP
PRINT "Der Drucker konnte nicht angesprochen werden."
PRINT "Bitte warten."
TimerAn = TIMER
DO UNTIL TIMER - TimerAn& > 10
LOOP
RESUME Ende