From 98cab31fc3659e33aef260efca55bf9f1753164c Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Mon, 11 Feb 2019 11:49:19 +0100 Subject: Add source files from Michael --- system/printer-9nadel/1986/doc/readme | 323 +++++++ system/printer-9nadel/1986/src/CHARED.ELA | 47 + system/printer-9nadel/1986/src/EPSONFX.ELA | 575 ++++++++++++ system/printer-9nadel/1986/src/EPSONRX.ELA | 171 ++++ system/printer-9nadel/1986/src/FONTTAB.10A | Bin 0 -> 3072 bytes system/printer-9nadel/1986/src/FONTTAB.12A | Bin 0 -> 3072 bytes system/printer-9nadel/1986/src/FONTTAB.S10 | Bin 0 -> 3072 bytes system/printer-9nadel/1986/src/FONTTAB.S12 | Bin 0 -> 3072 bytes system/printer-9nadel/1986/src/beschreibungen9 | 96 ++ system/printer-9nadel/1986/src/fonttab.1 | Bin 0 -> 11776 bytes system/printer-9nadel/1986/src/fonttab.10 | Bin 0 -> 16384 bytes system/printer-9nadel/1986/src/fonttab.20 | Bin 0 -> 37376 bytes system/printer-9nadel/1986/src/fonttab.20.lc | Bin 0 -> 37376 bytes system/printer-9nadel/1986/src/fonttab.20.lx | Bin 0 -> 25088 bytes system/printer-9nadel/1986/src/fonttab.7 | Bin 0 -> 46592 bytes system/printer-9nadel/1986/src/fonttab.7.cxp | Bin 0 -> 46592 bytes system/printer-9nadel/1986/src/fonttab.7.fuj | Bin 0 -> 57344 bytes system/printer-9nadel/1986/src/fonttab.7.mt | Bin 0 -> 46592 bytes system/printer-9nadel/1986/src/fonttab.epson.fx | Bin 0 -> 25600 bytes system/printer-9nadel/1986/src/fonttab.epson.lq | Bin 0 -> 36352 bytes system/printer-9nadel/1986/src/fonttab.epson.mx | Bin 0 -> 11776 bytes system/printer-9nadel/1986/src/fonttab.epson.rx | Bin 0 -> 20480 bytes system/printer-9nadel/1986/src/module9 | 1098 +++++++++++++++++++++++ system/printer-9nadel/1986/src/printer.epson.fx | 505 +++++++++++ system/printer-9nadel/1986/src/printer.epson.lq | 501 +++++++++++ system/printer-9nadel/1986/src/printer.epson.mx | 488 ++++++++++ system/printer-9nadel/1986/src/printer.epson.rx | 446 +++++++++ system/printer-9nadel/1986/src/printer.std | 431 +++++++++ 28 files changed, 4681 insertions(+) create mode 100644 system/printer-9nadel/1986/doc/readme create mode 100644 system/printer-9nadel/1986/src/CHARED.ELA create mode 100644 system/printer-9nadel/1986/src/EPSONFX.ELA create mode 100644 system/printer-9nadel/1986/src/EPSONRX.ELA create mode 100644 system/printer-9nadel/1986/src/FONTTAB.10A create mode 100644 system/printer-9nadel/1986/src/FONTTAB.12A create mode 100644 system/printer-9nadel/1986/src/FONTTAB.S10 create mode 100644 system/printer-9nadel/1986/src/FONTTAB.S12 create mode 100644 system/printer-9nadel/1986/src/beschreibungen9 create mode 100644 system/printer-9nadel/1986/src/fonttab.1 create mode 100644 system/printer-9nadel/1986/src/fonttab.10 create mode 100644 system/printer-9nadel/1986/src/fonttab.20 create mode 100644 system/printer-9nadel/1986/src/fonttab.20.lc create mode 100644 system/printer-9nadel/1986/src/fonttab.20.lx create mode 100644 system/printer-9nadel/1986/src/fonttab.7 create mode 100644 system/printer-9nadel/1986/src/fonttab.7.cxp create mode 100644 system/printer-9nadel/1986/src/fonttab.7.fuj create mode 100644 system/printer-9nadel/1986/src/fonttab.7.mt create mode 100644 system/printer-9nadel/1986/src/fonttab.epson.fx create mode 100644 system/printer-9nadel/1986/src/fonttab.epson.lq create mode 100644 system/printer-9nadel/1986/src/fonttab.epson.mx create mode 100644 system/printer-9nadel/1986/src/fonttab.epson.rx create mode 100644 system/printer-9nadel/1986/src/module9 create mode 100644 system/printer-9nadel/1986/src/printer.epson.fx create mode 100644 system/printer-9nadel/1986/src/printer.epson.lq create mode 100644 system/printer-9nadel/1986/src/printer.epson.mx create mode 100644 system/printer-9nadel/1986/src/printer.epson.rx create mode 100644 system/printer-9nadel/1986/src/printer.std (limited to 'system/printer-9nadel') diff --git a/system/printer-9nadel/1986/doc/readme b/system/printer-9nadel/1986/doc/readme new file mode 100644 index 0000000..a7edd90 --- /dev/null +++ b/system/printer-9nadel/1986/doc/readme @@ -0,0 +1,323 @@ +#type("nlq10")##limit(18.0)##start(1.5,1.0)# +#head# +Treiber-Installations-Programm #right#Seite % +fr 9-Nadel-Matrixdrucker #right#23.06.1988 + + +#end# +#on("u")#Dokumentation zum Treiber-Installations-Programm fr 9-Nadel- +Matrixdrucker#off("u")# + +#on("u")#Inhalt:#off("u")# + +1. Installations- und Gebrauchsanleitung +2. Druckertreiber-Auswahl +3. Steuerungsm”glichkeiten und Spezialfeatures +4. Weitere Hinweise + + +#on("b")#1. Installations- und Gebrauchsanleitung#off("b")# + +#on("u")#Einrichten#off("u")# +So wird das Treiber-Installationsprogramm eingerichtet: + + SV drcken + + nach 'gib supervisor kommando:' + + begin("PRINTER","SYSUR") + + in der Task "PRINTER" (nach 'gib kommando'): + + archive ("std.printer") + fetch ("printer.neun.nadel",archive) + check off + insert ("printer.neun.nadel") + +Das Programm wird dann insertiert. + +#on("u")#Druckerkanal#off("u")# +Hiernach wird die Kanalnummer des Druckers erfragt. Wenn der Drucker +ber Parallelschnittstelle betrieben wird, ist die Kanalnummer +meistens 15. + +#on("u")#Mensystem#off("u")# +Das Installationsprogramm zeigt nun eine Liste von Druckerherstellern. +W„hlen Sie den Hersteller Ihres Druckers aus! Hiernach wird eine Liste +der untersttzten Drucker dieses Herstellers gezeigt. W„hlen Sie hier +den passenden Typ aus! +Das Installationsprogramm zeigt nun einige Informationen zu dem ange- +w„hlten Drucker. Besonders zu beachten sind hierbei #on("u")#Angaben zur Konfi- +guration des Druckers#off("u")# (z.B. DIP-Schalter). Der Drucker muá unbedingt +wie angegeben konfiguriert werden, wenn er mit dem ausgew„hlten Trei- +ber betrieben werden soll. + +Hinweise zu Konfigurationsangaben: +1. Die Angabe 'egal' bedeutet, daá die Einstellung fr die Funktion + des Treibers keine Bedeutung hat. Dennoch solte der Anwender darauf + achten, welche Funktion die Schalter haben (Druckerhandbuch!). So + ist es zum Beispiel immer empfehlenswert, den Papierende-Sensor zu + aktivieren, damit der Drucker nach Papierende nicht auf der Walze + weiterdruckt. +2. Die Konfigurationsangaben beziehen sich immer auf genau den ausge- + w„hlten Druckertyp. Wenn Sie den Treiber mit einem anderen Drucker + als den ausgew„hlten verwenden, dann beachten Sie folgende Regeln + fr die Konfiguration: + - Der Drucker muá auf eine passende Emulation konfiguriert werden. + - Der Drucker darf bei einem Carriage Return (Code 13) keinen Zei- + lenvorschub durchfhren. + - Der Drucker darf die Perforation #on("u")#nicht#off("u")# automatisch berspringen. + + - Auf Seitenl„ngen und internationale Zeichens„tze mssen Sie nicht + achten. + +(Hinweise zur Auswahl des richtigen Treibers gibt Abschnitt 2) + +Nach den Konfigurationsangaben werden Steuerungsm”glichkeiten des +ausgew„hlten Treibers angezeigt. (Siehe hierzu Abschnitt 3) + +Falls der Treiber bestimmte grunds„tzliche Betriebsm”glichkeiten er- +laubt (z.B. DRAFT/NLQ, Einzelblatteinzug), werden Sie danach gefragt, +welche M”glichkeit standardm„áig gew„hlt werden soll. diese Vorein- +stellungen k”nnen nachtr„glich in der Task "PRINTER" mit den entspre- +chenden Steuerprozeduren neu gesetzt werden. Auáerdem k”nnen bestimmte +Einstellungen noch fr jedes einzelne Dokument (d.h. fr jede Druck- +datei) gew„hlt ('material'-Anweisung) oder sogar innerhalb eines Doku- +ments ver„ndert werden (direkte Druckeranweisung #"..."#). +šber die Steuerungsm”glichkeiten informiert Abschnitt 3 ausfhrlicher. + + +#on("b")#2. Druckertreiber-Auswahl#off("b")# + +#on("u")#Verwendung nicht im Men enthaltener Drucker#off("u")# +Fr den Fall, daá Sie genau Ihren Drucker im Men nicht finden, soll- +ten Sie zun„chst versuchen, ob ein Treiber fr einen anderen Drucker +des gleichen Herstellers mit Ihrem Drucker korrekt arbeitet. +Falls dies nicht funktioniert oder der Hersteller berhaupt nicht im +Men erscheint, mssen Sie herausfinden (Druckerhandbuch, -h„ndler!), +welchen Drucker Ihr Drucker emuliert oder welchem er „hnlich ist. +(Viele Drucker verfgen ber EPSON FX-85 bzw. FX-800-Emulationen oder +IBM Grafikdrucker bzw. Proprinter-Eumulationen.) +Eine der beiden Anpassungen 'EPSON MX' oder 'IBM-Grafikdrucker' máte +immer einen (Minimal-) Betrieb erm”glichen. + +#on("u")#Hinweise zu den Treibern fr FX-80/85-kompatilble Drucker#off("u")# +Die Treiber fr FX-80-bzw. FX-85-kompatible Ger„te, die oft auch IBM- +kompatibel sind, basieren blicherweise auf den Treibern fr EPSON- +Drucker, weil so einige Schrifttypen (z.B. Proportionalschrift) und +Modifikationen leichter ausgenutzt werden k”nnen. Ein Nachteil liegt +aber darin, daá beim FX-80 und FX-85 noch die alten EPSON-Zeichens„tze +benutzt werden, die nicht die IBM-blichen Grafik- und Sonderzeichen +enthalten. +Falls fr Sie die Benutzung dieser Zeichen vordringlich ist, sollten +Sie Ihren Drucker (nachdem er auf IBM-Emulation konfiguriert wurde) +zusammen mit dem Treiber fr IBM-Grafikdrucker bzw. -Proprinter ver- +wenden. + + +#on("b")#3. Steuerungsm”glichkeiten und Spezialfeatures#off("b")# + +Einige Treiber bieten bestimmte Einstellungsm”glichkeiten (z.B. +DRAFT/NLQ) und/oder Spezialfeatures (z.B. Farbdruck). +Die Einstellungen k”nnen ber +- Steuerprozeduren +- Materialanweisungen bzw. +- direkte Druckeranweisungen +vorgenommen werden. + +#on("u")#Steuerprozeduren#off("u")# +setzen Einstellungen, die fr alle Dokumente (Druckdateien) gelten +sollen. Die Prozeduren mssen in der Druckspooltask (meist: "PRINTER") +aufgerufen werden. #on("b")#Gltig werden die Žnderungen erst, wenn danach in +der Druckspooltask das Kommando 'start' gegeben wird!#off("b")# + +PROC papersize (REAL CONST breite, l„nge) + Dient zur Einstellung der Gr”áe der physikalisch beschreibbaren + Fl„che. + Beispiel: papersize (20.32, 30.48) + (Standardeinstellung fr Endlospapier 8 Zoll breit und + 12 Zoll lang) + +PROC papersize + Informationsprozedur + +PROC top margin (REAL CONST margin) + Falls der Drucker es nicht erlaubt, direkt am Blattanfang zu druk- + ken (zum Beispiel wegen eines Einzelblatteinzugs), muá mit dieser + Prozedur die L„nge des oberen Randes, den der Drucker nicht be- + drucken kann, in cm angegeben werden. + Beispiel: top margin (2.0) + (Teilt dem Druckertreiber mit, daá die ersten 2 cm + nicht bedruckbar sind.) + +REAL PROC top margin + Informationsprozedur + +PROC std speed (TEXT CONST speed) + Parameter: slow, fast + Wahl zwischen Positionierung in Mikroschritten (slow) oder in + Blanks (fast). + Beispiel: std speed ("slow") + +TEXR PROC std speed + Informationsprozedur + +PROC std quality (TEXT CONST quality) + bliche Parameter: draft, nlq + Wahl zwischen Datenverarbeitungs-Qualit„t und Sch”nschrift- + Qualit„t + Beispiel: std quality ("draft") + +TEXT PROC std quality + Informationsprozedur + +PROC std typeface (TEXT CONST typeface) + bliche Parameter: roman, sansserif, courier + Wahl zwischen verschiedenen NLQ-Schriftarten (nur sichtbar im + NLQ-Modus, das heiát 'std typeface' schaltet nicht auf NLQ). + Beispiel: std typeface ("roman") + +TEXT PROC std typeface + Informationsprozedur + +PROC paper feed (TEXT CONST name) + bliche Parameter: tractor, sheet, schacht1, schacht2 + W„hlt Endlospapier oder Einzelblatteinzug und ggf. Schachtnummer. + Beispiel: paper feed ("sheet") + +TEXT PROC paper feed + Informationsprozedur + + +#on("u")#Materialanweisungen #material("...")##off("u")# +mssen in der Druckdatei vor dem ersten druckbaren Zeichen stehen und +setzen Einstellungen fr eine ganze Datei. (Materialanweisungen haben +fr die jeweilige Datei Vorrang vor den durch Steuerprozeduren einge- +stellten Standardwerten. Diese werden durch die Materialanweisung aber +nicht ge„ndert.) + +Beispiel: #material("nlq")# + sorgt bei entsprechendem Treiber dafr, daá das gesamte + Dokument in Sch”nschrift-Qualit„t ausgedruckt wird, egal + wie 'std quality' eingestellt ist. + +#on("b")#Es darf in einer Datei nur eine Materialanweisung stehen!#off("b")# Sollen meh- +rere Einstellungen vorgenommen werden, mssen sie in einer Anweisung +erscheinen. Beispiel: #material("sheet;draft")# + + +#on("u")#direkte Druckeranweisungen #"..."##off("u")# +gelten ab der Position, an der sie in der Datei auftreten. Sie haben +(sofern sie erlaubt sind,) Vorrang vor Standardeinstellungen und +Materialeinstellungen. + +Beispiel: #"draft"# + schaltet (bei entsprechendem Treiber) auf Datenverar- + beitungs-Qualit„t, egal welche Standardeinstellung vorliegt + und welche Materialanweisung gegeben wurde. + +#on("b")#In einer Druckeranweisung darf nur eine Einstellung vorgenommen +werden.#off("b")# Also: #"nlq"##"sansserif"# + + +#on("u")#Wichtig#off("u")# +- Achten Sie bei Materialanweisungen und direkten Druckeranweisungen + besonders auf korrekte Schreibweise! Es werden nur Kleinbuchstaben + bercksichtigt! Also: #"nlq"# und keinesfalls #"NLQ"#!!! +- Direkte Druckeranweisungen werden vom EUMEL-Drucker ignoriert und + nur vom Druckertreiber in eine Kommando-Sequenz umgesetzt. Es kann + daher vorkommen, daá (z.B. bei Spaltendruck) unerwartete Ergebnisse + erscheinen, weil der EUMEL-Drucker dann den Text in einer anderen + Reihenfolge an den Drucker sendet, als er in der Datei steht, die + mit dem direkten Druckerkommando gesetzte Modifikation aber (z.B. + fr beide Spalten) unerwnscht erhalten bleibt. + + +#on("u")#Tabelle#off("u")# +Die Tabelle soll einen Anhaltspunkt dafr geben, wie welche Einstel- +lungen erfolgen k”nnen. + +#type("17")# + Steuerprozeduren Materialanweisungen direkte Druckeranweisungen + +#on("u")# #off("u")# + +Positionierung std speed slow, fast ------ + slow, fast + +Qualit„t std quality z.B. draft, nlq z.B. draft, nlq + z.B. draft, nlq + +Schriftart std typeface z.B. roman, z.B. roman, +(nur bei NLQ) z.B. roman, sansserif, courier sansserif, courier + sansserif, courier + +Einzelblatt- paper feed z.B. schacht1, z.B. schacht1, +einzug z.B. tractor, schacht2 schacht2 + sheet, + schacht1, schacht2 + +Farbdruck ------ ------ z.B. schwarz, + rot, blau, + violett, gelb + orange, grn + + + +#type("nlq10")##on("b")#4. Weitere Hinweise#off("b")# + +#on("u")#Zeichensatz„nderungen gegenber frheren Versionen#off("u")# +In den Fonttabellen frherer Druckertreiber-Versionen wurden oberhalb +des Codes 127 einige internationale Zeichen zur Verfgung gestellt +(und zwar in Anlehnung an den Agfa-Laserdrucker-Zeichensatz). +Bei den Treibern der vorliegenden Version gilt folgendes: +- Wie bisher wird der volle im Benutzerhandbuch festgelegte EUMEL- + Zeichensatz (sofern m”glich) untersttzt. +- Der Code 252 liefert das Paragraphzeichen. +- Alle brigen (vom EUMEL-Zeichensatz nicht definierten) Zeichencodes + oberhalb 127 liefern, sofern m”glich, die entsprechenden Zeichen des + IBM-Grafikzeichensatzes. + + +#on("u")#Hinweis zu Proportionalschriften#off("u")# +Bei Proportionalschriften sollte die Modifikation #on("i")# nicht +benutzt werden, da die kursiven Zeichen andere Proportionalbreiten +haben. Stattdessen sollte auf den schr„gen Typ umgeschaltet werden +(z.B. von "prop10" auf "prop10i"). + + +#on("u")#Hinweis zur Benutzung von Einzelblatteinzgen#off("u")# +Bei der Benutzung von Einzelblatteinzgen mssen folgende Einstel- +lungen vorgenommen werden (vgl. auch Abschnitt 3!): + + Am Drucker: +1. Sie mssen Ihren Drucker auf die Option Einzelblatteinzug konfigu- + rieren (siehe Druckerhandbuch!). + + In der Druckspooltask (meist 'PRINTER'): +2. Falls der Druckertreiber die Steuerprozedur 'paper feed' zur Verf- + gung stellt, mssen Sie mit 'paperfeed ("sheet")' oder (fr + 2-Schacht-Einzge) mit 'paperfeed ("schacht1")' bzw. 'paperfeed + ("schacht2")' den Druckertreiber auf Einzelblatteinzug umschalten. +3. Falls Sie eine andere Papierl„nge als 12 Zoll (=30.48 cm) verwen- + den, mssen Sie die neuen Papiermaáe mit 'papersize' in cm einstel- + len. + Beispiel: papersize (21.0, 29.7) + (fr DIN A4-Bl„tter) +4. Falls der Drucker mit dem Einzelblatteinzug nicht direkt am Blatt- + anfang drucken kann, sondern ein gewisser oberer Rand bleibt, muá + mit 'top margin' die L„nge des nicht bedruckbaren Randes in cm dem + Druckertreiber mitgeteilt werden. + Beispiel: top margin (1.5) + (Wie groá der obere Rand ist, kann festgestellt werden, indem eine + Datei mit #start(0.0,0.0)# ausgedruckt wird.) + + Wurde mit 'top margin' dem Treiber die Gr”áe der nicht bedruckbaren + Fl„che mitgeteilt, so ist darauf zu achten, daá in den Druckdateien + ein gengend groáer y-Wert fr die Startposition eingestellt wird + ('start'-Anweisung). Andernfalls kommt es bei der Ausgabe in der + ersten Zeile zu šberschreibungen. + + +#on("b")#5. Die Žnderungen, die Sie in der Druckspooltask vorgenommen haben + werden erst wirksam, wenn das Spool-Kommando 'start' gegeben wird.#off("b")# diff --git a/system/printer-9nadel/1986/src/CHARED.ELA b/system/printer-9nadel/1986/src/CHARED.ELA new file mode 100644 index 0000000..a54679f --- /dev/null +++ b/system/printer-9nadel/1986/src/CHARED.ELA @@ -0,0 +1,47 @@ +PACKET chared DEFINES chared : + +PROC chared (TEXT VAR text denoter, BOOL CONST dens) : +FILE VAR f := editfile; +TEXT VAR t ; +ROW 30 INT VAR bytes ; +INT VAR i, zeile, max breite := 0 ; +FOR i FROM 1 UPTO 30 REP + bytes(i) := 0 +PER ; +input (f) ; +zeile := 7 ; +WHILE NOT eof (f) REP + getline (f, t) ; + convert line ; + zeile DECR 1 +UNTIL zeile < 0 PER ; +convert to text denoter . + + +convert line : + FOR i FROM 1 UPTO LENGTH t REP + IF (t SUB i) <> " " AND (t SUB i) <> "." + THEN setbit (bytes (i), zeile) ; + max breite := max (max breite, i) + FI + PER . + +convert to text denoter : + text denoter := """""27""K""" ; + IF dens + THEN text denoter CAT text (max breite) + ELSE text denoter CAT text (max breite DIV 2) + FI ; + text denoter CAT """""0""" ; + FOR i FROM 1 UPTO max breite REP + IF dens OR (i AND 1) = 1 + THEN text denoter CAT """" ; + text denoter CAT text (bytes (i)) ; + text denoter CAT """" + FI + PER ; + text denoter CAT """" . + +ENDPROC chared ; + +ENDPACKET chared diff --git a/system/printer-9nadel/1986/src/EPSONFX.ELA b/system/printer-9nadel/1986/src/EPSONFX.ELA new file mode 100644 index 0000000..3852122 --- /dev/null +++ b/system/printer-9nadel/1986/src/EPSONFX.ELA @@ -0,0 +1,575 @@ + FONTTABLE : "fonttab.epson.fx+"; + x unit = 47.24409; + y unit = 85.03937; + on string = ""27"-1", ""27"G", ""27"4", ""; + off string = ""27"-0", ""27"H", ""27"5", ""; + + ""127"", ""; + ""128"", "-"; + ""129"", "-"; + ""130"", "-"; + ""131"", "-"; + ""132"", "-"; + ""133"", "-"; + ""134"", "-"; + ""135"", "-"; + ""136"", "-"; + ""137"", "-"; + ""138"", "-"; + ""139"", "-"; + ""140"", "-"; + ""141"", "-"; + ""142"", "-"; + ""143"", "-"; + ""144"", "-"; + ""145"", "-"; + ""146"", "-"; + ""147"", "-"; + ""148"", "-"; + ""149"", "-"; + ""150"", "-"; + ""151"", "-"; + ""152"", "-"; + ""153"", "-"; + ""154"", "-"; + ""155"", "-"; + ""156"", "-"; + ""157"", "-"; + ""158"", "-"; + ""159"", "-"; + ""160"", "-"; + ""161"", "-"; + ""162"", "-"; + ""163"", "-"; + ""164"", "-"; + ""165"", "-"; + ""166"", "-"; + ""167"", "-"; + ""168"", "-"; + ""169"", "-"; + ""170"", "-"; + ""171"", "-"; + ""172"", "-"; + ""173"", "-"; + ""174"", "-"; + ""175"", "-"; + ""176"", "-"; + ""177"", "-"; + ""178"", "-"; + ""179"", "-"; + ""180"", "-"; + ""181"", "-"; + ""182"", "-"; + ""183"", "-"; + ""184"", "-"; + ""185"", "-"; +(*i`*) ""186"", ""27"%"0""0""4""27"%"1""0""; + ""187"", "-"; + ""188"", "-"; + ""189"", "-"; +(*a`*) ""190"", ""27"%"0""0""0""27"%"1""0""; + ""191"", "-"; + ""192"", "-"; +(*e'*) ""193"", ""27"R"1"{"27"R"0""; +(*e`*) ""194"", ""27"%"0""0""1""27"%"1""0""; + ""195"", "-"; + ""196"", "-"; + ""197"", "-"; +(*o`*) ""198"", ""27"%"0""0""3""27"%"1""0""; + ""199"", "-"; +(*c,*) ""200"", ""27"R"1"\"27"R"0""; + ""201"", "-"; +(*u`*) ""202"", ""27"%"0""0""2""27"%"1""0""; + ""203"", "-"; + ""204"", "-"; +(*grad*) ""205"", ""27"R"1"["27"R"0""; +(*A-grad*) ""206"", ""27"R"4"]"27"R"0""; +(*AE*) ""207"", ""27"R"4"]"27"R"0""; +(*E'*) ""208"", ""27"R"5"@"27"R"0""; +(*N~*) ""209"", ""27"R"7"\"27"R"0""; +(*a-punkt*)""210"", ""27"R"4"}"27"R"0""; +(*ae*) ""211"", ""27"R"4"{"27"R"0""; +(*n~*) ""212"", ""27"R"7"|"27"R"0""; +(*pound*) ""213"", ""27"R"3"#"27"R"0""; + (* Ž *) ""214"", ""27"R"2"["27"R"0""; + (* ™ *) ""215"", ""27"R"2"\"27"R"0""; + (* š *) ""216"", ""27"R"2"]"27"R"0""; + (* „ *) ""217"", ""27"R"2"{"27"R"0""; + (* ” *) ""218"", ""27"R"2"|"27"R"0""; + (* *) ""219"", ""27"R"2"}"27"R"0""; + (* k *) ""220"", "k"; + (* - *) ""221"", "-"; + (* # *) ""222"", "#"; + (* *) ""223"", " "; + ""224"", "-"; + ""225"", "-"; + ""226"", "-"; + ""227"", "-"; + ""228"", "-"; + ""229"", "-"; + ""230"", "-"; + ""231"", "-"; + ""232"", "-"; + ""233"", "-"; + ""234"", "-"; + ""235"", "-"; + ""236"", "-"; + ""237"", "-"; + ""238"", "-"; + ""239"", "-"; + ""240"", "-"; + ""241"", "-"; + ""242"", "-"; + ""243"", "-"; + ""244"", "-"; + ""245"", "-"; + ""246"", "-"; + ""247"", "-"; + ""248"", "-"; + ""249"", "-"; + ""250"", "-"; + (* á *) ""251"", ""27"R"2"~"27"R"0""; +(*paragr.*)""252"", ""27"R"2"@"27"R"0""; + ""253"", "-"; + ""254"", "-"; + ""255"", "-"; + + + FONT : "17", "micron", "elanlist"; + indentation pitch = 7; + font height = 36; + next smaller font = "17.klein"; + font string = ""27"!"4""27"5"27"T"; + + ""127"", 0; + + FONT : "17.klein", "micron.klein"; + indentation pitch = 7; + font height = 19; + font string = ""27"!"4""27"5"27"S"1""; + + ""127"", 0; + + FONT : "10", "pica"; + indentation pitch = 12; + font height = 36; + next smaller font = "10.klein"; + font string = ""27"!"0""27"5"27"T"; + + ""127"", 0; + + FONT : "10.klein", "pica.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"!"0""27"5"27"S"1""; + + ""127"", 0; + + FONT : "10b"; + indentation pitch = 12; + font height = 36; + next smaller font = "10b.klein"; + font string = ""27"!"8""27"5"27"T"; + + ""127"", 0; + + FONT : "10b.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"!"8""27"5"27"S"1""; + + ""127"", 0; + + FONT : "20"; + indentation pitch = 6; + font height = 36; + next smaller font = "10.klein"; + font string = ""27"!"5""27"5"27"T"; + + ""127"", 0; + + FONT : "20.klein"; + indentation pitch = 6; + font height = 19; + font string = ""27"!"5""27"5"27"S"1""; + + ""127"", 0; + + FONT : "12", "elite"; + indentation pitch = 10; + font height = 36; + next smaller font = "12.klein"; + font string = ""27"!"1""27"5"27"T"; + + ""127"", 0; + + FONT : "12.klein", "elite.klein"; + indentation pitch = 10; + font height = 19; + font string = ""27"!"1""27"5"27"S"1""; + + ""127"", 0; + + FONT : "8.5", "8"; + indentation pitch = 14; + font height = 36; + next smaller font = "8.5.klein"; + font string = ""27"!$"27"5"27"T"; + + ""127"", 0; + + FONT : "8.5.klein", "8.klein"; + indentation pitch = 14; + font height = 19; + font string = ""27"!$"27"5"27"S"1""; + + ""127"", 0; + + FONT : "5"; + indentation pitch = 24; + font height = 36; + next smaller font = "5.klein"; + font string = ""27"! "27"5"27"T"; + + ""127"", 0; + + FONT : "5.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"! "27"5"27"S"1""; + + ""127"", 0; + + FONT : "5b"; + indentation pitch = 24; + font height = 36; + next smaller font = "5b.klein"; + font string = ""27"!("27"5"27"T"; + + ""127"", 0; + + FONT : "5b.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"!("27"5"27"S"1""; + + ""127"", 0; + + FONT : "10-2"; + indentation pitch = 12; + font height = 36; + next smaller font = "10-2.klein"; + font string = ""27"!%"27"5"27"T"; + + ""127"", 0; + + FONT : "10-2.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"!%"27"5"27"S"1""; + + ""127"", 0; + + FONT : "6"; + indentation pitch = 20; + font height = 36; + next smaller font = "6.klein"; + font string = ""27"!!"27"5"27"T"; + + ""127"", 0; + + FONT : "6.klein"; + indentation pitch = 20; + font height = 19; + font string = ""27"!!"27"5"27"S"1""; + + ""127"", 0; + + FONT : "prop10"; + indentation pitch = 12; + font height = 36; + next smaller font = "prop10.klein"; + font string = ""27"!"0""27"5"27"T"27"p1"; + + (* ! *) ""033"", 5; (* " *) ""034"", 8; + (* ' *) ""039"", 5; (* ( *) ""040"", 6; + (* ) *) ""041"", 6; (* , *) ""044"", 7; + (* . *) ""046"", 6; (* / *) ""047"", 10; + (* 1 *) ""049"", 8; (* : *) ""058"", 6; + (* ; *) ""059"", 6; (* < *) ""060"", 10; + (* > *) ""062"", 10; (* I *) ""073"", 8; + (* J *) ""074"", 11; (* X *) ""088"", 10; + (* Z *) ""090"", 10; (* [ *) ""091"", 8; + (* \ *) ""092"", 10; (* ] *) ""093"", 8; + (* ` *) ""096"", 5; (* b *) ""098"", 11; + (* c *) ""099"", 11; (* d *) ""100"", 11; + (* f *) ""102"", 10; (* g *) ""103"", 11; + (* h *) ""104"", 11; (* i *) ""105"", 8; + (* j *) ""106"", 9; (* k *) ""107"", 10; + (* l *) ""108"", 8; (* n *) ""110"", 11; + (* p *) ""112"", 11; (* q *) ""113"", 11; + (* r *) ""114"", 11; (* t *) ""116"", 11; + (* x *) ""120"", 10; (* z *) ""122"", 10; + ""123"", 9; (* | *) ""124"", 5; + ""125"", 9; ""127"", 0; + ""186"", 6; ""198"", 10; + ""200"", 11; ""202"", 11; + ""205"", 8; ""212"", 11; + (* ” *) ""218"", 10; (* *) ""219"", 11; + (* k *) ""220"", 10; (* á *) ""251"", 11; + ""252"", 10; + + FONT : "prop10.klein"; + indentation pitch = 12; + font height = 19; + next smaller font = "prop10"; + font string = ""27"!"0""27"5"27"S1"27"p1"; + + (* ! *) ""033"", 5; (* " *) ""034"", 8; + (* ' *) ""039"", 5; (* ( *) ""040"", 6; + (* ) *) ""041"", 6; (* , *) ""044"", 7; + (* . *) ""046"", 6; (* / *) ""047"", 10; + (* 1 *) ""049"", 8; (* : *) ""058"", 6; + (* ; *) ""059"", 6; (* < *) ""060"", 10; + (* > *) ""062"", 10; (* I *) ""073"", 8; + (* J *) ""074"", 11; (* X *) ""088"", 10; + (* Z *) ""090"", 10; (* [ *) ""091"", 8; + (* \ *) ""092"", 10; (* ] *) ""093"", 8; + (* ` *) ""096"", 5; (* b *) ""098"", 11; + (* c *) ""099"", 11; (* d *) ""100"", 11; + (* f *) ""102"", 10; (* g *) ""103"", 11; + (* h *) ""104"", 11; (* i *) ""105"", 8; + (* j *) ""106"", 9; (* k *) ""107"", 10; + (* l *) ""108"", 8; (* n *) ""110"", 11; + (* p *) ""112"", 11; (* q *) ""113"", 11; + (* r *) ""114"", 11; (* t *) ""116"", 11; + (* x *) ""120"", 10; (* z *) ""122"", 10; + ""123"", 9; (* | *) ""124"", 5; + ""125"", 9; ""127"", 0; + ""186"", 6; ""198"", 10; + ""200"", 11; ""202"", 11; + ""205"", 8; ""212"", 11; + (* ” *) ""218"", 10; (* *) ""219"", 11; + (* k *) ""220"", 10; (* á *) ""251"", 11; + ""252"", 10; + + FONT : "prop10i"; + indentation pitch = 12; + font height = 36; + next smaller font = "prop10i.klein"; + font string = ""27"!"0""27"4"27"T"27"p1"; + + (* ! *) ""033"", 10; (* " *) ""034"", 10; + (* $ *) ""036"", 11; (* ' *) ""039"", 5; + (* ( *) ""040"", 8; (* ) *) ""041"", 8; + (* , *) ""044"", 8; (* . *) ""046"", 7; + (* / *) ""047"", 10; (* 1 *) ""049"", 9; + (* 6 *) ""054"", 11; (* 9 *) ""057"", 11; + (* : *) ""058"", 8; (* ; *) ""059"", 9; + (* < *) ""060"", 10; (* = *) ""061"", 11; + (* > *) ""062"", 9; (* ? *) ""063"", 11; + (* I *) ""073"", 10; (* L *) ""076"", 10; + (* V *) ""086"", 11; (* [ *) ""091"", 11; + (* \ *) ""092"", 7; (* ] *) ""093"", 11; + (* ^ *) ""094"", 10; (* ` *) ""096"", 5; + (* a *) ""097"", 11; (* b *) ""098"", 11; + (* c *) ""099"", 11; (* e *) ""101"", 11; + (* g *) ""103"", 11; (* h *) ""104"", 11; + (* i *) ""105"", 9; (* j *) ""106"", 10; + (* k *) ""107"", 11; (* l *) ""108"", 9; + (* m *) ""109"", 11; (* n *) ""110"", 10; + (* o *) ""111"", 11; (* p *) ""112"", 11; + (* q *) ""113"", 11; (* r *) ""114"", 10; + (* s *) ""115"", 11; (* t *) ""116"", 10; + (* u *) ""117"", 11; (* v *) ""118"", 10; + (* y *) ""121"", 11; ""123"", 10; + (* | *) ""124"", 9; ""125"", 10; + ""127"", 0; ""186"", 8; + ""190"", 11; ""193"", 11; + ""194"", 11; ""198"", 11; + ""200"", 11; ""202"", 11; + ""205"", 8; ""210"", 11; + (* „ *) ""217"", 11; (* ” *) ""218"", 11; + (* k *) ""220"", 11; (* á *) ""251"", 11; + + FONT : "prop10i.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"!"0""27"4"27"S1"27"p1"; + + (* ! *) ""033"", 10; (* " *) ""034"", 10; + (* $ *) ""036"", 11; (* ' *) ""039"", 5; + (* ( *) ""040"", 8; (* ) *) ""041"", 8; + (* , *) ""044"", 8; (* . *) ""046"", 7; + (* / *) ""047"", 10; (* 1 *) ""049"", 9; + (* 6 *) ""054"", 11; (* 9 *) ""057"", 11; + (* : *) ""058"", 8; (* ; *) ""059"", 9; + (* < *) ""060"", 10; (* = *) ""061"", 11; + (* > *) ""062"", 9; (* ? *) ""063"", 11; + (* I *) ""073"", 10; (* L *) ""076"", 10; + (* V *) ""086"", 11; (* [ *) ""091"", 11; + (* \ *) ""092"", 7; (* ] *) ""093"", 11; + (* ^ *) ""094"", 10; (* ` *) ""096"", 5; + (* a *) ""097"", 11; (* b *) ""098"", 11; + (* c *) ""099"", 11; (* e *) ""101"", 11; + (* g *) ""103"", 11; (* h *) ""104"", 11; + (* i *) ""105"", 9; (* j *) ""106"", 10; + (* k *) ""107"", 11; (* l *) ""108"", 9; + (* m *) ""109"", 11; (* n *) ""110"", 10; + (* o *) ""111"", 11; (* p *) ""112"", 11; + (* q *) ""113"", 11; (* r *) ""114"", 10; + (* s *) ""115"", 11; (* t *) ""116"", 10; + (* u *) ""117"", 11; (* v *) ""118"", 10; + (* y *) ""121"", 11; ""123"", 10; + (* | *) ""124"", 9; ""125"", 10; + ""127"", 0; ""186"", 8; + ""190"", 11; ""193"", 11; + ""194"", 11; ""198"", 11; + ""200"", 11; ""202"", 11; + ""205"", 8; ""210"", 11; + (* „ *) ""217"", 11; (* ” *) ""218"", 11; + (* k *) ""220"", 11; (* á *) ""251"", 11; + + FONT : "prop5"; + indentation pitch = 24; + font height = 36; + next smaller font = "prop5.klein"; + font string = ""27"! "27"5"27"T"27"p1"; + + (* ! *) ""033"", 10; (* " *) ""034"", 16; + (* ' *) ""039"", 10; (* ( *) ""040"", 12; + (* ) *) ""041"", 12; (* , *) ""044"", 14; + (* . *) ""046"", 12; (* / *) ""047"", 20; + (* 1 *) ""049"", 16; (* : *) ""058"", 12; + (* ; *) ""059"", 12; (* < *) ""060"", 20; + (* > *) ""062"", 20; (* I *) ""073"", 16; + (* J *) ""074"", 22; (* X *) ""088"", 20; + (* Z *) ""090"", 20; (* [ *) ""091"", 16; + (* \ *) ""092"", 20; (* ] *) ""093"", 16; + (* ` *) ""096"", 10; (* b *) ""098"", 22; + (* c *) ""099"", 22; (* d *) ""100"", 22; + (* f *) ""102"", 20; (* g *) ""103"", 22; + (* h *) ""104"", 22; (* i *) ""105"", 16; + (* j *) ""106"", 18; (* k *) ""107"", 20; + (* l *) ""108"", 16; (* n *) ""110"", 22; + (* p *) ""112"", 22; (* q *) ""113"", 22; + (* r *) ""114"", 22; (* t *) ""116"", 22; + (* x *) ""120"", 20; (* z *) ""122"", 20; + ""123"", 18; (* | *) ""124"", 10; + ""125"", 18; ""127"", 0; + ""186"", 12; ""198"", 20; + ""200"", 22; ""202"", 22; + ""205"", 16; ""212"", 22; + (* ” *) ""218"", 20; (* *) ""219"", 22; + (* k *) ""220"", 20; (* á *) ""251"", 22; + ""252"", 20; + + FONT : "prop5.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"! "27"5"27"S1"27"p1"; + + (* ! *) ""033"", 10; (* " *) ""034"", 16; + (* ' *) ""039"", 10; (* ( *) ""040"", 12; + (* ) *) ""041"", 12; (* , *) ""044"", 14; + (* . *) ""046"", 12; (* / *) ""047"", 20; + (* 1 *) ""049"", 16; (* : *) ""058"", 12; + (* ; *) ""059"", 12; (* < *) ""060"", 20; + (* > *) ""062"", 20; (* I *) ""073"", 16; + (* J *) ""074"", 22; (* X *) ""088"", 20; + (* Z *) ""090"", 20; (* [ *) ""091"", 16; + (* \ *) ""092"", 20; (* ] *) ""093"", 16; + (* ` *) ""096"", 10; (* b *) ""098"", 22; + (* c *) ""099"", 22; (* d *) ""100"", 22; + (* f *) ""102"", 20; (* g *) ""103"", 22; + (* h *) ""104"", 22; (* i *) ""105"", 16; + (* j *) ""106"", 18; (* k *) ""107"", 20; + (* l *) ""108"", 16; (* n *) ""110"", 22; + (* p *) ""112"", 22; (* q *) ""113"", 22; + (* r *) ""114"", 22; (* t *) ""116"", 22; + (* x *) ""120"", 20; (* z *) ""122"", 20; + ""123"", 18; (* | *) ""124"", 10; + ""125"", 18; ""127"", 0; + ""186"", 12; ""198"", 20; + ""200"", 22; ""202"", 22; + ""205"", 16; ""212"", 22; + (* ” *) ""218"", 20; (* *) ""219"", 22; + (* k *) ""220"", 20; (* á *) ""251"", 22; + ""252"", 20; + + FONT : "prop5i"; + indentation pitch = 24; + font height = 36; + next smaller font = "prop5i.klein"; + font string = ""27"! "27"4"27"T"27"p1"; + + (* ! *) ""033"", 20; (* " *) ""034"", 20; + (* $ *) ""036"", 22; (* ' *) ""039"", 10; + (* ( *) ""040"", 16; (* ) *) ""041"", 16; + (* , *) ""044"", 16; (* . *) ""046"", 14; + (* / *) ""047"", 20; (* 1 *) ""049"", 18; + (* 6 *) ""054"", 22; (* 9 *) ""057"", 22; + (* : *) ""058"", 16; (* ; *) ""059"", 18; + (* < *) ""060"", 20; (* = *) ""061"", 22; + (* > *) ""062"", 18; (* ? *) ""063"", 22; + (* I *) ""073"", 20; (* L *) ""076"", 20; + (* V *) ""086"", 22; (* [ *) ""091"", 22; + (* \ *) ""092"", 14; (* ] *) ""093"", 22; + (* ^ *) ""094"", 20; (* ` *) ""096"", 10; + (* a *) ""097"", 22; (* b *) ""098"", 22; + (* c *) ""099"", 22; (* e *) ""101"", 22; + (* g *) ""103"", 22; (* h *) ""104"", 22; + (* i *) ""105"", 18; (* j *) ""106"", 20; + (* k *) ""107"", 22; (* l *) ""108"", 18; + (* m *) ""109"", 22; (* n *) ""110"", 20; + (* o *) ""111"", 22; (* p *) ""112"", 22; + (* q *) ""113"", 22; (* r *) ""114"", 20; + (* s *) ""115"", 22; (* t *) ""116"", 20; + (* u *) ""117"", 22; (* v *) ""118"", 20; + (* y *) ""121"", 22; ""123"", 20; + (* | *) ""124"", 18; ""125"", 20; + ""127"", 0; ""186"", 16; + ""190"", 22; ""193"", 22; + ""194"", 22; ""198"", 22; + ""200"", 22; ""202"", 22; + ""205"", 16; ""210"", 22; + (* „ *) ""217"", 22; (* ” *) ""218"", 22; + (* k *) ""220"", 22; (* á *) ""251"", 22; + + FONT : "prop5i.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"! "27"4"27"S1"27"p1"; + + (* ! *) ""033"", 20; (* " *) ""034"", 20; + (* $ *) ""036"", 22; (* ' *) ""039"", 10; + (* ( *) ""040"", 16; (* ) *) ""041"", 16; + (* , *) ""044"", 16; (* . *) ""046"", 14; + (* / *) ""047"", 20; (* 1 *) ""049"", 18; + (* 6 *) ""054"", 22; (* 9 *) ""057"", 22; + (* : *) ""058"", 16; (* ; *) ""059"", 18; + (* < *) ""060"", 20; (* = *) ""061"", 22; + (* > *) ""062"", 18; (* ? *) ""063"", 22; + (* I *) ""073"", 20; (* L *) ""076"", 20; + (* V *) ""086"", 22; (* [ *) ""091"", 22; + (* \ *) ""092"", 14; (* ] *) ""093"", 22; + (* ^ *) ""094"", 20; (* ` *) ""096"", 10; + (* a *) ""097"", 22; (* b *) ""098"", 22; + (* c *) ""099"", 22; (* e *) ""101"", 22; + (* g *) ""103"", 22; (* h *) ""104"", 22; + (* i *) ""105"", 18; (* j *) ""106"", 20; + (* k *) ""107"", 22; (* l *) ""108"", 18; + (* m *) ""109"", 22; (* n *) ""110"", 20; + (* o *) ""111"", 22; (* p *) ""112"", 22; + (* q *) ""113"", 22; (* r *) ""114"", 20; + (* s *) ""115"", 22; (* t *) ""116"", 20; + (* u *) ""117"", 22; (* v *) ""118"", 20; + (* y *) ""121"", 22; ""123"", 20; + (* | *) ""124"", 18; ""125"", 20; + ""127"", 0; ""186"", 16; + ""190"", 22; ""193"", 22; + ""194"", 22; ""198"", 22; + ""200"", 22; ""202"", 22; + ""205"", 16; ""210"", 22; + (* „ *) ""217"", 22; (* ” *) ""218"", 22; + (* k *) ""220"", 22; (* á *) ""251"", 22; diff --git a/system/printer-9nadel/1986/src/EPSONRX.ELA b/system/printer-9nadel/1986/src/EPSONRX.ELA new file mode 100644 index 0000000..118cee8 --- /dev/null +++ b/system/printer-9nadel/1986/src/EPSONRX.ELA @@ -0,0 +1,171 @@ + FONTTABLE : "fonttab.epson.rx"; + x unit = 47.24409; + y unit = 85.03937; + on string = ""27"-1", ""27"G", ""27"4", ""; + off string = ""27"-0", ""27"H", ""27"5", ""; + + ""127"", ""; +(*Herz*) ""153"", ""146""; +(*Karo*) ""154"", ""147""; +(*Baum*) ""155"", ""148""; +(*Pik *) ""156"", ""145""; +(*Note*) ""157"", ""149""; +(*Telefon*)""158"", ""150""; +(*Flugzg.*)""159"", ""151""; +(*Auto*) ""160"", ""152""; +(*Glas*) ""161"", ""153""; +(*Mann*) ""162"", ""154""; +(*i`*) ""186"", ""27"R"6"~"27"R"0""; +(*a`*) ""190"", ""27"R"6"{"27"R"0""; +(*e'*) ""193"", ""27"R"6"]"27"R"0""; +(*e`*) ""194"", ""27"R"6"}"27"R"0""; +(*o`*) ""198"", ""27"R"6"|"27"R"0""; +(*c,*) ""200"", ""27"R"1"\"27"R"0""; +(*u`*) ""202"", ""27"R"6"`"27"R"0""; +(*grad*) ""205"", ""27"R"1"["27"R"0""; +(*A-grad*) ""206"", ""27"R"4"]"27"R"0""; +(*AE*) ""207"", ""27"R"4"["27"R"0""; +(*E'*) ""208"", ""27"R"5"@"27"R"0""; +(*N~*) ""209"", ""27"R"7"\"27"R"0""; +(*a-punkt*)""210"", ""27"R"4"}"27"R"0""; +(*ae*) ""211"", ""27"R"4"{"27"R"0""; +(*n~*) ""212"", ""27"R"7"|"27"R"0""; +(*pound*) ""213"", ""27"R"3"#"27"R"0""; + (* Ž *) ""214"", ""27"R"2"["27"R"0""; + (* ™ *) ""215"", ""27"R"2"\"27"R"0""; + (* š *) ""216"", ""27"R"2"]"27"R"0""; + (* „ *) ""217"", ""27"R"2"{"27"R"0""; + (* ” *) ""218"", ""27"R"2"|"27"R"0""; + (* *) ""219"", ""27"R"2"}"27"R"0""; + (* k *) ""220"", "k"; + (* - *) ""221"", "-"; + (* # *) ""222"", "#"; + (* *) ""223"", " "; +(* +/- *) ""224"", ""159""; +(*uparrow*)""236"", ""155""; +(*downarr*)""238"", ""156""; +(*x-kreuz*)""245"", ""157""; +(*geteilt*)""246"", ""158""; + (* á *) ""251"", ""27"R"2"~"27"R"0""; +(*paragr.*)""252"", ""27"R"2"@"27"R"0""; + + + FONT : "17", "micron"; + indentation pitch = 7; + font height = 36; + next smaller font = "17.klein"; + font string = ""27"P"15""27"W"0""27"F"27"T"; + + ""127"", 0; + + FONT : "17.klein", "micron.klein", "elanlist"; + indentation pitch = 7; + font height = 19; + font string = ""27"P"15""27"W"0""27"F"27"S"1""; + + ""127"", 0; + + FONT : "8"; + indentation pitch = 14; + font height = 36; + next smaller font = "8.klein"; + font string = ""27"P"15""27"W"1""27"F"27"T"; + + ""127"", 0; + + FONT : "8.klein"; + indentation pitch = 14; + font height = 19; + font string = ""27"P"15""27"W"1""27"F"27"S"1""; + + ""127"", 0; + + FONT : "10", "pica"; + indentation pitch = 12; + font height = 36; + next smaller font = "10.klein"; + font string = ""27"P"18""27"W"0""27"F"27"T"; + + ""127"", 0; + + FONT : "10.klein", "pica.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"P"18""27"W"0""27"F"27"S"1""; + + ""127"", 0; + + FONT : "10b"; + indentation pitch = 12; + font height = 36; + next smaller font = "10b.klein"; + font string = ""27"P"18""27"W"0""27"E"27"T"; + + ""127"", 0; + + FONT : "10b.klein"; + indentation pitch = 12; + font height = 19; + font string = ""27"P"18""27"W"0""27"E"27"S"1""; + + ""127"", 0; + + FONT : "12", "elite"; + indentation pitch = 10; + font height = 36; + next smaller font = "12.klein"; + font string = ""18""27"M"27"W"0""27"F"27"T"; + + ""127"", 0; + + FONT : "12.klein", "elite.klein"; + indentation pitch = 10; + font height = 19; + font string = ""18""27"M"27"W"0""27"F"27"S"1""; + + ""127"", 0; + + FONT : "5"; + indentation pitch = 24; + font height = 36; + next smaller font = "5.klein"; + font string = ""27"P"18""27"W"1""27"F"27"T"; + + ""127"", 0; + + FONT : "5.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"P"18""27"W"1""27"F"27"S"1""; + + ""127"", 0; + + FONT : "5b"; + indentation pitch = 24; + font height = 36; + next smaller font = "5b.klein"; + font string = ""27"P"18""27"W"1""27"E"27"T"; + + ""127"", 0; + + FONT : "5b.klein"; + indentation pitch = 24; + font height = 19; + font string = ""27"P"18""27"W"1""27"E"27"S"1""; + + ""127"", 0; + + FONT : "6"; + indentation pitch = 20; + font height = 36; + next smaller font = "6.klein"; + font string = ""18""27"M"27"W"1""27"F"27"T"; + + ""127"", 0; + + FONT : "6.klein"; + indentation pitch = 20; + font height = 19; + font string = ""18""27"M"27"W"1""27"F"27"S"1""; + + ""127"", 0; diff --git a/system/printer-9nadel/1986/src/FONTTAB.10A b/system/printer-9nadel/1986/src/FONTTAB.10A new file mode 100644 index 0000000..8a8cd59 Binary files /dev/null and b/system/printer-9nadel/1986/src/FONTTAB.10A differ diff --git a/system/printer-9nadel/1986/src/FONTTAB.12A b/system/printer-9nadel/1986/src/FONTTAB.12A new file mode 100644 index 0000000..ed08d88 Binary files /dev/null and b/system/printer-9nadel/1986/src/FONTTAB.12A differ diff --git a/system/printer-9nadel/1986/src/FONTTAB.S10 b/system/printer-9nadel/1986/src/FONTTAB.S10 new file mode 100644 index 0000000..90769b0 Binary files /dev/null and b/system/printer-9nadel/1986/src/FONTTAB.S10 differ diff --git a/system/printer-9nadel/1986/src/FONTTAB.S12 b/system/printer-9nadel/1986/src/FONTTAB.S12 new file mode 100644 index 0000000..e367bcc Binary files /dev/null and b/system/printer-9nadel/1986/src/FONTTAB.S12 differ diff --git a/system/printer-9nadel/1986/src/beschreibungen9 b/system/printer-9nadel/1986/src/beschreibungen9 new file mode 100644 index 0000000..692842e --- /dev/null +++ b/system/printer-9nadel/1986/src/beschreibungen9 @@ -0,0 +1,96 @@ + +(*************************************************************************) +(* Stand : 01.10.88 *) +(* Beschreibungen-Datei fr 9-Nadel-Drucker Version : 0.9 *) +(* Autoren : mov/hjh *) +(*************************************************************************) + +$fx85$ +head;hfx85;decl;speed;openh;opendoch;initspeed;opendocfx85;openpge;betwoc; +clpge;betwce;cmd;crs;moh;mofx85;ymodr;onoff;tyfx85;end + +$fx800$ +head;hfx800;decl;quality;typeface;openh;opendoch;opendocfx800;openpge;betwoc; +clpge;betwce;cmdfx800;crs;moh;mofx800;ymodr;onoff;tyfx800;end + +$mx$ +head;hmx;decl;speed;openh;opendoch;initspeed;opendocmx;openpge;betwoc;clpge; +betwce;cmd;crs;moh;modrmx;onoff;tymx;end + +$lx800$ +head;hlx800;decl;speed;quality;typeface;openh;opendoch;initspeed; +opendocfx800;openpge;betwoc;clpge;betwce;cmdfx800;crs;moh;mofx85;ymodr;onoff; +tyfx800;end + +$ibmgp$ +head;hgp;decl;speed;openh;opendoch;initspeed;opendocgp;openpge;betwoc; +clpge;betwce;cmd;crs;moh;mogp;ymodr;onoff;tyfx85;end + +$ibmpp$ +head;hpp;decl;speed;quality;openh;opendoch;initspeed;opendocpp;openpge; +betwoc;clpge;betwce;cmdpp;crs;moh;mofx85;ymodr;onoffpp;tyfx85;end + +$okiml182i$ +head;hml182i;decl;speed;quality;openh;opendoch;initspeed;opendocml182i; +opendocgp;openpge;betwoc;clpge;betwce;cmdml182i;crs;moh;mogp;ymodr;onoff; +tyohnesmall;end + +$okiml192el$ +head;hml192el;decl;speed;feed;openh;opendoch;initspeed;opendocml192el; +openpgemlsf;betwoc;clmlsf;betwce;cmd;crs;moh;moml192el;ymodr;onoff;tyml192el; +end + +$okiml292el$ +head;hml292el;decl;quality;typeface292;feed;openh;opendoch;opendocml292el; +openpgemlsf;betwoc;clmlsf;betwce;cmdml292el;crs;moh;mofx800;ymodr;onoff; +tyml292el;end + +$okiml294i$ +head;hml294i;decl;speed;quality;feed;openh;opendoch;initspeed;opendocml294i; +openpgemlsf;betwoc;clmlsf;betwce;cmdml294i;crs;moh;mofx85;ymodr;ontyml294i;end + +$okiml320$ +head;hml320;decl;speed;openh;opendoch;initspeed;opendocml320; +openpge;betwoc;clpge;betwce;cmd;crs;moh;moml192el;ymodr;onoff;tyml192el; +end + +$starlc10$ +head;hlc10;decl;quality;typefacelc10;openh;opendoch;opendoclc10;openpge; +betwoc;clpge;betwce;cmdlc10;crs;moh;mofx800;ymodr;onoff;tyfx800;end + +$dmp4000$ +head;hdmp4000;decl;speed;openh;opendoch;initspeed;opendocdmp4000;openpge; +betwoc;clpge;betwce;cmd;crs;moh;mofx85;ymodr;onoff;tyfx85;end + +$starnx15$ +head;hnx15;decl;speed;openh;opendoch;initspeed;opendocnx15;openpge;betwoc; +clpge;betwce;cmd;crs;moh;mofx85;ymodr;onoff;tyfx85;end + +$mt230$ +head;hmt230;decl;speed;feedschacht;openh;opendoch;initspeed;opendocmt; +openpgemtsf;betwoc;clmtsf;betwce;cmdmt230;crs;moh;mofx85;ymodr;onoff; +tyfx85;end + +$mt340$ +head;hmt340;decl;speed;feedschacht;openh;opendoch;initspeed;opendocmt; +openpgemtsf;betwoc;clmtsf;betwce;cmdmt230;crs;moh;moml192el;ymodr;onoff; +tyml192el;end + +$citi120d$ +head;h120d;decl;openh;opendoch;opendoc120d;openpge;betwoc; +clpge;betwce;cmd;crs;moh;mofx800;ymodr;onoff;tyfx85;end + +$citohc310cxp$ +head;hc310;decl;speed;feedschacht;openh;opendoch;initspeed;opendocc310; +openpgec310sf;betwoc;clc310sf;betwce;cmdc310;crs;moh;mofx85;ymodr;onoff; +tyfx85;end + +$citohci3500$ +head;hci3500;decl;speed;openh;opendoch;initspeed;opendocgp;openpge;betwoc; +clpge;betwce;cmd;crs;moh;mogp;ymodr;onoff;tyfx85;end + +$fujdx2100$ +head;hdx2100;decl;speed;feed;openh;opendoch;initspeed;opendocdx2100; +openpge;betwoc;clpge;betwce;cmddx2100;crs;moh;moml192el;ymodr;onoff;tyml192el; +end + diff --git a/system/printer-9nadel/1986/src/fonttab.1 b/system/printer-9nadel/1986/src/fonttab.1 new file mode 100644 index 0000000..c008441 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.1 differ diff --git a/system/printer-9nadel/1986/src/fonttab.10 b/system/printer-9nadel/1986/src/fonttab.10 new file mode 100644 index 0000000..cf79bc7 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.10 differ diff --git a/system/printer-9nadel/1986/src/fonttab.20 b/system/printer-9nadel/1986/src/fonttab.20 new file mode 100644 index 0000000..774029f Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.20 differ diff --git a/system/printer-9nadel/1986/src/fonttab.20.lc b/system/printer-9nadel/1986/src/fonttab.20.lc new file mode 100644 index 0000000..030f9fa Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.20.lc differ diff --git a/system/printer-9nadel/1986/src/fonttab.20.lx b/system/printer-9nadel/1986/src/fonttab.20.lx new file mode 100644 index 0000000..423cda1 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.20.lx differ diff --git a/system/printer-9nadel/1986/src/fonttab.7 b/system/printer-9nadel/1986/src/fonttab.7 new file mode 100644 index 0000000..c18f223 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.7 differ diff --git a/system/printer-9nadel/1986/src/fonttab.7.cxp b/system/printer-9nadel/1986/src/fonttab.7.cxp new file mode 100644 index 0000000..a2b833a Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.7.cxp differ diff --git a/system/printer-9nadel/1986/src/fonttab.7.fuj b/system/printer-9nadel/1986/src/fonttab.7.fuj new file mode 100644 index 0000000..1244175 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.7.fuj differ diff --git a/system/printer-9nadel/1986/src/fonttab.7.mt b/system/printer-9nadel/1986/src/fonttab.7.mt new file mode 100644 index 0000000..a7eea47 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.7.mt differ diff --git a/system/printer-9nadel/1986/src/fonttab.epson.fx b/system/printer-9nadel/1986/src/fonttab.epson.fx new file mode 100644 index 0000000..ad68a4d Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.epson.fx differ diff --git a/system/printer-9nadel/1986/src/fonttab.epson.lq b/system/printer-9nadel/1986/src/fonttab.epson.lq new file mode 100644 index 0000000..3e7dc5d Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.epson.lq differ diff --git a/system/printer-9nadel/1986/src/fonttab.epson.mx b/system/printer-9nadel/1986/src/fonttab.epson.mx new file mode 100644 index 0000000..b813fe9 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.epson.mx differ diff --git a/system/printer-9nadel/1986/src/fonttab.epson.rx b/system/printer-9nadel/1986/src/fonttab.epson.rx new file mode 100644 index 0000000..7042102 Binary files /dev/null and b/system/printer-9nadel/1986/src/fonttab.epson.rx differ diff --git a/system/printer-9nadel/1986/src/module9 b/system/printer-9nadel/1986/src/module9 new file mode 100644 index 0000000..e25cea6 --- /dev/null +++ b/system/printer-9nadel/1986/src/module9 @@ -0,0 +1,1098 @@ + +(*************************************************************************) +(* Stand : 01.10.88 *) +(* Module-Datei fr 9-Nadel-Drucker Version : 0.9 *) +(* Autoren : mov/hjh *) +(*************************************************************************) + +$head$ +PACKET printer driver + + DEFINES printer, + open, + close, + execute, + paper size, + top margin, + +$hfx85$ std speed: +(* Treiber fr EPSON FX85/105, automatisch generiert *) + +$hfx800$ std quality, + std typeface: +(* Treiber fr EPSON FX800/1000, automatisch generiert *) +BOOL VAR was tall font; + +$hmx$ std speed: +(* Treiber fr EPSON MX80/100, Typ III *) +(* Treiber automatisch generiert *) +BOOL VAR is condensed, is small; + +$hlx800$ std speed, + std quality, + std typeface: +(* Treiber fr EPSON LX800/1000, automatisch generiert *) +BOOL VAR was tall font; + +$hgp$ std speed: +(* Treiber fr IBM-Grafikdrucker *) +(* Treiber automatisch generiert *) + +$hpp$ std speed, + std quality: +(* Treiber fr IBM-Proprinter *) +(* Treiber automatisch generiert *) + +$hml182i$ std speed, + std quality: +(* Treiber fr OKI ML182/183 IBM-kompatibel *) +(* Treiber automatisch generiert *) + +$hml192el$ paper feed, + std speed: +(* Treiber fr OKI ML192/193 Elite *) +(* Treiber automatisch generiert *) +BOOL VAR prop font; + +$hml292el$ std quality, + std typeface, + paper feed: +(* Treiber fr OKI ML292/293 Elite *) +(* Treiber automatisch generiert *) +BOOL VAR was tall font; + +$hml294i$ std speed, + paper feed, + std quality: +(* Treiber fr OKI ML294 IBM-kompatibel *) +(* Treiber automatisch generiert *) + +$hml320$ std speed: +(* Treiber fr OKI ML320 IBM/EPSON-kompatibel *) +(* Treiber automatisch generiert *) +BOOL VAR prop font; + +$hlc10$ std quality, + std typeface: +(* Treiber fr Star LC-10 oder LC-10 Colour *) +(* Treiber automatisch generiert *) +BOOL VAR was tall font; + +$hdmp4000$ std speed: +(* Treiber fr Schneider DMP4000, automatisch generiert *) + +$hnx15$ std speed: +(* Treiber fr Star NX-15, ND-10, ND-15, NR-10 und NR-15 *) +(* Treiber automatisch generiert *) + +$hmt230$ paper feed, + std speed: +(* Treiber fr Mannesmann-Tally MT 230 *) +(* Treiber automatisch generiert *) + +$hmt340$ paper feed, + std speed: +(* Treiber fr Mannesmann-Tally MT 340 *) +(* Treiber automatisch generiert *) +BOOL VAR prop font := FALSE; + +$h120d$ : +(* Treiber fr Citizen 120-D *) +(* Treiber automatisch generiert *) + +$hc310$ paper feed, + std speed: +(* Treiber fr C. Itoh C 310/315 CXP *) +(* Treiber automatisch generiert *) + +$hci3500$ std speed: +(* Treiber fr C. Itoh CI-3500 *) +(* Treiber automatisch generiert *) + +$hdx2100$ paper feed, + std speed: +(* Treiber fr Fujitsu DX 2100 *) +(* Treiber automatisch generiert *) +BOOL VAR prop font := FALSE ; + +$decl$ +INT VAR blankbreite, x rest, y rest, high, low, small, modifikations; +REAL VAR x size, y size, y margin; +TEXT VAR buffer :: ""; + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); +END PROC paper size; + +papersize (20.32, 30.48); + +PROC top margin (REAL CONST margin): + + y margin := margin +END PROC top margin; + +REAL PROC top margin: y margin END PROC top margin; + +top margin (0.0); + +$speed$ +BOOL VAR is slow; +TEXT VAR std speed name :: "slow"; + +PROC std speed (TEXT CONST speed) : + + IF speed = "fast" OR speed = "slow" + THEN std speed name := speed + ELSE errorstop ("unzul„ssige Geschwindigkeit") + FI +END PROC std speed; + +TEXT PROC std speed : std speed name END PROC std speed; + +$quality$ +TEXT VAR std quality name :: "draft"; + +PROC std quality (TEXT CONST quality) : + + IF quality = "nlq" OR quality = "draft" + THEN std quality name := quality + ELSE errorstop ("unzul„ssige Qualit„tsbezeichnung") + FI +END PROC std quality; + +TEXT PROC std quality : std quality name END PROC std quality; + +$typeface$ +TEXT VAR std typeface name :: ""; + +PROC std typeface (TEXT CONST typeface) : + + IF typeface = "" OR typeface = "roman" OR typeface = "sansserif" + THEN std typeface name := typeface + ELSE errorstop ("unzul„ssige Schriftart") + FI +END PROC std typeface; + +TEXT PROC std typeface : std typeface name END PROC std typeface; + +$typeface292$ +TEXT VAR std typeface name :: ""; + +PROC std typeface (TEXT CONST typeface) : + + IF typeface = "" OR typeface = "courier" OR typeface = "sansserif" + THEN std typeface name := typeface + ELSE errorstop ("unzul„ssige Schriftart") + FI +END PROC std typeface; + +TEXT PROC std typeface : std typeface name END PROC std typeface; + +$typefacelc10$ +TEXT VAR std typeface name :: ""; + +PROC std typeface (TEXT CONST typeface) : + + IF typeface = "" OR typeface = "courier" OR typeface = "sansserif" + OR typeface = "orator1" OR typeface = "orator2" + THEN std typeface name := typeface + ELSE errorstop ("unzul„ssige Schriftart") + FI +END PROC std typeface; + +TEXT PROC std typeface : std typeface name END PROC std typeface; + +$feed$ +TEXT VAR feeder name :: "tractor"; + +PROC paper feed (TEXT CONST feeder) : + + IF feeder = "sheet" OR feeder = "tractor" + THEN feeder name := feeder + ELSE errorstop ("unzul„ssige Einzugsart") + FI +END PROC paper feed; + +TEXT PROC paper feed: feeder name END PROC paper feed; + +$feedschacht$ +TEXT VAR act feeder :: "", + feeder name :: "tractor"; + +PROC paper feed (TEXT CONST feeder) : + + IF feeder = "tractor" OR feeder = "schacht1" OR feeder = "schacht2" + THEN feeder name := feeder + ELIF feeder = "sheet" + THEN feeder name := "schacht1" + ELSE errorstop ("unzul„ssige Einzugsart") + FI +END PROC paper feed; + +TEXT PROC paper feed: feeder name END PROC paper feed; + +$openh$ +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE 1: open document + CASE 2: open page +END SELECT. + +$opendoch$ + open document : + modifikations := 0; + param 1 := x step conversion ( x size ); + param 2 := y step conversion ( y size ); +$initspeed$ + IF pos (material, "slow") <> 0 + THEN is slow := TRUE; + ELIF pos (material, "fast") <> 0 + THEN is slow := FALSE; + ELSE is slow := std speed name = "slow" + FI; +$opendocfx85$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"27"6"); + out (""27"C" + code (param 2 DIV 36)). (* Formularlaenge *) + +$opendocfx800$ + param 2 := (param 2 DIV 36) * 36; + was tall font := TRUE; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"t"1""27"6"); (* Zeichentabelle 4 (Grafik) *) + out (""27"R"0""27"9"27"O"27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + IF pos (material, "nlq") <> 0 + THEN out (""27"x"1"") + ELIF pos (material, "draft") <> 0 + THEN out (""27"x"0"") + ELIF std quality name = "nlq" + THEN out (""27"x"1"") + ELSE out (""27"x"0"") + FI; + IF pos (material, "roman") <> 0 + THEN out (""27"k"0"") + ELIF pos (material, "sansserif") <> 0 + THEN out (""27"k"1"") + ELIF std typeface name = "roman" + THEN out (""27"k"0"") + ELIF std typeface name = "sansserif" + THEN out (""27"k"1"") + FI. + +$opendocmx$ + param 2 := (param 2 DIV 36) * 36; + out (""27"R"0""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"9"27"O"). + +$opendocgp$ + param 2 := (param 2 DIV 36) * 36; + out (""27"6"); (* Zeichensatz 2 *) + out (""18""27"F"27"H"27"W"0""27"T"27"-"0""); (* Modifikationen rcksetzen *) + out (""27"9"27"O"27"A"12""27"2"); + out (""27"C" + code (param 2 DIV 36)). (* Formularlaenge *) + +$opendocpp$ + param 2 := (param 2 DIV 36) * 36; + out (""27"6"); (* Zeichensatz 2 *) + out (""18""27"F"27"W"0""27"T"27"-"0""); (* Modifikationen rcksetzen *) + out (""27"9"27"O"27"A"12""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + IF pos (material, "nlq") <> 0 + THEN out (""27"G") + ELIF pos (material, "draft") <> 0 + THEN out (""27"H") + ELIF std quality name = "nlq" + THEN out (""27"G") + ELSE out (""27"H") + FI. + +$opendocml182i$ + IF pos (material, "nlq") <> 0 + THEN out (""27"I3") + ELIF pos (material, "draft") <> 0 + THEN out (""27"I1") + ELIF std quality name = "nlq" + THEN out (""27"I3") + ELSE out (""27"I1") + FI; + out (""27"N"0""); (* Kein Sprung ber Perf. *) + +$opendocml192el$ + param 2 := (param 2 DIV 36) * 36; + prop font := FALSE; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"6"); (* Erweiterung des Zeichensatzes *) + out (""27"9"27"O"27"x"0""). + +$opendocml292el$ + param 2 := (param 2 DIV 36) * 36; + was tall font := TRUE; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"t"1""27"6"); (* Zeichentabelle 4 (Grafik) *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"9"27"O"27"r0"); + IF pos (material, "nlq") <> 0 + THEN out (""27"x"1"") + ELIF pos (material, "draft") <> 0 + THEN out (""27"x"0"") + ELIF std quality name = "nlq" + THEN out (""27"x"1"") + ELSE out (""27"x"0"") + FI; + IF pos (material, "courier") <> 0 + THEN out (""27"k"0"") + ELIF pos (material, "sansserif") <> 0 + THEN out (""27"k"1"") + ELIF std typeface name = "courier" + THEN out (""27"k"0"") + ELIF std typeface name = "sansserif" + THEN out (""27"k"1"") + FI. + +$opendocml294i$ + param 2 := (param 2 DIV 36) * 36; + out (""27"6"); (* Zeichensatz 2 *) + out (""18""27"F"27"W0"27"T"27"-0"27"%H"); (* Modifikationen rcksetzen *) + out (""27"9"27"O"27"A"12""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + IF pos (material, "nlq") <> 0 + THEN out (""27"G") + ELIF pos (material, "draft") <> 0 + THEN out (""27"H") + ELIF std quality name = "nlq" + THEN out (""27"G") + ELSE out (""27"H") + FI. + +$opendocml320$ + param 2 := (param 2 DIV 36) * 36; + prop font := FALSE; + out (""27"{"99""27"{"40""); (* Umschaltung auf EPSON-Emulation *) + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"6"); (* Erweiterung des Zeichensatzes *) + out (""27"9"27"O"27"x"0""). + +$opendoclc10$ + param 2 := (param 2 DIV 36) * 36; + was tall font := TRUE; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"t"1""27"6"); (* Zeichentabelle 4 (Grafik) *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"9"27"r"0""); + IF pos (material, "nlq") <> 0 + THEN out (""27"x"1"") + ELIF pos (material, "draft") <> 0 + THEN out (""27"x"0"") + ELIF std quality name = "nlq" + THEN out (""27"x"1"") + ELSE out (""27"x"0"") + FI; + IF pos (material, "courier") <> 0 + THEN out (""27"k"0"") + ELIF pos (material, "sansserif") <> 0 + THEN out (""27"k"1"") + ELIF pos (material, "orator1") <> 0 + THEN out (""27"k"2"") + ELIF pos (material, "orator2") <> 0 + THEN out (""27"k"3"") + ELIF std typeface name = "courier" + THEN out (""27"k"0"") + ELIF std typeface name = "sansserif" + THEN out (""27"k"1"") + ELIF std typeface name = "orator1" + THEN out (""27"k"2"") + ELIF std typeface name = "orator2" + THEN out (""27"k"3"") + FI. + +$opendocnx15$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"6"); (* Erweiterung des Zeichensatzes *) + out (""27"9"27"x"0""). + +$opendocdmp4000$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"m"0""27"R"0""27"9"27"O"27"2"27"6"); + out (""27"C" + code (param 2 DIV 36)). (* Formularlaenge *) + +$opendocmt$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"O"27"x"0""27"r"0""27"6"); + IF feeder name = "tractor" + THEN act feeder := feeder name; + out (""27"[5{") + ELSE out (""27"[0{"); + IF pos (material, "schacht1") <> 0 + THEN act feeder := "schacht1" + ELIF pos (material, "schacht2") <> 0 + THEN act feeder := "schacht2" + ELSE act feeder := feeder name + FI + FI. + +$opendocdx2100$ +param 2 := (param 2 DIV 36) * 36; +out (""24""27""64""); (* Reset des Druckers *) +out (""27"R"0""); (* US-Zeichensatz *) +out (""27"2" + ""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) +out (""27"N"0""); (* skip perforation *) +out (""27"x"0"" + ""27"r"0""). (* draft und black *) + + +$opendoc120d$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"9"27"O"27"x0"27"2"); + out (""27"C" + code (param 2 DIV 36)). (* Formularlaenge *) + +$opendocc310$ + param 2 := (param 2 DIV 36) * 36; + out (""27""64""27""64""); (* Reset des Druckers *) + out (""27"R"0""27"2"); + out (""27"C" + code (param 2 DIV 36)); (* Formularlaenge *) + out (""27"O"27"x"0""27"r"0""27"6"); + IF feeder name = "tractor" + THEN act feeder := feeder name; + ELSE IF pos (material, "schacht1") <> 0 + THEN act feeder := "schacht1" + ELIF pos (material, "schacht2") <> 0 + THEN act feeder := "schacht2" + ELSE act feeder := feeder name + FI + FI. + +$openpge$ + open page : + param 1 := 0; + param 2 := y step conversion (y margin); + x rest := 0; + y rest := 0; + small := 0; + out (""13""). +$openpgemlsf$ + open page : + param 1 := 0; + param 2 := 0; + x rest := 0; + y rest := 0; + small := 0; + IF feeder name = "sheet" THEN out (""12"") FI; + out (""13""). +$openpgemtsf$ + open page : + param 1 := 0; + param 2 := 0; + x rest := 0; + y rest := 0; + small := 0; + IF feeder name = "schacht1" + THEN out (""27"[21{"12"") + ELIF feeder name = "schacht2" + THEN out (""27"[22{"12"") + FI; + out (""13""). + +$openpgec310sf$ + open page : + param 1 := 0; + param 2 := 0; + x rest := 0; + y rest := 0; + small := 0; + IF feeder name = "schacht1" + THEN out (""27""25"1"12"") + ELIF feeder name = "schacht2" + THEN out (""27""25"2"12"") + FI; + out (""13""). + +$betwoc$ +END PROC open; + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE 1: close document + CASE 2: close page +END SELECT. +close document : +$clpge$ +. close page : + IF param 1 > 0 THEN out (""12"") FI. +$clmlsf$ +.close page : + IF feeder name = "sheet" + THEN out (""27""25""3"") + ELIF param 1 > 0 + THEN out (""12"") + FI. +$clmtsf$ +.close page : + IF feeder name <> "tractor" + THEN out (""27"[2J") + ELIF param 1 > 0 + THEN out (""12"") + FI. +$clc310sf$ +.close page : + IF feeder name = "sheet" + THEN out (""27""25"R") + ELIF param 1 > 0 + THEN out (""12"") + FI. + +$betwce$ +END PROC close; + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE 1: write text + CASE 2: write cmd + CASE 3: carriage return + CASE 4: move + CASE 5: draw + CASE 6: on + CASE 7: off + CASE 8: type +END SELECT. + +is underline: bit (modifikations, 0). +is bold : bit (modifikations, 1). +is italics : bit (modifikations, 2). + + write text : + out subtext (string, param 1, param 2). +$cmd$ + write cmd : + out subtext (string, param 1, param 2). +$cmdfx800$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"x"0"") + ELIF buffer = "nlq" + THEN out (""27"x"1"") + ELIF buffer = "roman" + THEN out (""27"k"0"") + ELIF buffer = "sansserif" + THEN out (""27"k"1"") + ELSE out (buffer) + FI. +$cmdpp$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"H") + ELIF buffer = "nlq" + THEN out (""27"G") + ELSE out (buffer) + FI. +$cmdml182i$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"I1") + ELIF buffer = "nlq" + THEN out (""27"I3") + ELSE out (buffer) + FI. +$cmdml292el$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"x"0"") + ELIF buffer = "nlq" + THEN out (""27"x"1"") + ELIF buffer = "courier" + THEN out (""27"k"0"") + ELIF buffer = "sansserif" + THEN out (""27"k"1"") + ELIF buffer = "schwarz" + THEN out (""27"r0") + ELIF buffer = "rot" + THEN out (""27"r1") + ELIF buffer = "blau" + THEN out (""27"r2") + ELIF buffer = "violett" + THEN out (""27"r3") + ELIF buffer = "gelb" + THEN out (""27"r4") + ELIF buffer = "orange" + THEN out (""27"r5") + ELIF buffer = "grn" + THEN out (""27"r6") + ELSE out (buffer) + FI. +$cmdml294i$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"H") + ELIF buffer = "nlq" + THEN out (""27"G") + ELIF buffer = "schwarz" + THEN out (""27"r0") + ELIF buffer = "rot" + THEN out (""27"r1") + ELIF buffer = "blau" + THEN out (""27"r2") + ELIF buffer = "violett" + THEN out (""27"r3") + ELIF buffer = "gelb" + THEN out (""27"r4") + ELIF buffer = "orange" + THEN out (""27"r5") + ELIF buffer = "grn" + THEN out (""27"r6") + ELSE out (buffer) + FI. +$cmdlc10$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "draft" + THEN out (""27"x"0"") + ELIF buffer = "nlq" + THEN out (""27"x"1"") + ELIF buffer = "courier" + THEN out (""27"k"0"") + ELIF buffer = "sansserif" + THEN out (""27"k"1"") + ELIF buffer = "orator1" + THEN out (""27"k"2"") + ELIF buffer = "orator2" + THEN out (""27"k"3"") + ELIF buffer = "schwarz" + THEN out (""27"r"0"") + ELIF buffer = "rot" + THEN out (""27"r"1"") + ELIF buffer = "blau" + THEN out (""27"r"2"") + ELIF buffer = "violett" + THEN out (""27"r"3"") + ELIF buffer = "gelb" + THEN out (""27"r"4"") + ELIF buffer = "orange" + THEN out (""27"r"5"") + ELIF buffer = "grn" + THEN out (""27"r"6"") + ELSE out (buffer) + FI. +$cmdmt230$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF feeder name <> "tractor" + THEN IF buffer = "schacht1" OR buffer = "schacht2" + THEN act feeder := buffer + FI + ELIF buffer = "schwarz" + THEN out (""27"r"0"") + ELIF buffer = "magenta" + THEN out (""27"r"1"") + ELIF buffer = "cyan" + THEN out (""27"r"2"") + ELIF buffer = "blau" + THEN out (""27"r"3"") + ELIF buffer = "gelb" + THEN out (""27"r"4"") + ELIF buffer = "rot" + THEN out (""27"r"5"") + ELIF buffer = "grn" + THEN out (""27"r"6"") + ELSE out (buffer) + FI. + +$cmdc310$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF feeder name <> "tractor" + THEN IF buffer = "schacht1" OR buffer = "schacht2" + THEN act feeder := buffer + FI + ELIF buffer = "schwarz" + THEN out (""27"r"0"") + ELIF buffer = "rot" + THEN out (""27"r"1"") + ELIF buffer = "blau" + THEN out (""27"r"2"") + ELIF buffer = "violett" + THEN out (""27"r"3"") + ELIF buffer = "gelb" + THEN out (""27"r"4"") + ELIF buffer = "orange" + THEN out (""27"r"5"") + ELIF buffer = "grn" + THEN out (""27"r"6"") + ELSE out (buffer) + FI. + +$cmddx2100$ + write cmd : + buffer := subtext (string, param 1, param 2); + IF buffer = "schwarz" + THEN out (""27"r"0"") + ELIF buffer = "rot" + THEN out (""27"r"1"") + ELIF buffer = "blau" + THEN out (""27"r"2"") + ELIF buffer = "violett" + THEN out (""27"r"3"") + ELIF buffer = "gelb" + THEN out (""27"r"4"") + ELIF buffer = "orange" + THEN out (""27"r"5"") + ELIF buffer = "grn" + THEN out (""27"r"6"") + ELSE out (buffer) + FI. + +$crs$ + carriage return : + y rest INCR small; + x rest := 0; + small := 0; + out (""13""). +$moh$ +x steps : param1. +y steps : param2. + +move : + IF x steps < 0 OR y steps < 0 THEN stop FI; + IF x steps > 0 THEN x move FI; + IF y steps > 0 THEN y move FI. + +$mofx85$ +x move : + high := (x steps + x rest) DIV blankbreite; + x rest := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF x rest > 0 AND is slow + THEN IF is underline THEN out (" "8"") FI; + out (""27"Y"+ code (x rest) + ""0""); + x rest TIMESOUT ""0""; + x rest := 0 + FI. + + +$mofx800$ +x move : + IF is underline + THEN underline x move + ELSE simple x move + FI. + +underline x move: + high := (x steps + x rest) DIV blankbreite; + low := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF low > 0 + THEN out (" "8""27"\"+ code (low) + ""0"") + FI. + +simple x move: + out (""27"\"); + out (code (x steps MOD 256)); + out (code (x steps DIV 256)). + +$modrmx$ +x move : + high := (x steps + x rest) DIV blankbreite; + low := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF low > 0 AND is slow + THEN IF is underline THEN out ("_"8"") FI; + IF is condensed + THEN high := low; + low := 0; + out (""27"L"+ code (high) + ""0""); + ELSE high := low DIV 2; + low := low MOD 2; + out (""27"K"+ code (high) + ""0""); + FI; + high TIMESOUT ""0""; + IF is small + THEN out (""27"S"1""); + small DECR 1; + FI; + FI; + x rest := low. + +y move : + y rest INCR y steps; + IF y rest > 0 + THEN high := y rest DIV 255; + low := y rest MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + y rest := 0 + FI. + +draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> 1 + THEN stop + ELIF x steps > 0 + THEN x draw + FI. + +x draw : + out (""27"L"); + out (code (x steps MOD 256)); + out (code (x steps DIV 256)); + x steps TIMESOUT ""1""; + IF is small THEN out (""27"S"1"") FI. + +$mogp$ +x move : + high := (x steps + x rest) DIV blankbreite; + x rest := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF x rest > 0 AND is slow + THEN IF is underline + THEN out (" "13""27"Y"); + out (code (x pos MOD 256)); + out (code (x pos DIV 256)); + x pos TIMESOUT ""0"" + ELSE out (""27"Y"+ code (x rest) + ""0""); + x rest TIMESOUT ""0"" + FI; + x rest := 0 + FI. + +$moml192el$ +x move : + high := (x steps + x rest) DIV blankbreite; + x rest := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF x rest > 0 AND is slow + THEN IF is underline THEN + IF prop font THEN + out (""27"p"0"" + " "8"" + ""27"p"1"") + ELSE + out (" "8"") + FI; + FI; + out (""27"Y"+ code (x rest) + ""0""); + x rest TIMESOUT ""0""; + x rest := 0 + FI. + +$ymodr$ +y move : + y rest INCR y steps; + IF y rest > 0 + THEN high := y rest DIV 255; + low := y rest MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + y rest := 0 + FI. + +draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> 1 + THEN stop + ELIF x steps > 0 + THEN x draw + FI. + +x draw : + out (""27"Y"); + out (code (x steps MOD 256)); + out (code (x steps DIV 256)); + x steps TIMESOUT ""1"". + +$onoff$ + on : + IF on string (param 1) <> "" + THEN out (on string (param 1)); + modifikations := modifikations OR param 1 + ELSE stop + FI. + + off : + IF off string (param 1) <> "" + THEN out (off string (param 1)); + modifikations := modifikations AND (param 1 XOR -1) + ELSE stop + FI. + +$onoffpp$ + on : + IF on string (param 1) <> "" AND param 1 <> 2 + THEN out (on string (param 1)); + modifikations := modifikations OR param 1 + ELSE stop + FI. + + off : + IF off string (param 1) <> "" AND param 1 <> 2 + THEN out (off string (param 1)); + modifikations := modifikations AND (param 1 XOR -1) + ELSE stop + FI. + +$tyfx85$ + type : + buffer := font string (param 1); + out (buffer); + restore modifikations; + blankbreite := char pitch (param 1, " "); + IF pos (buffer, ""27"S") <> 0 THEN small DECR 1 FI. + +$tyfx800$ + type : + buffer := font string (param 1); + IF was tall font + THEN out (""27"w"0"") + FI; + out (buffer); + restore modifikations; + blankbreite := char pitch (param 1, " "); + was tall font := pos (buffer, ""27"w"1"") <> 0. + +$tymx$ + type : + buffer := font string (param 1); + blankbreite := char pitch (param 1, " "); + is condensed := pos (buffer, ""15"") <> 0; + IF pos (buffer, ""27"S") <> 0 + THEN small DECR 1; + is small := TRUE; + ELSE is small := FALSE; + FI; + out (buffer); + restore modifikations. + +$tyohnesmall$ + type : + buffer := font string (param 1); + out (buffer); + restore modifikations; + blankbreite := char pitch (param 1, " "). + +$tyml192el$ + type : + buffer := font string (param 1); + out (buffer); + restore modifikations; + blankbreite := char pitch (param 1, " "); + prop font := pos (buffer, ""27"p"1"") <> 0; + IF pos (buffer, ""27"S") <> 0 THEN small DECR 1 FI. + +$tyml292el$ + type : + buffer := font string (param 1); + IF was tall font + THEN out (""27""31"0"27"U0") + FI; + was tall font := pos (buffer, ""27"w"1"") <> 0; + change all (buffer, ""27"w"0"", ""27""31"0"27"U0"); + change all (buffer, ""27"w"1"", ""27""31"1"27"U1"); + out (buffer); + restore modifikations; + blankbreite := char pitch (param 1, " "). + +$ontyml294i$ + on : + IF on string (param 1) <> "" AND param 1 <> 2 + THEN out (on string (param 1)); + modifikations := modifikations OR param 1 + ELIF param 1 = 4 + THEN out (""27"%G"); + modifikations := modifikations OR param 1 + ELSE stop + FI. + + off : + IF off string (param 1) <> "" AND param 1 <> 2 + THEN out (off string (param 1)); + modifikations := modifikations AND (param 1 XOR -1) + ELIF param 1 = 4 + THEN out (""27"%H"); + modifikations := modifikations AND (param 1 XOR -1) + ELSE stop + FI. + + type : + buffer := font string (param 1); + out (buffer); + IF is underline THEN out (on string (1)) FI; + IF is bold THEN out (on string (2)) FI; + IF is italics THEN out (""27"%G") FI; + blankbreite := char pitch (param 1, " "); + IF pos (buffer, ""27"S") <> 0 THEN small DECR 1 FI. + +$end$ + restore modifikations: + IF is underline THEN out (on string (1)) FI; + IF is bold THEN out (on string (2)) FI; + IF is italics THEN out (on string (4)) FI. + +END PROC execute; + +INT VAR reply; DATASPACE VAR ds; FILE VAR file; + +PROC printer: + + disable stop; + continue (server channel); + check error (error message); + ds := nilspace; + REP forget (ds); + execute print; + IF is error AND online THEN put error; clear error; FI; + PER; +END PROC printer; + +PROC execute print: + + LET ack = 0, fetch code = 11, file type = 1003; + enable stop; + ds := nilspace; + call (father, fetch code, ds, reply); + IF reply = ack CAND type (ds) = file type + THEN file := sequential file (input, ds); + print (file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + FI; +END PROC execute print; + +PROC check error(TEXT CONST message): + + IF is error + THEN clear error; rename myself (message); + IF is error THEN end(myself) FI; + pause (9000); end(myself); + FI; +END PROC check error; + +END PACKET printerdriver + diff --git a/system/printer-9nadel/1986/src/printer.epson.fx b/system/printer-9nadel/1986/src/printer.epson.fx new file mode 100644 index 0000000..6443bb0 --- /dev/null +++ b/system/printer-9nadel/1986/src/printer.epson.fx @@ -0,0 +1,505 @@ +PACKET epson fx printer + +(*************************************************************************) +(* Stand : 29.07.86 *) +(* EPSON FX-80 / FX-100 / FX-100+ Version : 4 *) +(* Autor : Rudolf Ruland *) +(*************************************************************************) + + DEFINES open, + close, + execute, + + paper size, + std speed : + +LET underline = 1, +(* bold = 2, *) + italics = 4, +(* reverse = 8, *) + + underline linetype = 1, + + c document = 1, + c page = 2, + + c write text = 1, + c write cmd = 2, + c carriage return = 3, + c move = 4, + c draw = 5, + c on = 6, + c off = 7, + c type = 8; + +INT VAR blankbreite, x rest, y rest, high, low, small; +BOOL VAR is slow, is underline, is italics, + double font, prop font, italics font; +REAL VAR x size, y size; +TEXT VAR std speed name; + +(*********************************************************************) + +(* paper size ( 8.0 * 2.54, 12.0 * 2.54); *) (* FX-80 *) + paper size (13.6 * 2.54, 12.0 * 2.54); (* FX-100 *) + std speed ("fast"); + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; + +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); + +END PROC paper size; + + +PROC std speed (TEXT CONST speed) : + + IF speed = "fast" OR speed = "slow" + THEN std speed name := speed; + ELSE errorstop ("unzulaessige Geschwindigkeit") + FI; + +END PROC std speed; + +TEXT PROC std speed : std speed name END PROC std speed; + +(*********************************************************************) + +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE c document : open document + CASE c page : open page +END SELECT; + + +. x steps : param1 +. y steps : param2 +. + open document : + IF pos (material, "slow") <> 0 + THEN is slow := TRUE; + ELIF pos (material, "fast") <> 0 + THEN is slow := FALSE; + ELSE is slow := std speed name = "slow" + FI; + is underline := FALSE; + is italics := FALSE; + x steps := x step conversion ( x size ); + y steps := y step conversion ( y size ); + y steps := (y steps DIV 36) * 36; + out (""27""64""); (* Reset des Druckers *) + out (""27"R"0""); (* Amerikanischer Zeichensatz *) + out (""27"C" + code (y steps DIV 36)); (* Formularlaenge *) + out (""27"I1"27"6"); (* Erweiterung des Zeichensatzes *) + out (""27":"0""0""0""27"%"1""0""); (* Ladbarer Zeichensatz *) + (* Definieren von Zeichen der Breiten 5, 6, 7, 8 und 9 Mikroschritte *) + out (""27"&"0""000""000""4""0""0""0""0""0""0""0""0""0""0""0""); + out (""27"&"0""001""001""5""0""0""0""0""0""0""0""0""0""0""0""); + out (""27"&"0""002""002""6""0""0""0""0""0""0""0""0""0""0""0""); + out (""27"&"0""003""003""7""0""0""0""0""0""0""0""0""0""0""0""); + out (""27"&"0""004""004""8""0""0""0""0""0""0""0""0""0""0""0""); + + +. x start : param1 +. y start : param2 +. + open page : + x start := 0; + y start := 0; + x rest := 0; + y rest := 0; + small := 0; + out (""13""); + +END PROC open; + + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE c document : close document + CASE c page : close page +END SELECT; + +. + close document : + + +. remaining y steps : param1 +. + close page : + IF remaining y steps > 0 THEN out (""12"") FI + +END PROC close; + + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE c write text : write text + CASE c write cmd : write cmd + CASE c carriage return : carriage return + CASE c move : move + CASE c draw : draw + CASE c on : on + CASE c off : off + CASE c type : type +END SELECT + + +. from : param1 +. to : param2 +. + write text : + out subtext (string, from, to) + +. + write cmd : + out subtext (string, from, to) + + +(*. x steps to left margin : param1*) +. + carriage return : + y rest INCR small; + x rest := 0; + small := 0; + out (""13""); + + +. x steps : param1 +. y steps : param2 +. + move : + IF x steps < 0 OR y steps < 0 + THEN stop + ELIF x steps > 0 + THEN x move + ELIF y steps > 0 + THEN y move + FI; + + . x move : + IF prop font + THEN prop x move + ELSE fest x move + FI; + + . prop x move : + high := (x steps + x rest) DIV 5 - 1; + low := (x steps + x rest) MOD 5 + 5; + IF high < 0 + THEN x rest := low - 5; + ELSE IF double font THEN out (""27"W"0"") FI; + IF italics font OR is italics THEN out (""27"5") FI; + IF high > 0 THEN high TIMESOUT ""0"" FI; + IF low > 0 THEN out (code (low - 5)) FI; + IF double font THEN out (""27"W"1"") FI; + IF italics font OR is italics THEN out (""27"4") FI; + x rest := 0; + FI; + + . fest x move : + high := (x steps + x rest) DIV blankbreite; + x rest := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF x rest > 0 AND is slow + THEN IF is underline THEN out (" "8"") FI; + out (""27"Y"+ code (x rest) + ""0""); + x rest TIMESOUT ""0""; + x rest := 0; + FI; + + . y move : + y rest INCR y steps; + IF y rest > 0 + THEN high := y rest DIV 255; + low := y rest MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + y rest := 0; + FI; + +. + draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> underline linetype + THEN stop + ELIF x steps > 0 + THEN x draw + FI; + + . x draw : + high := x steps DIV 256; + low := x steps MOD 256; + out (""27"Y"); + out (code (low)); + out (code (high)); + x steps TIMESOUT ""1""; + + +. modification : param1 +. + on : + IF on string (modification) <> "" + THEN out (on string (modification)); + IF modification = underline THEN is underline := TRUE FI; + IF modification = italics THEN is italics := TRUE FI; + ELSE stop + FI; + +. + off : + IF off string (modification) <> "" + THEN out (off string (modification)); + IF modification = underline THEN is underline := FALSE FI; + IF modification = italics THEN is italics := FALSE FI; + ELSE stop + FI; + + +. font nr : param1 +. + type : + TEXT CONST buffer := font string (font nr); + out (buffer); + IF is italics THEN out (""27"4") FI; + blankbreite := char pitch (font nr, " "); + prop font := pos (buffer, ""27"p") <> 0; + italics font := pos (buffer, ""27"4") <> 0; + double font := blankbreite > 12; + IF pos (string, ""27"S") <> 0 THEN small DECR 1 FI; + +END PROC execute; + + +END PACKET epson fx printer; + + +PACKET print cmd for single user (* Autor : Rudolf Ruland *) + (* Stand : 18.02.86 *) + DEFINES print, + print channel : + +INT VAR pr channel; +TEXT VAR buffer; +FILE VAR print file; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + + +PROC print channel (INT CONST channel) : + + IF multi user THEN do ("serverchannel(" + text (channel) + ")" ) FI; + pr channel := channel; + +END PROC print channel; + +INT PROC print channel : pr channel END PROC print channel; + + +PROC print : + + print (last param) + +ENDPROC print ; + +PROC print (TEXT CONST file name) : + + INT CONST myself channel := channel (myself); + last param (file name) ; + print file := sequential file (input, file name) ; + continue (print channel) ; + disable stop ; + execute print ; + remember error message if neccessary; + IF multi user THEN do ("break (quiet)") FI; + continue (myself channel); + clear error; + put error message if neccessary; + + . remember error message if neccessary : + IF is error + THEN buffer := error message; + clear error; + ELSE buffer := ""; + FI; + + . put error message if neccessary : + IF buffer <> "" THEN errorstop (buffer) FI; + +ENDPROC print ; + +PROC execute print : + + enable stop ; + print (print file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + +ENDPROC execute print ; + +ENDPACKET print cmd for single user; + +#page# +(******************************************************************) +(*** ***) +(*** Generierung des Printers ***) +(*** ***) +(******************************************************************) + +LET printer name = "printer.epson.fx", + up = ""3""13""5""; + +TEXT VAR fonttab name := "fonttab.epson.fx"; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + +INT VAR pr channel; +TEXT VAR buffer; + +command dialogue (TRUE); +ask for print channel; +ask for printer type; +ask for positioning; +load font table; +forget (printer name, quiet); +IF multi user THEN generate printer spool FI; +check on; +. + ask for print channel : + line; + put ("gib Druckerkanal:"); + get (pr channel); + print channel (pr channel); + line; +. + ask for printer type : + line; + SELECT printer type OF + CASE 0 : papersize ( 8.0 * 2.54, 12.0 * 2.54); + CASE 1 : papersize (13.6 * 2.54, 12.0 * 2.54); + CASE 2 : papersize (13.6 * 2.54, 12.0 * 2.54); + fonttab name CAT "+"; + END SELECT; + + . printer type : + REP out (up); + IF yes ("Druckertyp : FX-80") + THEN LEAVE printer type WITH 0 FI; + out (up); + IF yes ("Druckertyp : FX-100") + THEN LEAVE printer type WITH 1 FI; + out (up); + IF yes ("Druckertyp : FX-100+") + THEN LEAVE printer type WITH 2 FI; + PER; + 0 +. + ask for positioning : + line; + std speed (positioning); + + . positioning : + REP out (up); + IF yes ("x - Positionierung : in Mikroschritten (genauer, aber langsamer)") + THEN LEAVE positioning WITH "slow" FI; + out (up); + IF yes ("x - Positionierung : in Blanks (schneller, aber ungenauer)") + THEN LEAVE positioning WITH "fast" FI; + PER; + "" +. + load font table : + IF NOT exists (fonttab name) + THEN command dialogue (TRUE); + REP line (2); + putline ("Bitte Archiv mit der Fonttabelle """ + + fonttab name + """ einlegen!"); + line; + UNTIL yes ("Archiv eingelegt") PER; + reserve archive; + fetch (fonttab name, archive); + release (archive); + FI; + font table (fonttab name); + IF multi user + THEN command dialogue (FALSE); + do ("save(""" + font tab name + """,task(""configurator""))") + FI; + forget (fonttab name, quiet); + + . 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; + +. generate printer spool : + eumel must advertise; + cursor (1, 12); + 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 (4); + putline ("Generierung beendet, weiter mit 'SV'"); + generate printer server; + do (buffer); + +. generate printer server : + buffer := "break (quiet);"; + buffer CAT "spool manager (PROC printer);"; + buffer CAT "INT VAR reply; DATASPACE VAR ds; FILE VAR file;"; + buffer CAT "PROC printer:"; + buffer CAT " disable stop;"; + buffer CAT " continue (server channel);"; + buffer CAT " check error (error message);"; + buffer CAT " ds := nilspace;"; + buffer CAT " REP forget (ds);"; + buffer CAT " execute print;"; + buffer CAT " IF is error AND online THEN put error; clear error; FI;"; + buffer CAT " PER;"; + buffer CAT "END PROC printer;"; + buffer CAT "PROC execute print:"; + buffer CAT " LET ack = 0, fetch code = 11, file type = 1003;"; + buffer CAT " enable stop;"; + buffer CAT " ds := nilspace;"; + buffer CAT " call (father, fetch code, ds, reply);"; + buffer CAT " IF reply = ack CAND type (ds) = file type"; + buffer CAT " THEN file := sequential file (input, ds);"; + buffer CAT " print (file,"; + buffer CAT " PROC (INT CONST, INT VAR, INT VAR) open,"; + buffer CAT " PROC (INT CONST, INT CONST) close,"; + buffer CAT " PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute);"; + buffer CAT " FI;"; + buffer CAT "END PROC execute print;"; + buffer CAT "PROC check error(TEXT CONST message):"; + buffer CAT " IF is error"; + buffer CAT " THEN clear error; rename myself (message);"; + buffer CAT " IF is error THEN end(myself) FI;"; + buffer CAT " pause (9000); end(myself);"; + buffer CAT " FI;"; + buffer CAT "END PROC check error;"; diff --git a/system/printer-9nadel/1986/src/printer.epson.lq b/system/printer-9nadel/1986/src/printer.epson.lq new file mode 100644 index 0000000..49d0624 --- /dev/null +++ b/system/printer-9nadel/1986/src/printer.epson.lq @@ -0,0 +1,501 @@ +PACKET epson lq printer + +(**************************************************************************) +(* Stand : 29.07.86 *) +(* EPSON LQ-1500 Version : 4 *) +(* Autor : Rudolf Ruland *) +(**************************************************************************) + + DEFINES open, + close, + execute, + + paper size, + std quality: + +LET +(* underline = 1, + bold = 2, + italics = 4, + reverse = 8, *) + + underline linetype = 1, + + c document = 1, + c page = 2, + + c write text = 1, + c write cmd = 2, + c carriage return = 3, + c move = 4, + c draw = 5, + c on = 6, + c off = 7, + c type = 8; + +INT VAR rest, high, low, factor; +BOOL VAR is nlq, factor was 6, condensed; +REAL VAR x size, y size; +TEXT VAR std quality name, buffer; + +(*********************************************************************) + +paper size (13.6 * 2.54, 12.0 * 2.54); +std quality ("draft"); + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; + +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); + +END PROC paper size; + + +PROC std quality (TEXT CONST quality) : + + IF quality = "nlq" OR quality = "draft" + THEN std quality name := quality; + ELSE errorstop ("unzulaessige Betriebsart") + FI; + +END PROC std quality; + +TEXT PROC std quality : std quality name END PROC std quality; + +(*********************************************************************) + +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE c document : open document + CASE c page : open page +END SELECT; + + +. x steps : param1 +. y steps : param2 +. + open document : + IF pos (material, "nlq") <> 0 + THEN is nlq := TRUE; + ELIF pos (material, "draft") <> 0 + THEN is nlq := FALSE; + ELSE is nlq := std quality = "nlq" + FI; + factor := 0; + factor was 6 := FALSE; + condensed := FALSE; + x steps := x step conversion ( x size ); + y steps := y step conversion ( y size ); + y steps := (y steps DIV 30) * 30; + out (""27""64""); (* Reset des Druckers *) + out (""27"R"0""); (* Amerikanischer Zeichensatz *) + out (""27"C" + code (y steps DIV 30)); (* Formularlaenge *) + out (""27"x"0""); (* Entwurfsqualit„t *) + + +. x start : param1 +. y start : param2 +. + open page : + x start := 0; + y start := 0; + rest := 0; + out (""13""); + +END PROC open; + + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE c document : close document + CASE c page : close page +END SELECT; + +. + close document : + + +. remaining y steps : param1 +. + close page : + IF remaining y steps > 0 THEN out (""12"") FI + +END PROC close; + + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE c write text : write text + CASE c write cmd : write cmd + CASE c carriage return : carriage return + CASE c move : move + CASE c draw : draw + CASE c on : on + CASE c off : off + CASE c type : type +END SELECT + + +. from : param1 +. to : param2 +. + write text : + out subtext (string, from, to) + +. + write cmd : + buffer := subtext (string, from, to); + IF buffer = "nlq" + THEN is nlq := TRUE; + near letter quality; + ELIF buffer = "draft" + THEN is nlq := FALSE; + draft quality; + ELSE out (buffer); + FI; + + . near letter quality : + IF factor = 6 + THEN factor was 6 := TRUE; + factor := 4; + ELSE factor was 6 := FALSE; + FI; + IF condensed + THEN out (""27"x"0"") + ELSE out (""27"x"1"") + FI; + + . draft quality : + IF factor was 6 + THEN factor was 6 := FALSE; + factor := 6; + FI; + out (""27"x"0""); + + +(*. x steps to left margin : param1*) +. + carriage return : + rest := 0; + out (""13""); + + +. x steps : param1 +. y steps : param2 +. + move : + IF x steps < 0 OR y steps < 0 + THEN stop + ELIF x steps > 0 + THEN x move + ELIF y steps > 0 + THEN y move + FI; + + . x move : + high := (x steps + rest) DIV factor; + rest := (x steps + rest) MOD factor; + out (""27"\"); + out (code (high MOD 256)); + out (code (high DIV 256)); + + . y move : + high := y steps DIV 255; + low := y steps MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + +. + draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> underline linetype + THEN stop + ELIF x steps > 0 + THEN x draw + FI; + + . x draw : + high := (x steps + rest) DIV 6; + rest := (x steps + rest) MOD 6; + IF high > 0 + THEN low := high MOD 255; + high := high DIV 255; + out (""27"V"); + out (code (low)); + out (""27"*"1""1""0""1""27"V"0""); + FOR low FROM 1 UPTO high + REP out (""27"V"255""27"*"1""1""0""1""27"V"0"") PER; + FI; + + +. modification : param1 +. + on : + IF on string (modification) <> "" + THEN out (on string (modification)) + ELSE stop + FI + +. + off : + IF off string (modification) <> "" + THEN out (off string (modification)) + ELSE stop + FI + + +. font nr : param1 +. + type : + buffer := font string (font nr); + out (buffer); + factor := pitch factor; + IF is nlq THEN near letter quality FI; + + . pitch factor : (* Mikroschritt *) + INT CONST font bits := code (buffer SUB 3); + IF bit (font bits, 1) + THEN condensed := FALSE; 2 (* proportional 1/360 Inch *) + ELIF pos (buffer, ""27"x"1"") <> 0 + THEN condensed := FALSE; 4 (* near letter 1/180 Inch *) + ELIF bit (font bits, 2) + THEN condensed := TRUE; 3 (* condensed 1/240 Inch *) + ELIF bit (font bits, 0) + THEN condensed := FALSE; 4 (* elite 1/180 Inch *) + ELSE condensed := FALSE; 6 (* pica 1/120 Inch *) + FI + +END PROC execute; + + +END PACKET epson lq printer; + + +PACKET print cmd for single user (* Autor : Rudolf Ruland *) + (* Stand : 18.02.86 *) + DEFINES print, + print channel : + +INT VAR pr channel; +TEXT VAR buffer; +FILE VAR print file; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + + +PROC print channel (INT CONST channel) : + + IF multi user THEN do ("serverchannel(" + text (channel) + ")" ) FI; + pr channel := channel; + +END PROC print channel; + +INT PROC print channel : pr channel END PROC print channel; + + +PROC print : + + print (last param) + +ENDPROC print ; + +PROC print (TEXT CONST file name) : + + INT CONST myself channel := channel (myself); + last param (file name) ; + print file := sequential file (input, file name) ; + continue (print channel) ; + disable stop ; + execute print ; + remember error message if neccessary; + IF multi user THEN do ("break (quiet)") FI; + continue (myself channel); + clear error; + put error message if neccessary; + + . remember error message if neccessary : + IF is error + THEN buffer := error message; + clear error; + ELSE buffer := ""; + FI; + + . put error message if neccessary : + IF buffer <> "" THEN errorstop (buffer) FI; + +ENDPROC print ; + +PROC execute print : + + enable stop ; + print (print file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + +ENDPROC execute print ; + +ENDPACKET print cmd for single user; + +#page# +(******************************************************************) +(*** ***) +(*** Generierung des Printers ***) +(*** ***) +(******************************************************************) + +LET printer name = "printer.epson.lq", + up = ""3""13""5""; + +TEXT VAR fonttab name := "fonttab.epson.lq"; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + +INT VAR pr channel; +TEXT VAR buffer; + +command dialogue (TRUE); +ask for print channel; +ask for paper format; +ask for print quality; +load font table; +forget (printer name, quiet); +IF multi user THEN generate printer spool FI; +check on; +. + ask for print channel : + line; + put ("gib Druckerkanal:"); + get (pr channel); + print channel (pr channel); + line; +. + ask for paper format : + SELECT paper format OF + CASE 1 : papersize ( 8.0 * 2.54, 12.0 * 2.54) + CASE 2 : papersize (13.2 * 2.54, 12.0 * 2.54) + CASE 3 : papersize (21.0, 29.7) + END SELECT + + . paper format : + line; + REP out (up); + IF yes ("Papierformat : endlos, 8 Zoll breit") + THEN LEAVE paper format WITH 1 FI; + out (up); + IF yes ("Papierformat : endlos, 13.2 Zoll breit") + THEN LEAVE paper format WITH 2 FI; + out (up); + IF yes ("Papierformat : DINA 4") + THEN LEAVE paper format WITH 3 FI; + PER; + 0 +. + ask for print quality : + line; + std quality (quality); + + . quality : + REP out (up); + IF yes ("standardm„áige Druckqualit„t : draft quality") + THEN LEAVE quality WITH "draft" FI; + out (up); + IF yes ("standardm„áige Druckqualit„t : near letter quality") + THEN LEAVE quality WITH "nlq" FI; + PER; + "" +. + load font table : + IF NOT exists (fonttab name) + THEN command dialogue (TRUE); + REP line (2); + putline ("Bitte Archiv mit der Fonttabelle """ + + fonttab name + """ einlegen!"); + line; + UNTIL yes ("Archiv eingelegt") PER; + reserve archive; + fetch (fonttab name, archive); + release (archive); + FI; + font table (fonttab name); + IF multi user + THEN command dialogue (FALSE); + do ("save(""" + font tab name + """,task(""configurator""))") + FI; + forget (fonttab name, quiet); + + . 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; + +. generate printer spool : + eumel must advertise; + cursor (1, 12); + 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 (4); + putline ("Generierung beendet, weiter mit 'SV'"); + generate printer server; + do (buffer); + +. generate printer server : + buffer := "break (quiet);"; + buffer CAT "spool manager (PROC printer);"; + buffer CAT "INT VAR reply; DATASPACE VAR ds; FILE VAR file;"; + buffer CAT "PROC printer:"; + buffer CAT " disable stop;"; + buffer CAT " continue (server channel);"; + buffer CAT " check error (error message);"; + buffer CAT " ds := nilspace;"; + buffer CAT " REP forget (ds);"; + buffer CAT " execute print;"; + buffer CAT " IF is error AND online THEN put error; clear error; FI;"; + buffer CAT " PER;"; + buffer CAT "END PROC printer;"; + buffer CAT "PROC execute print:"; + buffer CAT " LET ack = 0, fetch code = 11, file type = 1003;"; + buffer CAT " enable stop;"; + buffer CAT " ds := nilspace;"; + buffer CAT " call (father, fetch code, ds, reply);"; + buffer CAT " IF reply = ack CAND type (ds) = file type"; + buffer CAT " THEN file := sequential file (input, ds);"; + buffer CAT " print (file,"; + buffer CAT " PROC (INT CONST, INT VAR, INT VAR) open,"; + buffer CAT " PROC (INT CONST, INT CONST) close,"; + buffer CAT " PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute);"; + buffer CAT " FI;"; + buffer CAT "END PROC execute print;"; + buffer CAT "PROC check error(TEXT CONST message):"; + buffer CAT " IF is error"; + buffer CAT " THEN clear error; rename myself (message);"; + buffer CAT " IF is error THEN end(myself) FI;"; + buffer CAT " pause (9000); end(myself);"; + buffer CAT " FI;"; + buffer CAT "END PROC check error;"; diff --git a/system/printer-9nadel/1986/src/printer.epson.mx b/system/printer-9nadel/1986/src/printer.epson.mx new file mode 100644 index 0000000..2d81d7a --- /dev/null +++ b/system/printer-9nadel/1986/src/printer.epson.mx @@ -0,0 +1,488 @@ +PACKET epson mx printer + +(**************************************************************************) +(* Stand : 29.07.86 *) +(* EPSON MX-80 TYPE III Version : 4 *) +(* Autor : Rudolf Ruland *) +(**************************************************************************) + + + DEFINES open, + close, + execute, + + paper size, + std speed : + +LET underline = 1, + bold = 2, +(* italics = 4, + reverse = 8, *) + + underline linetype = 1, + + c document = 1, + c page = 2, + + c write text = 1, + c write cmd = 2, + c carriage return = 3, + c move = 4, + c draw = 5, + c on = 6, + c off = 7, + c type = 8; + +INT VAR blankbreite, x rest, y rest, high, low, small; +BOOL VAR is underline, is bold, is condensed, is small, is slow; +REAL VAR x size, y size; +TEXT VAR std speed name; + +(*********************************************************************) + +paper size (8.0 * 2.54, 12.0 * 2.54); +std speed ("slow"); + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; + +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); + +END PROC paper size; + + +PROC std speed (TEXT CONST speed) : + + IF speed = "fast" OR speed = "slow" + THEN std speed name := speed; + ELSE errorstop ("unzulaessige Geschwindigkeit") + FI; + +END PROC std speed; + +TEXT PROC std speed : std speed name END PROC std speed; + +(*********************************************************************) + +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE c document : open document + CASE c page : open page +END SELECT; + + +. x steps : param1 +. y steps : param2 +. + open document : + IF pos (material, "slow") <> 0 + THEN is slow := TRUE; + ELIF pos (material, "fast") <> 0 + THEN is slow := FALSE; + ELSE is slow := std speed name = "slow" + FI; + is underline := FALSE; + is bold := FALSE; + x steps := x step conversion ( x size ); + y steps := y step conversion ( y size ); + y steps := (y steps DIV 36) * 36; + out (""27"R"0""27""64""); (* Reset des Druckers *) + out (""27"R"0""); (* Amerikanischer Zeichensatz *) + out (""27"C" + code (y steps DIV 36)); (* Formularlaenge *) + + +. x start : param1 +. y start : param2 +. + open page : + x start := 0; + y start := 0; + x rest := 0; + y rest := 0; + small := 0; + out (""13""); + +END PROC open; + + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE c document : close document + CASE c page : close page +END SELECT; + +. + close document : + + +. remaining y steps : param1 +. + close page : + IF remaining y steps > 0 THEN out (""12"") FI + +END PROC close; + + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE c write text : write text + CASE c write cmd : write cmd + CASE c carriage return : carriage return + CASE c move : move + CASE c draw : draw + CASE c on : on + CASE c off : off + CASE c type : type +END SELECT + + +. from : param1 +. to : param2 +. + write text : + out subtext (string, from, to) + +. + write cmd : + out subtext (string, from, to) + + +(*. x steps to left margin : param1*) +. + carriage return : + y rest INCR small; + x rest := 0; + small := 0; + out (""13""); + + +. x steps : param1 +. y steps : param2 +. + move : + IF x steps < 0 OR y steps < 0 + THEN stop + ELIF x steps > 0 + THEN x move + ELIF y steps > 0 + THEN y move + FI; + + . x move : + high := (x steps + x rest) DIV blankbreite; + low := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF low > 0 AND is slow + THEN IF is underline THEN out ("_"8"") FI; + IF is condensed + THEN high := low; + low := 0; + out (""27"L"+ code (high) + ""0""); + ELSE high := low DIV 2; + low := low MOD 2; + out (""27"K"+ code (high) + ""0""); + FI; + high TIMESOUT ""0""; + IF is small + THEN out (""27"S"1""); + small DECR 1; + FI; + FI; + x rest := low; + + . y move : + y rest INCR y steps; + IF y rest > 0 + THEN high := y rest DIV 255; + low := y rest MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + y rest := 0; + FI; + +. + draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> underline linetype + THEN stop + ELIF x steps > 0 + THEN x draw + FI; + + . x draw : + high := x steps DIV 256; + low := x steps MOD 256; + out (""27"L"); + out (code (low)); + out (code (high)); + x steps TIMESOUT ""1""; + IF is small THEN out (""27"S"1"") FI; + + +. modification : param1 +. + on : + IF on string (modification) <> "" + THEN out (on string (modification)); + IF modification = underline THEN is underline := TRUE FI; + IF modification = bold THEN is bold := TRUE FI; + ELSE stop + FI; + +. + off : + IF off string (modification) <> "" + THEN out (off string (modification)); + IF modification = underline THEN is underline := FALSE FI; + IF modification = bold THEN is bold := FALSE FI; + ELSE stop + FI; + + +. font nr : param1 +. + type : + blankbreite := char pitch (font nr, " "); + is condensed := pos (font string (font nr), ""15"") <> 0; + IF pos (font string (font nr), ""27"S") <> 0 + THEN small DECR 1; + is small := TRUE; + ELSE is small := FALSE; + FI; + out (font string (font nr)); + IF is bold THEN out (on string (bold)) FI; + +END PROC execute; + + +END PACKET epson mx printer; + + +PACKET print cmd for single user (* Autor : Rudolf Ruland *) + (* Stand : 19.02.86 *) + DEFINES print, + print channel : + +INT VAR pr channel; +TEXT VAR buffer; +FILE VAR print file; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + + +PROC print channel (INT CONST channel) : + + IF multi user THEN do ("serverchannel(" + text (channel) + ")" ) FI; + pr channel := channel; + +END PROC print channel; + +INT PROC print channel : pr channel END PROC print channel; + + +PROC print : + + print (last param) + +ENDPROC print ; + +PROC print (TEXT CONST file name) : + + INT CONST myself channel := channel (myself); + last param (file name) ; + print file := sequential file (input, file name) ; + continue (print channel) ; + disable stop ; + execute print ; + remember error message if neccessary; + IF multi user THEN do ("break (quiet)") FI; + continue (myself channel); + clear error; + put error message if neccessary; + + . remember error message if neccessary : + IF is error + THEN buffer := error message; + clear error; + ELSE buffer := ""; + FI; + + . put error message if neccessary : + IF buffer <> "" THEN errorstop (buffer) FI; + +ENDPROC print ; + +PROC execute print : + + enable stop ; + print (print file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + +ENDPROC execute print ; + +ENDPACKET print cmd for single user; + +#page# +(******************************************************************) +(*** ***) +(*** Generierung des Printers ***) +(*** ***) +(******************************************************************) + +LET printer name = "printer.epson.mx", + up = ""3""13""5""; + +TEXT VAR fonttab name := "fonttab.epson.mx"; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + +INT VAR pr channel; +TEXT VAR buffer; + +command dialogue (TRUE); +ask for print channel; +ask for paper format; +ask for positioning; +load font table; +forget (printer name, quiet); +IF multi user THEN generate printer spool FI; +check on; +. + ask for print channel : + line; + put ("gib Druckerkanal:"); + get (pr channel); + print channel (pr channel); + line; +. + ask for paper format : + SELECT paper format OF + CASE 1 : papersize ( 8.0 * 2.54, 12.0 * 2.54) + CASE 2 : papersize (13.2 * 2.54, 12.0 * 2.54) + CASE 3 : papersize (21.0, 29.7) + END SELECT + + . paper format : + line; + REP out (up); + IF yes ("Papierformat : endlos, 8 Zoll breit") + THEN LEAVE paper format WITH 1 FI; + out (up); + IF yes ("Papierformat : endlos, 13.2 Zoll breit") + THEN LEAVE paper format WITH 2 FI; + out (up); + IF yes ("Papierformat : DINA 4") + THEN LEAVE paper format WITH 3 FI; + PER; + 0 +. + ask for positioning : + line; + std speed (positioning); + + . positioning : + REP out (up); + IF yes ("x - Positionierung : in Mikroschritten (genauer, aber langsamer)") + THEN LEAVE positioning WITH "slow" FI; + out (up); + IF yes ("x - Positionierung : in Blanks (schneller, aber ungenauer)") + THEN LEAVE positioning WITH "fast" FI; + PER; + "" +. + load font table : + IF NOT exists (fonttab name) + THEN command dialogue (TRUE); + REP line (2); + putline ("Bitte Archiv mit der Fonttabelle """ + + fonttab name + """ einlegen!"); + line; + UNTIL yes ("Archiv eingelegt") PER; + reserve archive; + fetch (fonttab name, archive); + release (archive); + FI; + font table (fonttab name); + IF multi user + THEN command dialogue (FALSE); + do ("save(""" + font tab name + """,task(""configurator""))") + FI; + forget (fonttab name, quiet); + + . 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; + +. generate printer spool : + eumel must advertise; + cursor (1, 12); + 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 (4); + putline ("Generierung beendet, weiter mit 'SV'"); + generate printer server; + do (buffer); + +. generate printer server : + buffer := "break (quiet);"; + buffer CAT "spool manager (PROC printer);"; + buffer CAT "INT VAR reply; DATASPACE VAR ds; FILE VAR file;"; + buffer CAT "PROC printer:"; + buffer CAT " disable stop;"; + buffer CAT " continue (server channel);"; + buffer CAT " check error (error message);"; + buffer CAT " ds := nilspace;"; + buffer CAT " REP forget (ds);"; + buffer CAT " execute print;"; + buffer CAT " IF is error AND online THEN put error; clear error; FI;"; + buffer CAT " PER;"; + buffer CAT "END PROC printer;"; + buffer CAT "PROC execute print:"; + buffer CAT " LET ack = 0, fetch code = 11, file type = 1003;"; + buffer CAT " enable stop;"; + buffer CAT " ds := nilspace;"; + buffer CAT " call (father, fetch code, ds, reply);"; + buffer CAT " IF reply = ack CAND type (ds) = file type"; + buffer CAT " THEN file := sequential file (input, ds);"; + buffer CAT " print (file,"; + buffer CAT " PROC (INT CONST, INT VAR, INT VAR) open,"; + buffer CAT " PROC (INT CONST, INT CONST) close,"; + buffer CAT " PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute);"; + buffer CAT " FI;"; + buffer CAT "END PROC execute print;"; + buffer CAT "PROC check error(TEXT CONST message):"; + buffer CAT " IF is error"; + buffer CAT " THEN clear error; rename myself (message);"; + buffer CAT " IF is error THEN end(myself) FI;"; + buffer CAT " pause (9000); end(myself);"; + buffer CAT " FI;"; + buffer CAT "END PROC check error;"; diff --git a/system/printer-9nadel/1986/src/printer.epson.rx b/system/printer-9nadel/1986/src/printer.epson.rx new file mode 100644 index 0000000..0d2326e --- /dev/null +++ b/system/printer-9nadel/1986/src/printer.epson.rx @@ -0,0 +1,446 @@ +PACKET epson rx printer + +(**************************************************************************) +(* Stand : 29.07.86 *) +(* EPSON RX-80 F/T + Version : 4 *) +(* Autor : Rudolf Ruland *) +(**************************************************************************) + + DEFINES open, + close, + execute, + + paper size, + std speed : + +LET underline = 1, +(* bold = 2, + italics = 4, + reverse = 8,*) + + underline linetype = 1, + + c document = 1, + c page = 2, + + c write text = 1, + c write cmd = 2, + c carriage return = 3, + c move = 4, + c draw = 5, + c on = 6, + c off = 7, + c type = 8; + +INT VAR blankbreite, x rest, y rest, high, low, small; +BOOL VAR is underline, is slow; +REAL VAR x size, y size; +TEXT VAR std speed name; + +(*********************************************************************) + +paper size (8.0 * 2.54, 12.0 * 2.54); +std speed ("slow"); + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; + +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); + +END PROC paper size; + + +PROC std speed (TEXT CONST speed) : + + IF speed = "fast" OR speed = "slow" + THEN std speed name := speed; + ELSE errorstop ("unzulaessige Geschwindigkeit") + FI; + +END PROC std speed; + +TEXT PROC std speed : std speed name END PROC std speed; + +(*********************************************************************) + +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE c document : open document + CASE c page : open page +END SELECT; + + +. x steps : param1 +. y steps : param2 +. + open document : + IF pos (material, "slow") <> 0 + THEN is slow := TRUE; + ELIF pos (material, "fast") <> 0 + THEN is slow := FALSE; + ELSE is slow := std speed name = "slow" + FI; + is underline := FALSE; + x steps := x step conversion ( x size ); + y steps := y step conversion ( y size ); + y steps := (y steps DIV 36) * 36; + out (""27""64""); (* Reset des Druckers *) + out (""27"R"0""); (* Amerikanischer Zeichensatz *) + out (""27"C" + code (y steps DIV 36)); (* Formularlaenge *) + out (""27"m"4""); (* graphischer Zeichensatz *) + + +. x start : param1 +. y start : param2 +. + open page : + x start := 0; + y start := 0; + x rest := 0; + y rest := 0; + small := 0; + out (""13""); + +END PROC open; + + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE c document : close document + CASE c page : close page +END SELECT; + +. + close document : + + +. remaining y steps : param1 +. + close page : + IF remaining y steps > 0 THEN out (""12"") FI + +END PROC close; + + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE c write text : write text + CASE c write cmd : write cmd + CASE c carriage return : carriage return + CASE c move : move + CASE c draw : draw + CASE c on : on + CASE c off : off + CASE c type : type +END SELECT + + +. from : param1 +. to : param2 +. + write text : + out subtext (string, from, to) + +. + write cmd : + out subtext (string, from, to) + + +(*. x steps to left margin : param1*) +. + carriage return : + y rest INCR small; + x rest := 0; + small := 0; + out (""13""); + + +. x steps : param1 +. y steps : param2 +. + move : + IF x steps < 0 OR y steps < 0 + THEN stop + ELIF x steps > 0 + THEN x move + ELIF y steps > 0 + THEN y move + FI; + + . x move : + high := (x steps + x rest) DIV blankbreite; + low := (x steps + x rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + IF low > 0 AND is slow + THEN IF is underline THEN out (" "8"") FI; + out (""27"Y"+ code (low) + ""0""); + low TIMESOUT ""0""; + x rest := 0; + ELSE x rest := low; + FI; + + . y move : + y rest INCR y steps; + IF y rest > 0 + THEN high := y rest DIV 255; + low := y rest MOD 255; + IF high > 0 THEN high TIMESOUT ""27"J"255"" FI; + IF low > 0 THEN out (""27"J"); out (code (low)) FI; + y rest := 0; + FI; + +. + draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> underline linetype + THEN stop + ELIF x steps > 0 + THEN x draw + FI; + + . x draw : + high := x steps DIV 256; + low := x steps MOD 256; + out (""27"Y"); + out (code (low)); + out (code (high)); + x steps TIMESOUT ""1""; + + +. modification : param1 +. + on : + IF on string (modification) <> "" + THEN out (on string (modification)); + IF modification = underline THEN is underline := TRUE FI; + ELSE stop + FI; + +. + off : + IF off string (modification) <> "" + THEN out (off string (modification)); + IF modification = underline THEN is underline := FALSE FI; + ELSE stop + FI; + + +. font nr : param1 +. + type : + blankbreite := char pitch (font nr, " "); + IF pos (font string (font nr), ""27"S") <> 0 THEN small DECR 1 FI; + out (font string (font nr)); + +END PROC execute; + + +END PACKET epson rx printer; + + +PACKET print cmd for single user (* Autor : Rudolf Ruland *) + (* Stand : 19.02.86 *) + DEFINES print, + print channel : + +INT VAR pr channel; +TEXT VAR buffer; +FILE VAR print file; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + + +PROC print channel (INT CONST channel) : + + IF multi user THEN do ("serverchannel(" + text (channel) + ")" ) FI; + pr channel := channel; + +END PROC print channel; + +INT PROC print channel : pr channel END PROC print channel; + + +PROC print : + + print (last param) + +ENDPROC print ; + +PROC print (TEXT CONST file name) : + + INT CONST myself channel := channel (myself); + last param (file name) ; + print file := sequential file (input, file name) ; + continue (print channel) ; + disable stop ; + execute print ; + remember error message if neccessary; + IF multi user THEN do ("break (quiet)") FI; + continue (myself channel); + clear error; + put error message if neccessary; + + . remember error message if neccessary : + IF is error + THEN buffer := error message; + clear error; + ELSE buffer := ""; + FI; + + . put error message if neccessary : + IF buffer <> "" THEN errorstop (buffer) FI; + +ENDPROC print ; + +PROC execute print : + + enable stop ; + print (print file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + +ENDPROC execute print ; + +ENDPACKET print cmd for single user; + +#page# +(******************************************************************) +(*** ***) +(*** Generierung des Printers ***) +(*** ***) +(******************************************************************) + +LET printer name = "printer.epson.rx", + up = ""3""13""5""; + +TEXT VAR fonttab name := "fonttab.epson.rx"; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + +INT VAR pr channel; +TEXT VAR buffer; + +command dialogue (TRUE); +ask for print channel; +ask for positioning; +load font table; +forget (printer name, quiet); +IF multi user THEN generate printer spool FI; +check on; +. + ask for print channel : + line; + put ("gib Druckerkanal:"); + get (pr channel); + print channel (pr channel); + line; +. + ask for positioning : + line; + std speed (positioning); + + . positioning : + REP out (up); + IF yes ("x - Positionierung : in Mikroschritten (genauer, aber langsamer)") + THEN LEAVE positioning WITH "slow" FI; + out (up); + IF yes ("x - Positionierung : in Blanks (schneller, aber ungenauer)") + THEN LEAVE positioning WITH "fast" FI; + PER; + "" +. + load font table : + IF NOT exists (fonttab name) + THEN command dialogue (TRUE); + REP line (2); + putline ("Bitte Archiv mit der Fonttabelle """ + + fonttab name + """ einlegen!"); + line; + UNTIL yes ("Archiv eingelegt") PER; + reserve archive; + fetch (fonttab name, archive); + release (archive); + FI; + font table (fonttab name); + IF multi user + THEN command dialogue (FALSE); + do ("save(""" + font tab name + """,task(""configurator""))") + FI; + forget (fonttab name, quiet); + + . 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; + +. generate printer spool : + eumel must advertise; + cursor (1, 12); + 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 (4); + putline ("Generierung beendet, weiter mit 'SV'"); + generate printer server; + do (buffer); + +. generate printer server : + buffer := "break (quiet);"; + buffer CAT "spool manager (PROC printer);"; + buffer CAT "INT VAR reply; DATASPACE VAR ds; FILE VAR file;"; + buffer CAT "PROC printer:"; + buffer CAT " disable stop;"; + buffer CAT " continue (server channel);"; + buffer CAT " check error (error message);"; + buffer CAT " ds := nilspace;"; + buffer CAT " REP forget (ds);"; + buffer CAT " execute print;"; + buffer CAT " IF is error AND online THEN put error; clear error; FI;"; + buffer CAT " PER;"; + buffer CAT "END PROC printer;"; + buffer CAT "PROC execute print:"; + buffer CAT " LET ack = 0, fetch code = 11, file type = 1003;"; + buffer CAT " enable stop;"; + buffer CAT " ds := nilspace;"; + buffer CAT " call (father, fetch code, ds, reply);"; + buffer CAT " IF reply = ack CAND type (ds) = file type"; + buffer CAT " THEN file := sequential file (input, ds);"; + buffer CAT " print (file,"; + buffer CAT " PROC (INT CONST, INT VAR, INT VAR) open,"; + buffer CAT " PROC (INT CONST, INT CONST) close,"; + buffer CAT " PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute);"; + buffer CAT " FI;"; + buffer CAT "END PROC execute print;"; + buffer CAT "PROC check error(TEXT CONST message):"; + buffer CAT " IF is error"; + buffer CAT " THEN clear error; rename myself (message);"; + buffer CAT " IF is error THEN end(myself) FI;"; + buffer CAT " pause (9000); end(myself);"; + buffer CAT " FI;"; + buffer CAT "END PROC check error;"; diff --git a/system/printer-9nadel/1986/src/printer.std b/system/printer-9nadel/1986/src/printer.std new file mode 100644 index 0000000..ec6bad6 --- /dev/null +++ b/system/printer-9nadel/1986/src/printer.std @@ -0,0 +1,431 @@ +PACKET std printer + +(************************************************************************) +(* Stand : 29.07.86 *) +(* STANDARD PRINTER Version : 4 *) +(* Autor : Rudolf Ruland *) +(************************************************************************) + + DEFINES open, + close, + execute, + + paper size : + +LET underline = 1, + bold = 2, + italics = 4, + reverse = 8, + + underline linetype = 1, + + c document = 1, + c page = 2, + + c write text = 1, + c write cmd = 2, + c carriage return = 3, + c move = 4, + c draw = 5, + c on = 6, + c off = 7, + c type = 8; + +INT VAR high, rest, blankbreite; +REAL VAR x size, y size; + +(*********************************************************************) + +paper size (8.0 * 2.54, 12.0 * 2.54); + +PROC paper size (REAL CONST x, y) : + + x size := x; + y size := y; + +END PROC paper size; + +PROC paper size : + + line; + putline ("Papierbreite = " + text (x size, 5, 2) + " cm = " + text (x size / 2.54, 5, 2) + " Zoll"); + putline ("Papierlaenge = " + text (y size, 5, 2) + " cm = " + text (y size / 2.54, 5, 2) + " Zoll"); + +END PROC paper size; + +(*********************************************************************) + +PROC open (INT CONST op code, INT VAR param1, param2) : + +SELECT op code OF + CASE c document : open document + CASE c page : open page +END SELECT; + + +. x steps : param1 +. y steps : param2 +. + open document : + x steps := x step conversion ( x size ); + y steps := y step conversion ( y size ); + out (off string (underline)); + out (off string (bold)); + out (off string (italics)); + out (off string (reverse)); + + +. x start : param1 +. y start : param2 +. + open page : + x start := 0; + y start := 0; + rest := 0; + out (""13""); + +END PROC open; + + +PROC close (INT CONST op code, INT CONST param1) : + +SELECT op code OF + CASE c document : close document + CASE c page : close page +END SELECT; + +. + close document : + + +. remaining y steps : param1 +. + close page : + remaining y steps TIMESOUT ""10"" + +END PROC close; + + +PROC execute (INT CONST op code, TEXT CONST string, INT CONST param1, param2) : + +SELECT op code OF + CASE c write text : write text + CASE c write cmd : write cmd + CASE c carriage return : carriage return + CASE c move : move + CASE c draw : draw + CASE c on : on + CASE c off : off + CASE c type : type +END SELECT + + +. from : param1 +. to : param2 +. + write text : + out subtext (string, from, to) + +. + write cmd : + out subtext (string, from, to) + + +(*. x steps to left margin : param1*) +. + carriage return : + rest := 0; + out (""13"") + + +. x steps : param1 +. y steps : param2 +. + move : + IF x steps < 0 OR y steps < 0 + THEN stop + ELIF x steps > 0 + THEN x move + ELIF y steps > 0 + THEN y move + FI; + + . x move : + high := (x steps + rest) DIV blankbreite; + rest := (x steps + rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT " " FI; + + . y move : + y steps TIMESOUT ""10"" + +. + draw : + IF x steps < 0 OR y steps <> 0 OR linetype <> underline linetype + THEN stop + ELSE x draw + FI + + . x draw : + high := (x steps + rest) DIV blankbreite; + rest := (x steps + rest) MOD blankbreite; + IF high > 0 THEN high TIMESOUT "_" FI; + + +. modification : param1 +. + on : + IF on string (modification) <> "" + THEN out (on string (modification)) + ELSE stop + FI + +. + off : + IF off string (modification) <> "" + THEN out (off string (modification)) + ELSE stop + FI + + +. font nr : param1 +. + type : + blankbreite := char pitch (font nr, " "); + out (font string (font nr)); + +END PROC execute; + + +END PACKET std printer; + + +PACKET print cmd for single user (* Autor : Rudolf Ruland *) + (* Stand : 18.02.86 *) + DEFINES print, + print channel : + +INT VAR pr channel; +TEXT VAR buffer; +FILE VAR print file; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + + +PROC print channel (INT CONST channel) : + + IF multi user THEN do ("serverchannel(" + text (channel) + ")" ) FI; + pr channel := channel; + +END PROC print channel; + +INT PROC print channel : pr channel END PROC print channel; + + +PROC print : + + print (last param) + +ENDPROC print ; + +PROC print (TEXT CONST file name) : + + INT CONST myself channel := channel (myself); + last param (file name) ; + print file := sequential file (input, file name) ; + continue (print channel) ; + disable stop ; + execute print ; + remember error message if neccessary; + IF multi user THEN do ("break (quiet)") FI; + continue (myself channel); + clear error; + put error message if neccessary; + + . remember error message if neccessary : + IF is error + THEN buffer := error message; + clear error; + ELSE buffer := ""; + FI; + + . put error message if neccessary : + IF buffer <> "" THEN errorstop (buffer) FI; + +ENDPROC print ; + +PROC execute print : + + enable stop ; + print (print file, + PROC (INT CONST, INT VAR, INT VAR) open, + PROC (INT CONST, INT CONST) close, + PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute); + +ENDPROC execute print ; + +ENDPACKET print cmd for single user; + +#page# +(******************************************************************) +(*** ***) +(*** Generierung des Printers ***) +(*** ***) +(******************************************************************) + +LET printer name = "printer.std", + up = ""3""13""5"" ; + +TEXT VAR fonttab name := "fonttab.std"; + +BOOL CONST multi user := (pcb (9) AND 255) <> 1; + +INT VAR pr channel; +TEXT VAR buffer; + +command dialogue (TRUE); +ask for print channel; +ask for paper format; +ask for font table; +load font table; +forget (printer name, quiet); +IF multi user THEN generate printer spool FI; +check on; +. + ask for print channel : + line; + put ("gib Druckerkanal:"); + get (pr channel); + print channel (pr channel); + line; +. + ask for paper format : + SELECT paper format OF + CASE 1 : papersize ( 8.0 * 2.54, 12.0 * 2.54) + CASE 2 : papersize (13.2 * 2.54, 12.0 * 2.54) + CASE 3 : papersize (21.0, 29.7) + END SELECT + + . paper format : + line; + REP out (up); + IF yes ("Papierformat : endlos, 8 Zoll breit") + THEN LEAVE paper format WITH 1 FI; + out (up); + IF yes ("Papierformat : endlos, 13.2 Zoll breit") + THEN LEAVE paper format WITH 2 FI; + out (up); + IF yes ("Papierformat : DINA 4") + THEN LEAVE paper format WITH 3 FI; + PER; + 0 +. + ask for font table : + line; + fonttab name CAT char pitch; + line; + fonttab name CAT language + + . char pitch : + REP out (up); + IF yes ("Zeichenbreite des Druckers : 10 Zeichen pro Zoll") + THEN LEAVE char pitch WITH "-10" FI; + out (up); + IF yes ("Zeichenbreite des Druckers : 12 Zeichen pro Zoll") + THEN LEAVE char pitch WITH "-12" FI; + PER; + "" + + . language : + REP out (up); + IF yes ("Zeichensatz des Druckers : deutsch") + THEN LEAVE language WITH "" FI; + out (up); + IF yes ("Zeichensatz des Druckers : ascii") + THEN LEAVE language WITH ".ascii" FI; + PER; + "" +. + load font table : + IF NOT exists (fonttab name) + THEN command dialogue (TRUE); + REP line (2); + putline ("Bitte Archiv mit der Fonttabelle """ + + fonttab name + """ einlegen!"); + line; + UNTIL yes ("Archiv eingelegt") PER; + reserve archive; + fetch (fonttab name, archive); + release (archive); + FI; + font table (fonttab name); + IF multi user + THEN command dialogue (FALSE); + do ("save(""" + font tab name + """,task(""configurator""))") + FI; + forget (fonttab name, quiet); + + . 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; + +. generate printer spool : + eumel must advertise; + cursor (1, 12); + 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 (4); + putline ("Generierung beendet, weiter mit 'SV'"); + generate printer server; + do (buffer); + +. generate printer server : + buffer := "break (quiet);"; + buffer CAT "spool manager (PROC printer);"; + buffer CAT "INT VAR reply; DATASPACE VAR ds; FILE VAR file;"; + buffer CAT "PROC printer:"; + buffer CAT " disable stop;"; + buffer CAT " continue (server channel);"; + buffer CAT " check error (error message);"; + buffer CAT " ds := nilspace;"; + buffer CAT " REP forget (ds);"; + buffer CAT " execute print;"; + buffer CAT " IF is error AND online THEN put error; clear error; FI;"; + buffer CAT " PER;"; + buffer CAT "END PROC printer;"; + buffer CAT "PROC execute print:"; + buffer CAT " LET ack = 0, fetch code = 11, file type = 1003;"; + buffer CAT " enable stop;"; + buffer CAT " ds := nilspace;"; + buffer CAT " call (father, fetch code, ds, reply);"; + buffer CAT " IF reply = ack CAND type (ds) = file type"; + buffer CAT " THEN file := sequential file (input, ds);"; + buffer CAT " print (file,"; + buffer CAT " PROC (INT CONST, INT VAR, INT VAR) open,"; + buffer CAT " PROC (INT CONST, INT CONST) close,"; + buffer CAT " PROC (INT CONST, TEXT CONST, INT CONST, INT CONST) execute);"; + buffer CAT " FI;"; + buffer CAT "END PROC execute print;"; + buffer CAT "PROC check error(TEXT CONST message):"; + buffer CAT " IF is error"; + buffer CAT " THEN clear error; rename myself (message);"; + buffer CAT " IF is error THEN end(myself) FI;"; + buffer CAT " pause (9000); end(myself);"; + buffer CAT " FI;"; + buffer CAT "END PROC check error;"; -- cgit v1.2.3