summaryrefslogtreecommitdiff
path: root/system/printer-9nadel/0.9/src/printer.neun.nadel
diff options
context:
space:
mode:
Diffstat (limited to 'system/printer-9nadel/0.9/src/printer.neun.nadel')
-rw-r--r--system/printer-9nadel/0.9/src/printer.neun.nadel1129
1 files changed, 1129 insertions, 0 deletions
diff --git a/system/printer-9nadel/0.9/src/printer.neun.nadel b/system/printer-9nadel/0.9/src/printer.neun.nadel
new file mode 100644
index 0000000..00f698b
--- /dev/null
+++ b/system/printer-9nadel/0.9/src/printer.neun.nadel
@@ -0,0 +1,1129 @@
+PACKET driver inst 9 (* Autoren : mov/hjh *)
+ (* Stand : 01.10.88 *)
+
+ DEFINES druckerkanal,
+ treiber einrichten:
+
+
+LET up = ""3""13""5"",
+
+ generator name = "printer.neun.nadel",
+
+ description file name = "beschreibungen9",
+ module file name = "module9";
+
+
+INT VAR pr channel,
+ positioning,
+ quality,
+ sheet feeder,
+ service option;
+TEXT VAR fonttab name :: "",
+ driver name :: "";
+TEXT VAR inp;
+BOOL VAR was esc;
+
+
+PROC druckerkanal (INT CONST channel) :
+
+ serverchannel (channel)
+
+END PROC druckerkanal;
+
+INT PROC druckerkanal : pr channel END PROC druckerkanal;
+
+
+PROC treiber einrichten:
+
+ treiber einrichten (0)
+END PROC treiber einrichten;
+
+PROC treiber einrichten (INT CONST service opt):
+
+ ask for print channel;
+ main menu;
+ IF installed
+ THEN generate printer spool
+ ELSE inform about restart
+ FI.
+
+ ask for printchannel:
+ inits;
+ page;
+ headline ("Druckerkanal - Einstellung");
+ cursor (1, 15);
+ putline ("Hinweis: Die Druckerkanalnummer kann auch nachträglich mit");
+ putline (" 'druckerkanal (Kanalnummer)' in der Task """ +
+ name (myself) + """");
+ putline (" verändert werden.");
+ REP
+ cursor (1, 10);
+ put (""5"EUMEL-Kanalnummer des Druckerkanals:");
+ get (pr channel);
+ disable stop;
+ druckerkanal (pr channel);
+ BOOL VAR no error :: NOT is error;
+ IF is error
+ THEN cursor (1, 7);
+ put error;
+ putline ("Eingabe korrigiert wiederholen!")
+ FI;
+ clear error;
+ enable stop
+ UNTIL no error PER.
+
+ inits:
+ line;
+ IF single task
+ THEN errorstop ("Dieser Treiber arbeitet nur mit Multi-Tasking-EUMEL")
+ 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;
+ INT VAR choice;
+ service option := service opt.
+
+ single task: (pcb (9) AND 255) = 1.
+
+ main menu:
+ BOOL VAR installed :: FALSE;
+ REP
+ show main menu;
+ get choice;
+ treat choice
+ UNTIL was esc OR installed PER.
+
+ show main menu:
+ page;
+ headline ("Hauptmenü 9-Nadel-Drucker");
+ putline (" 1. Brother");
+ putline (" 2. Citizen");
+ putline (" 3. C. Itoh");
+ putline (" 4. Epson");
+ putline (" 5. Fujitsu");
+ putline (" 6. IBM");
+ putline (" 7. Mannesmann - Tally");
+ putline (" 8. OKI");
+ putline (" 9. Schneider");
+ putline ("10. Star").
+
+ get choice:
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Installation abbrechen");
+ ask user (10).
+
+ treat choice:
+ SELECT int (inp) OF
+ CASE 1: brother menu
+ CASE 2: citizen menu
+ CASE 3: c itoh menu
+ CASE 4: epson menu
+ CASE 5: fujitsu menu
+ CASE 6: ibm menu
+ CASE 7: mannesmann menu
+ CASE 8: oki menu
+ CASE 9: schneider menu
+ CASE 10: star menu
+ END SELECT.
+
+
+ brother menu:.
+
+ citizen menu:
+ page;
+ headline ("Citizen - Menü");
+ putline (" 1. 120-D");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (1);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ citi120d inst
+ FI.
+
+ citi120d inst:
+ putline ("Citizen 120-D");
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("S1 S2 S3 S4 S5 S6 S7 S8");
+ putline ("egal OFF OFF egal egal egal egal egal");
+ show control options ("");
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("citi120d");
+ installed := TRUE
+ FI.
+
+ c itoh menu:
+ page;
+ headline ("C. Itoh - Menü");
+ putline (" 1. C 310 CXP");
+ putline (" 2. C 315 CXP");
+ putline (" 3. CI-3500");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (3);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ IF choice = 3
+ THEN ci3500 inst
+ ELSE c310 inst
+ FI
+ FI.
+
+ c310 inst:
+ IF choice = 1
+ THEN putline ("C. Itoh C 310 CXP")
+ ELSE putline ("C. Itoh C 315 CXP")
+ FI;
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- 00: Epson-Modus (02)");
+ putline ("- 22: nur Wagenrücklauf (01)");
+ show control options ("std speed, paperfeed");
+ show material options ("slow, fast, schacht1, schacht2");
+ show command options ("schacht1, schacht2, schwarz, rot, blau, violett, gelb, orange, grün");
+ ask for positioning;
+ ask for paper feed;
+ IF all right
+ THEN get fonttable ("fonttab.7.cxp");
+ generate ("citohc310cxp");
+ adjust positioning;
+ adjust paper feed;
+ IF choice = 2 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ ci3500 inst:
+ putline ("C. Itoh CI-3500");
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- 26: nur Wagenrücklauf (1)");
+ putline ("- 49: 17,1 Zeichen pro Zoll (17)");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.10");
+ generate ("citohci3500");
+ adjust positioning;
+ installed := TRUE
+ FI.
+
+ epson menu:
+ page;
+ headline ("Epson - Menü");
+ putline (" 1. MX 80 Typ III");
+ putline (" 2. MX 100 Typ III");
+ putline (" 3. LX 800");
+ putline (" 4. LX 1000");
+ putline (" 5. FX 85");
+ putline (" 6. FX 105");
+ putline (" 7. FX 800 oder FX 850");
+ putline (" 8. FX 1000 oder FX 1050");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (8);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ SELECT choice OF
+ CASE 1, 2: mx80 inst
+ CASE 3, 4: lx800 inst
+ CASE 5, 6: fx85 inst
+ CASE 7, 8: fx800 inst
+ END SELECT
+ FI.
+
+ mx80 inst:
+ IF choice = 1
+ THEN putline ("Epson MX 80 Typ III")
+ ELSE putline ("Epson MX 100 Typ III")
+ FI;
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.1");
+ generate ("mx");
+ adjust positioning;
+ IF choice = 2 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ lx800 inst:
+ IF choice = 3
+ THEN putline ("Epson LX 800")
+ ELSE putline ("Epson LX 1000")
+ FI;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("SW1-1 SW1-2 SW1-3 SW1-4 SW1-5 SW1-6 SW1-7 SW1-8 SW2-1 SW2-2 SW2-3 SW2-4");
+ putline ("egal egal egal egal egal egal egal egal egal *) OFF OFF");
+ putline ("*) ON: Einzelblatteinzug, OFF: kein Einzug");
+ show control options ("std speed, std quality, std typeface");
+ show material options ("slow, fast, draft, nlq, roman, sansserif");
+ show command options ("draft, nlq, roman, sansserif");
+ ask for positioning;
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.20.lx");
+ generate ("lx800");
+ adjust positioning;
+ adjust quality;
+ IF choice = 4 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ fx85 inst:
+ IF choice = 5
+ THEN putline ("Epson FX 85")
+ ELSE putline ("Epson FX 105")
+ FI;
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("SW1-1 SW1-2 SW1-3 SW1-4 SW1-5 SW1-6 SW1-7 SW1-8 SW2-1 SW2-2 SW2-3 SW2-4");
+ putline ("egal egal egal ON egal egal egal egal egal egal OFF OFF");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("fx85");
+ adjust positioning;
+ IF choice = 6 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ fx800 inst:
+ IF choice = 7
+ THEN putline ("Epson FX 800 oder FX 850")
+ ELSE putline ("Epson FX 1000 oder FX 1050")
+ FI;
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("SW1-1 SW1-2 SW1-3 SW1-4 SW1-5 SW1-6 SW1-7 SW1-8 SW2-1 SW2-2 SW2-3 SW2-4");
+ putline ("egal egal egal ON egal egal egal egal egal *) OFF OFF");
+ putline ("*) ON: Einzelblatteinzug, OFF: kein Einzug");
+ show control options ("std quality, std typeface");
+ show material options ("draft, nlq, roman, sansserif");
+ show command options ("draft, nlq, roman, sansserif");
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.20");
+ generate ("fx800");
+ adjust quality;
+ IF choice = 8 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ fujitsu menu:
+ page;
+ headline ("Fujitsu - Menü");
+ putline (" 1. DX 2100");
+ putline (" 2. DX 2200");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (2);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ SELECT choice OF
+ CASE 1,2 : dx2100 inst
+ END SELECT
+ FI.
+
+ dx2100 inst:
+ IF choice = 1
+ THEN putline ("Fujitsu DX 2100")
+ ELSE putline ("Fujitsu DX 2200")
+ FI;
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("SW1-1 SW1-2 SW1-3 SW1-4 SW1-5 SW1-6 SW1-7 SW1-8 SW2-1 SW2-2 SW2-3 SW2-4");
+ putline ("egal egal egal egal egal egal egal egal egal *) OFF OFF");
+ putline ("*) ON: Einzelblatteinzug, OFF: kein Einzug");
+ show control options ("std speed, paper feed");
+ show material options ("slow, fast");
+ show command options ("schwarz, rot, blau, violett, gelb, rot, grün");
+ ask for positioning;
+ ask for paper feed;
+ IF all right
+ THEN get fonttable ("fonttab.7.fuj");
+ generate ("fujdx2100");
+ adjust positioning;
+ adjust paper feed;
+ IF choice = 2 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+
+
+ ibm menu:
+ page;
+ headline ("IBM - Menü");
+ putline (" 1. Grafikdrucker (""80 Zeichen breit"")");
+ putline (" 2. Grafikdrucker (""136 Zeichen breit"")");
+ putline (" 3. Proprinter/Grafikdrucker II (""80 Zeichen breit"")");
+ putline (" 4. Proprinter/Grafikdrucker II (""136 Zeichen breit"")");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (4);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ IF choice = 1 OR choice = 2
+ THEN ibmgp inst
+ ELSE ibmpp inst
+ FI
+ FI.
+
+ ibmgp inst:
+ IF choice = 1
+ THEN putline ("IBM Grafikdrucker (""80 Zeichen breit"")")
+ ELSE putline ("IBM Grafikdrucker (""136 Zeichen breit"")")
+ FI;
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.10");
+ generate ("ibmgp");
+ adjust positioning;
+ IF choice = 2 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ ibmpp inst:
+ IF choice = 3
+ THEN putline ("IBM Proprinter/Grafikdrucker II (""80 Zeichen breit"")")
+ ELSE putline ("IBM Proprinter/Grafikdrucker II (""136 Zeichen breit"")")
+ FI;
+ show control options ("std speed, std quality");
+ show material options ("slow, fast, draft, nlq");
+ show command options ("draft, nlq");
+ ask for positioning;
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.10");
+ generate ("ibmpp");
+ adjust positioning;
+ adjust quality;
+ IF choice = 4 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ mannesmann menu:
+ page;
+ headline ("Mannesmann - Tally - Menü");
+ putline (" 1. MT 230");
+ putline (" 2. MT 340");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (2);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ IF choice = 1
+ THEN mt230 inst
+ ELSE mt340 inst
+ FI
+ FI.
+
+ mt230 inst:
+ putline ("Mannesmann-Tally MT 230");
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Der Drucker muß auf den ANSI+EPSON - Modus eingestellt werden.");
+ putline ("(Siehe: MT 230 Anwenderhandbuch, S. 4-145)");
+ show control options ("std speed, paperfeed");
+ show material options ("slow, fast, schacht1, schacht2");
+ show command options ("schacht1, schacht2, schwarz, magenta, cyan, blau, gelb, rot, grün");
+ ask for positioning;
+ ask for paper feed;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("mt230");
+ adjust positioning;
+ adjust paper feed;
+ do ("papersize (39.37, 30.48)");
+ installed := TRUE
+ FI.
+
+ mt340 inst:
+ putline ("Mannesmann-Tally MT 340");
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Der Drucker muß auf den ANSI+EPSON - Modus eingestellt werden.");
+ putline ("(Siehe: MT 340 Anwenderhandbuch, S. 4-104)");
+ show control options ("std speed, paperfeed");
+ show material options ("slow, fast, schacht1, schacht2");
+ show command options ("schacht1, schacht2, schwarz, magenta, cyan, blau, gelb, rot, grün");
+ ask for positioning;
+ ask for paper feed;
+ IF all right
+ THEN get fonttable ("fonttab.7.mt");
+ generate ("mt340");
+ adjust positioning;
+ adjust paper feed;
+ do ("papersize (39.37, 30.48)");
+ installed := TRUE
+ FI.
+
+ oki menu:
+ page;
+ headline ("OKI - Menü");
+ putline (" 1. MICROLINE 182 IBM-kompatibel");
+ putline (" 2. MICROLINE 183 IBM-kompatibel");
+ putline (" 3. MICROLINE 192 ELITE");
+ putline (" 4. MICROLINE 193 ELITE");
+ putline (" 5. MICROLINE 292 ELITE");
+ putline (" 6. MICROLINE 293 ELITE");
+ putline (" 7. MICROLINE 294 IBM-kompatibel");
+ putline (" 8. MICROLINE 320");
+ putline (" 9. MICROLINE 321");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (9);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ SELECT choice OF
+ CASE 1, 2: ml182i inst
+ CASE 3, 4: ml192el inst
+ CASE 5, 6: ml292el inst
+ CASE 7 : ml294i inst
+ CASE 8, 9: ml320 inst
+ END SELECT
+ FI.
+
+ ml182i inst:
+ IF choice = 1
+ THEN putline ("OKI Microline 182 IBM-kompatibel")
+ ELSE putline ("OKI Microline 183 IBM-kompatibel")
+ FI;
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("S-1 S-2 S-3 S-4 S-5 S-6 S-7 S-8");
+ putline ("egal egal OFF egal egal OFF egal OFF");
+ show control options ("std speed, std quality");
+ show material options ("slow, fast, draft, nlq");
+ show command options ("draft, nlq");
+ ask for positioning;
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.10");
+ generate ("okiml182i");
+ adjust positioning;
+ adjust quality;
+ IF choice = 2 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ ml192el inst:
+ IF choice = 3
+ THEN putline ("OKI Microline 192 ELITE (IBM/EPSON-kompatibel)")
+ ELSE putline ("OKI Microline 193 ELITE (IBM/EPSON-kompatibel)")
+ FI;
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- 13: Automatic Line Feed: Nein");
+ putline ("- 18: Compatibility: EPSON FX");
+ putline ("(Außerdem: Jumper SP5 in Position 'B')");
+ show control options ("std speed, paperfeed");
+ show material options ("slow, fast");
+ ask for positioning;
+ ask for paper feed;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("okiml192el");
+ adjust positioning;
+ adjust paper feed;
+ IF choice = 4 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ ml292el inst:
+ IF choice = 5
+ THEN putline ("OKI Microline 292 ELITE (IBM/EPSON-kompatibel)")
+ ELSE putline ("OKI Microline 293 ELITE (IBM/EPSON-kompatibel)")
+ FI;
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- Automatic Line Feed: NO");
+ putline ("- Compatibility: EPSON EX");
+ putline ("(Außerdem: Jumper SP5 in Position 'B')");
+ show control options ("paperfeed, std quality, std typeface");
+ show material options ("draft, nlq, courier, sansserif");
+ show command options ("draft, nlq, courier, sansserif");
+ putline ("schwarz, rot, blau, violett, gelb, orange, grün");
+ ask for paper feed;
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.20");
+ generate ("okiml292el");
+ adjust paper feed;
+ adjust quality;
+ IF choice = 6 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ ml294i inst:
+ putline ("OKI Microline 294 IBM-kompatibel");
+ putline ("Der Druckertreiber unterstützt auch den Farbdruck mit entsprechendem");
+ putline ("Farbband.");
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- Proportional Spacing: NO");
+ putline ("- Automatic Line Feed: NO");
+ putline ("- Compatibility: PROPRINTER XL");
+ show control options ("paperfeed, std quality");
+ show material options ("draft, nlq");
+ show command options ("draft, nlq, schwarz, rot, blau, violett, gelb, orange, grün");
+ ask for paper feed;
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.10");
+ generate ("okiml294i");
+ adjust paper feed;
+ adjust quality;
+ do ("papersize (34.544, 30.48)");
+ installed := TRUE
+ FI.
+
+ ml320 inst:
+ IF choice = 8
+ THEN putline ("OKI Microline 320 IBM/EPSON-kompatibel")
+ ELSE putline ("OKI Microline 321 IBM/EPSON-kompatibel")
+ FI;
+ line;
+ putline ("Der Drucker muß so konfiguriert sein (Druckmenü des Druckers):");
+ putline ("- Automatic Line Feed: Nein");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("okiml320");
+ adjust positioning;
+ IF choice = 9 THEN do ("papersize (34.544, 30.48)") FI;
+ installed := TRUE
+ FI.
+
+ schneider menu:
+ page;
+ headline ("Schneider - Menü");
+ putline (" 1. DMP 4000");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (1);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ dmp4000 inst
+ FI.
+
+ dmp4000 inst:
+ putline ("Schneider DMP 4000");
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("DS1-4 übrige Schalter");
+ putline (" OFF egal");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("dmp4000");
+ adjust positioning;
+ do ("papersize (39.37, 30.48)");
+ installed := TRUE
+ FI.
+
+ star menu:
+ page;
+ headline ("Star - Menü");
+ putline (" 1. LC-10 (auch LC-10 Colour)");
+ putline (" 2. NX-15");
+ putline (" 3. ND-10");
+ putline (" 4. ND-15");
+ putline (" 5. NR-10");
+ putline (" 6. NR-15");
+ cursor (1,24);
+ put ("CR: Eingabe ESC: Zurück zum Hauptmenü");
+ ask user (6);
+ page;
+ choice := int (inp);
+ IF was esc
+ THEN was esc := FALSE
+ ELSE headline ("");
+ putline ("Druckertyp:");
+ IF choice = 1
+ THEN lc10 inst
+ ELIF choice = 2
+ THEN nx15 inst
+ ELSE nd10 inst
+ FI
+ FI.
+
+ lc10 inst:
+ putline ("Star LC-10 oder LC-10 Colour");
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("S1-1 S1-2 S1-3 S1-4 S1-5 S1-6 S1-7 S1-8 S2-1 S2-2 S2-3 S2-4");
+ putline ("egal egal egal *) egal EIN egal EIN egal egal egal egal");
+ putline ("*) AUS: Einzelblatteinzug, EIN: kein Einzug");
+ show control options ("std quality, std typeface");
+ show material options ("draft, nlq, courier, sansserif, orator1, orator2");
+ show command options ("draft, nlq, courier, sansserif, orator1, orator2");
+ putline ("schwarz, rot, blau, violett, gelb, orange, grün");
+ ask for quality;
+ IF all right
+ THEN get fonttable ("fonttab.20.lc");
+ generate ("starlc10");
+ adjust quality;
+ do ("papersize (21.0, 30.48)");
+ installed := TRUE
+ FI.
+
+ nx15 inst:
+ putline ("Star NX-15");
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("S1-4 S1-8 S2-5 übrige Schalter");
+ putline ("EIN EIN EIN egal");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("starnx15");
+ adjust positioning;
+ do ("papersize (36.0, 30.48)");
+ installed := TRUE
+ FI.
+
+ nd10 inst:
+ IF choice = 3
+ THEN putline ("Star ND-10");
+ ELIF choice = 4
+ THEN putline ("Star ND-15");
+ ELIF choice = 5
+ THEN putline ("Star NR-10");
+ ELSE putline ("Star NR-15");
+ FI;
+ line;
+ putline ("Die DIP-Schalter müssen so eingestellt sein:");
+ putline ("S1-5 S1-6 S2-2 übrige Schalter");
+ putline ("EIN EIN EIN egal");
+ show control options ("std speed");
+ show material options ("slow, fast");
+ ask for positioning;
+ IF all right
+ THEN get fonttable ("fonttab.7");
+ generate ("starnx15");
+ adjust positioning;
+ IF choice = 3 OR choice = 5
+ THEN do ("papersize (21.0, 30.48)")
+ ELSE do ("papersize (36.0, 30.48)")
+ FI;
+ installed := TRUE
+ FI.
+
+generate printer spool:
+ IF service opt = 0
+ THEN forget (generator name, quiet);
+ forget (driver name, quiet)
+ FI;
+ eumel must advertise;
+ cursor (1, 10);
+ putline ("In allen bestehenden Tasks - insbesondere in der Task ""PUBLIC"" - muß");
+ putline ("die Fonttabelle mit dem Kommando");
+ line;
+ putline (" font table (""" + font tab name + """)");
+ line;
+ putline ("eingestellt werden!!!");
+ line (2);
+ putline ("Hinweis: Dieses Installationsprogramm kann in der Task """ + name (myself) + """");
+ putline (" mit 'treiber einrichten' aufgerufen werden, wenn ein anderer");
+ putline (" Drucker eingesetzt werden soll.");
+ line (2);
+ put ("Generierung beendet, weiter mit 'SV'");
+ break (quiet);
+ do ("spool manager (PROC printer)").
+
+ inform about restart:
+ page;
+ putline ("Es ist kein Druckertreiber installiert worden!");
+ line;
+ putline ("Dieses Installationsprogramm kann in der Task """ + name (myself) + """");
+ putline ("mit 'treiber einrichten' erneut aufgerufen werden.");
+ line.
+
+END PROC treiber einrichten;
+
+PROC headline (TEXT CONST header):
+
+ cursor (13,1);
+ putline ("E U M E L - Druckertreiber - Installations - Programm");
+ cursor (40 - LENGTH header DIV 2, 2);
+ put (header);
+ line (2)
+END PROC headline;
+
+PROC ask user (INT CONST max choice):
+
+ TEXT VAR exit;
+ 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:
+ int (inp) > 0 AND int (inp) <= max choice AND last conversion ok.
+END PROC ask user;
+
+PROC show control options (TEXT CONST options):
+
+ line;
+ putline ("Steuerprozeduren in der Task """ + name (myself) + """:");
+ write ("papersize, top margin");
+ IF options <> ""
+ THEN put (",");
+ putline (options)
+ FI
+END PROC show control options;
+
+PROC show material options (TEXT CONST options):
+
+ line;
+ putline ("Mögliche Materialwerte (#material(""..."")#):");
+ putline (options)
+END PROC show material options;
+
+PROC show command options (TEXT CONST options):
+
+ line;
+ putline ("Mögliche direkte Druckeranweisungen (#""...""#):");
+ putline (options)
+END PROC show command options;
+
+PROC ask for positioning:
+
+ line (2);
+ putline ("Positionierung in x-Richtung:");
+ line;
+ REP out (up);
+ IF yes ("in Mikroschritten (genauer, aber langsamer)")
+ THEN positioning := 1; LEAVE ask for positioning
+ FI;
+ out (up);
+ IF yes ("in Blanks (schneller, aber ungenauer)")
+ THEN positioning := 2; LEAVE ask for positioning
+ FI;
+ PER
+END PROC ask for positioning;
+
+PROC ask for quality:
+
+ line (2);
+ putline ("Standard - Druckqualität:");
+ line;
+ REP out (up);
+ IF yes ("Draft Quality (schneller, aber nicht so schön)")
+ THEN quality := 1; LEAVE ask for quality
+ FI;
+ out (up);
+ IF yes ("Near Letter Quality (schöner, aber langsamer)")
+ THEN quality := 2; LEAVE ask for quality
+ FI;
+ PER
+END PROC ask for quality;
+
+PROC ask for paper feed:
+
+ line (2);
+ putline ("Einzelblatteinzug:");
+ line;
+ REP out (up);
+ IF yes ("kein Einzelblatteinzug vorhanden")
+ THEN sheet feeder := 0; LEAVE ask for paper feed
+ FI;
+ out (up);
+ IF yes ("Einzelblatteinzug vorhanden")
+ THEN sheet feeder := 1; LEAVE ask for paper feed
+ FI;
+ PER
+END PROC ask for paper feed;
+
+BOOL PROC all right:
+
+ line (3);
+ cursor (1,23);
+ yes ("Soll der ausgewählte Druckertreiber installiert werden")
+END PROC all right;
+
+PROC get fonttable (TEXT CONST name):
+
+ fonttab name := name;
+ from archive ((description file name & module file name & fonttab name)
+ - all);
+ fonttable (fonttab name);
+ command dialogue (FALSE);
+ save (fonttab name, /"configurator");
+ IF service option = 0
+ THEN forget (fonttab name)
+ FI;
+ command dialogue (TRUE);
+END PROC get fonttable;
+
+PROC from archive (THESAURUS CONST files):
+
+ IF highest entry (files) > 0
+ THEN fetch from archive;
+ release (archive);
+ putline ("Archiv abgemeldet !")
+ FI.
+
+ fetch from archive:
+ THESAURUS VAR thes :: files;
+ REP
+ ask for archive;
+ reserve archive;
+ fetch (thes / ALL archive, archive);
+ thes := thes - all
+ UNTIL highest entry (thes) = 0 PER.
+
+ask for archive:
+ line;
+ 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 !");
+ line;
+ putline ("Wenn eingelegt: Taste drücken !");
+ inchar (buffer).
+
+reserve archive :
+ INT VAR p1, p2;
+ archive (" "31" ");
+ disable stop;
+ 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;
+ enable stop.
+
+END PROC from archive;
+
+THESAURUS OP & (TEXT CONST left, right):
+ THESAURUS VAR result := empty thesaurus;
+ insert (result, left);
+ insert (result, right);
+ result
+END OP &;
+
+THESAURUS OP & (THESAURUS CONST left, TEXT CONST right):
+ THESAURUS VAR result := left;
+ insert (result, right);
+ result
+END OP &;
+
+PROC generate (TEXT CONST name):
+
+ open files;
+ read description;
+ build programme;
+ insert programme;
+ forget files.
+
+ open files:
+ line (5);
+ cursor (1, 20);
+ putline (""4"Bitte warten !");
+ putline (" - Der Treiber wird generiert.");
+ driver name := "printer." + name + "(generiert)";
+ IF exists (driver name)
+ THEN forget (driver name, quiet)
+ FI;
+ FILE VAR des file :: sequential file (modify, description file name),
+ mod file :: sequential file (modify, module file name),
+ driver file :: sequential file (output, driver name).
+
+ read description:
+ to line (des file, 1);
+ col (des file, 1);
+ downety (des file, "$" + name + "$");
+ IF eof (des file)
+ THEN errorstop ("Beschreibung von """ + name + """ nicht im"13""10"" +
+ "Descriptions-File enthalten")
+ FI;
+ TEXT VAR description :: "",
+ record;
+ BOOL VAR done :: FALSE;
+ read record (des file, record);
+ record := subtext (record, col (des file) + LENGTH name + 2);
+ WHILE NOT eof (des file) AND NOT done REP
+ treat record
+ PER.
+
+ treat record:
+ INT VAR dollar pos :: pos (record, "$");
+ IF dollar pos = 0
+ THEN description CAT compress (record);
+ down (des file);
+ read record (des file, record)
+ ELSE description CAT compress (subtext (record, 1, dollar pos - 1));
+ col (des file, dollar pos);
+ done := TRUE;
+ FI.
+
+ build programme:
+ get module name;
+ WHILE still modules REP
+ find module;
+ transfer module;
+ get module name
+ PER.
+
+ get module name:
+ INT VAR semicol pos :: pos (description, ";");
+ TEXT VAR module name;
+ IF semicol pos > 0
+ THEN module name := subtext (description, 1, semicol pos - 1);
+ description := subtext (description, semicol pos + 1)
+ ELSE module name := description;
+ description := ""
+ FI.
+
+ still modules:
+ module name <> "" OR description <> "".
+
+ find module:
+ to line (mod file, 1);
+ col (mod file, 1);
+ downety (mod file, "$" + module name + "$");
+ IF eof (mod file)
+ THEN errorstop ("Modul """ + module name + """ nicht im"13""10"" +
+ "Modul-File enthalten")
+ FI.
+
+ transfer module:
+ done := FALSE;
+ read record (mod file, record);
+ record := subtext (record, col (mod file) + LENGTH module name + 2);
+ WHILE NOT eof (mod file) AND NOT done REP
+ transfer record
+ PER.
+
+ transfer record:
+ dollar pos := pos (record, "$");
+ IF dollar pos = 0
+ THEN write (driver file, compress (record));
+ line (driver file);
+ down (mod file);
+ read record (mod file, record)
+ ELSE write (driver file, compress (subtext (record, 1,
+ dollar pos - 1)));
+ col (mod file, dollar pos);
+ done := TRUE;
+ cout (line no (mod file))
+ FI.
+
+ insert programme:
+ IF online
+ THEN putline (" - Der Treiber wird insertiert.")
+ FI;
+ check off;
+ insert (driver name).
+
+ forget files:
+ IF service option = 0
+ THEN forget (description file name, quiet);
+ forget (module file name, quiet)
+ FI.
+END PROC generate;
+
+PROC adjust positioning:
+
+ IF positioning = 1
+ THEN do ("std speed (""slow"")")
+ ELSE do ("std speed (""fast"")")
+ FI
+END PROC adjust positioning;
+
+PROC adjust quality:
+
+ IF quality = 1
+ THEN do ("std quality (""draft"")")
+ ELSE do ("std quality (""nlq"")")
+ FI
+END PROC adjust quality;
+
+PROC adjust paper feed:
+
+ IF sheet feeder = 1
+ THEN do ("paper feed (""sheet"")")
+ ELSE do ("paper feed (""tractor"")")
+ FI
+END PROC adjust paperfeed;
+
+treiber einrichten
+
+END PACKET driver inst 9
+