summaryrefslogtreecommitdiff
path: root/printer/laser/laser.inserter
diff options
context:
space:
mode:
Diffstat (limited to 'printer/laser/laser.inserter')
-rw-r--r--printer/laser/laser.inserter275
1 files changed, 275 insertions, 0 deletions
diff --git a/printer/laser/laser.inserter b/printer/laser/laser.inserter
new file mode 100644
index 0000000..c28766f
--- /dev/null
+++ b/printer/laser/laser.inserter
@@ -0,0 +1,275 @@
+PACKET laserdrucker inserter DEFINES treiber einrichten :
+
+(**************************************************************************)
+(* Installationsprogramm Stand : 12.12.88 *)
+(* für Tintenstrahl- Version : 0.9 *)
+(* und Laserdrucker Autor : hjh *)
+(**************************************************************************)
+
+LET anzahl firmen = 6 ;
+LET apple = "APPLE" ,
+ canon = "CANON" ,
+ epson = "EPSON" ,
+ hp = "HEWLETT PACKARD" ,
+ kyo = "KYOCERA" ,
+ nec = "NEC" ;
+
+THESAURUS VAR firmen := empty thesaurus ;
+
+INT VAR i ;
+ROW anzahl firmen THESAURUS VAR drucker ;
+FOR i FROM 1 UPTO anzahl firmen REP
+ drucker (i) := empty thesaurus
+PER ;
+ROW anzahl firmen THESAURUS VAR printer ;
+FOR i FROM 1 UPTO anzahl firmen REP
+ printer (i) := empty thesaurus
+PER ;
+ROW anzahl firmen THESAURUS VAR fonttables ;
+FOR i FROM 1 UPTO anzahl firmen REP
+ fonttables (i) := empty thesaurus
+PER ;
+
+liste (apple,"LASERWRITER","printer.apple.laserwriter","fonttab.apple.laserwriter");
+liste (canon , "LBP-8" ,"printer.canon.lbp-8" ,"fonttab.canon.lbp-8");
+liste (epson , "SQ 2500" ,"printer.epson.sq" ,"fonttab.epson.sq");
+liste (hp , "HP LASERJET" ,"printer.hp.laserjet" ,"fonttab.hp.laserjet");
+liste (hp , "HP LASERJET+" ,"printer.hp.laserjet" ,"fonttab.hp.laserjet");
+liste (kyo , "F-1010" ,"printer.kyocera.f-1010" ,"fonttab.kyocera.f-1010");
+liste (kyo , "F-2200" ,"printer.kyocera.f-1010" ,"fonttab.kyocera.f-1010");
+liste (nec , "SILENTWRITER LC-08" ,"printer.nec.lc-08"
+,"fonttab.nec.lc-08");
+
+treiber einrichten;
+
+PROC liste (TEXT CONST firmenname, druckername ,
+ printername, fonttabname ) :
+ INT VAR firmnum ;
+ IF firmen CONTAINS firmenname
+ THEN firmnum := link (firmen,firmenname)
+ ELSE insert (firmen,firmenname,firmnum)
+ FI;
+ insert (drucker(firmnum), druckername) ;
+ insert (printer(firmnum), printername) ;
+ insert (fonttables(firmnum), fonttabname) ;
+END PROC liste ;
+
+PROC treiber einrichten :
+ INT VAR menu phase := 1 ;
+ BOOL VAR installed := FALSE ;
+ BOOL VAR was esc ;
+ INT VAR firmnum, druckernum ;
+ TEXT VAR firmenname, druckername, printername, fonttabname ;
+
+ pre menu ;
+ REP
+ SELECT menu phase OF
+ CASE 1 : menu ("Hauptmenü Tintenstrahl und Laserdrucker", firmen,
+ "CR: Eingabe ESC : Installation abrechen",
+ firmnum, was esc ) ;
+ IF was esc
+ THEN menu phase := 0
+ ELSE menu phase := 2 ;
+ firmenname := name (firmen,firmnum) ;
+ FI ;
+
+ CASE 2 : menu (firmenname + " - Menü", drucker(firmnum),
+ "CR: Eingabe ESC : Zurück zum Hauptmenü",
+ druckernum, was esc) ;
+ IF was esc
+ THEN menu phase := 1
+ ELSE menu phase := 3 ;
+ druckername := name (drucker(firmnum),druckernum);
+ printername := name (printer(firmnum),druckernum);
+ fonttabname := name (fonttables(firmnum),druckernum);
+ FI;
+
+ CASE 3 : inst (druckername, printername, fonttabname, installed) ;
+ IF NOT installed THEN menu phase := 1 FI;
+ END SELECT
+ UNTIL installed OR abbruch PER ;
+ post menu.
+
+ abbruch:
+ menu phase < 1 .
+
+ pre menu:
+ line;
+ IF is single task system
+ THEN errorstop ("Dieser Treiber arbeitet nur mit Multi-Tasking-EUMEL")
+ FI;
+ IF NOT is system task (myself)
+ THEN errorstop ("Die Druckertask muß im Systemzweig angelegt werden")
+ FI;
+ command dialogue (TRUE);
+ IF name (myself) <> "PRINTER"
+ THEN putline ("Diese Task heißt nicht ""PRINTER"", sondern """ +
+ name (myself) + """ !");
+ IF yes ("Soll die Task in ""PRINTER"" umbenannt werden ?")
+ THEN rename myself ("PRINTER")
+ FI
+ FI.
+
+ is single task system: (pcb (9) AND 255) = 1.
+
+ post menu:
+ IF NOT installed
+ THEN page;
+ putline ("Es ist kein Druckertreiber installiert worden!");
+ line;
+ putline ("Wenn dieses Installationsprogramm insertiert wurde,");
+ putline ("kann es in der Task """ + name (myself) + """ ");
+ putline ("mit 'treiber einrichten' erneut aufgerufen werden.");
+ line;
+ FI.
+
+END PROC treiber einrichten ;
+
+PROCEDURE menu (TEXT CONST header, THESAURUS CONST items, TEXT CONST bottom,
+ INT VAR choice, BOOL VAR was esc) :
+ INT VAR anzahl ;
+ page;
+ headline (header) ;
+ show list (items,anzahl) ;
+ bottomline (bottom) ;
+ ask user (anzahl,choice,was esc);
+END PROC menu ;
+
+PROC headline (TEXT CONST header):
+ cursor (13,1);
+ putline ("E U M E L - Druckertreiber - Installations - Programm");
+ cursor (40 - LENGTH header DIV 2, 2);
+ IF header <> "" THEN put (header) FI ;
+ line (2)
+END PROC headline;
+
+PROC bottomline (TEXT CONST bottom):
+ cursor (1,24);
+ IF bottom <> "" THEN put (""5"" + bottom) FI ;
+END PROC bottomline;
+
+PROC show list (THESAURUS CONST items , INT VAR anzahl ) :
+ INT VAR i ;
+ anzahl := highest entry (items);
+ FOR i FROM 1 UPTO anzahl REP
+ putline ( text(i) + ". " + name (items,i) ) ;
+ PER;
+END PROC show list ;
+
+PROC ask user (INT CONST max choice, INT VAR choice, BOOL VAR was esc):
+ TEXT VAR exit;
+ TEXT VAR inp := "";
+ REP
+ cursor (1,23);
+ IF inp = ""
+ THEN put ("Ihre Wahl (Nummer eingeben):")
+ ELSE put ("FEHLER! Eingabe korrigieren:")
+ FI;
+ editget (inp, ""27"", "", exit);
+ was esc := exit = ""27"";
+ UNTIL was esc OR ok PER.
+
+ ok:
+ choice := int (inp) ;
+ last conversion ok CAND ( choice > 0 AND choice <= max choice) .
+END PROC ask user;
+
+BOOL PROC is system task (TASK CONST task):
+ TASK VAR tsk := task ;
+ WHILE NOT (tsk = supervisor OR tsk = niltask) REP
+ tsk := father (tsk) ;
+ PER;
+ tsk = supervisor
+END PROC is system task ;
+
+PROC inst (TEXT CONST druckername, printername, fonttabname,
+ BOOL VAR success) :
+ page ;
+ headline (druckername) ;
+ fetch from archive if necessary ((empty thesaurus
+ + printer name + fonttab name) - all ,success);
+ IF success AND ok
+ THEN page ;
+ putline ("Der Drucker wird insertiert");
+ insert (printer name) ;
+ ELSE success := FALSE ;
+ FI.
+
+ok:
+ bottomline (" ");
+ yes ("Soll der ausgewählte Drucker insertiert werden").
+
+END PROC inst ;
+
+PROC fetch from archive if necessary (THESAURUS CONST files,
+ BOOL VAR success ):
+ BOOL VAR was esc ;
+ THESAURUS VAR thes :: files;
+
+ WHILE highest entry (thes) > 0 REP
+ ask for archive;
+ IF NOT was esc
+ THEN disable stop ;
+ bottomline ("Bitte warten ! ");
+ reserve archive;
+ IF NOT is error
+ THEN IF highest entry (thes / ALL archive) > 0
+ THEN fetch (thes / ALL archive, archive);
+ ELSE fehler ("Dateien nicht gefunden")
+ FI;
+ thes := thes - all;
+ FI;
+ IF is error
+ THEN fehler (errormessage);
+ clear error
+ FI;
+ command dialogue (FALSE);
+ release (archive);
+ command dialogue (TRUE);
+ enable stop ;
+ FI;
+ UNTIL was esc PER;
+ success := highest entry (thes) = 0.
+
+ask for archive:
+ headline ("") ;
+ putline ("Bitte Archiv mit den Dateien");
+ TEXT VAR buffer;
+ INT VAR index :: 0;
+ REP
+ get (thes, buffer, index);
+ putline (" " + buffer)
+ UNTIL index = 0 PER;
+ putline ("einlegen !");
+ bottomline ("CR: Wenn Archiv eingelegt ESC : Zurück zum Hauptmenü");
+ cursor (1,24);
+ REP
+ inchar (buffer) ;
+ UNTIL buffer = ""13"" OR buffer = ""27"" PER ;
+ was esc := buffer = ""27"".
+
+reserve archive :
+ INT VAR p1, p2;
+ archive (" "31" ");
+ list (archive);
+ IF is error
+ THEN buffer := errormessage;
+ p1 := pos (buffer, """", 1 ) + 1;
+ p2 := pos (buffer, """", p1) - 1;
+ IF p1 > 0 AND p2 > 0
+ THEN clear error;
+ buffer := subtext (buffer, p1, p2);
+ archive (buffer);
+ FI;
+ FI.
+
+END PROC fetch from archive if necessary ;
+
+PROC fehler (TEXT CONST fehlermeldung):
+ bottomline (""7"" + fehlermeldung + " Bitte eine Taste drücken") ;
+ pause ;
+ bottomline (" ") ;
+END PROC fehler;
+
+END PACKET laserdrucker inserter;
+