Schück-VCR: IBM Laser 4019 Emulationsswitch (1998)

Drucker IBM 4019

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 Schck"
'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 drcken 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

Hinterlasse einen Kommentar