From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- support/pictex-converter/PiCUNIX.PASCAL | 937 +++++++++++++++++++++ support/pictex-converter/piccon1.uue | 386 +++++++++ support/pictex-converter/piccon2.uue | 419 ++++++++++ support/pictex-converter/picconv.anleit | 13 + support/pictex-converter/picconv.lzh | Bin 0 -> 35840 bytes support/pictex-converter/pictex.info-cb | 39 + support/pictex-converter/pictexte.pas | 1391 +++++++++++++++++++++++++++++++ 7 files changed, 3185 insertions(+) create mode 100644 support/pictex-converter/PiCUNIX.PASCAL create mode 100644 support/pictex-converter/piccon1.uue create mode 100644 support/pictex-converter/piccon2.uue create mode 100644 support/pictex-converter/picconv.anleit create mode 100644 support/pictex-converter/picconv.lzh create mode 100644 support/pictex-converter/pictex.info-cb create mode 100644 support/pictex-converter/pictexte.pas (limited to 'support/pictex-converter') diff --git a/support/pictex-converter/PiCUNIX.PASCAL b/support/pictex-converter/PiCUNIX.PASCAL new file mode 100644 index 0000000000..426a047895 --- /dev/null +++ b/support/pictex-converter/PiCUNIX.PASCAL @@ -0,0 +1,937 @@ +(********************************************************************** +Received: from DGOGWDG1 by DGOGWDG1.BITNET (Mailer R2.07) with BSMTP id 6886; + Fri, 26 Jul 91 19:02:21 MSZ +Received: from mars.gwdg.de by ibm.gwdg.de (IBM VM SMTP R1.2.2MX) with TCP; Fri, + 26 Jul 91 19:02:17 MSZ +Received: by mars.gwdg.de (5.51.2/Apollo-Domain/OS-SR10.1) + id AA05383; Fri, 26 Jul 91 19:02:39 +0100 +Date: Fri, 26 Jul 91 19:02:39 +0100 +From: frerichs@mars.gwdg.de (Martin Frerichs) +Message-Id: <9107261802.AA05383@mars.gwdg.de> +To: I2010506@dbstu1.bitnet +***********************************************************************) +PROGRAM PicTeX; + +Label 9999; + +CONST Debug = False; + +TYPE styp = (right,left); + byte = 0..255; + var_string = varying[256] of char; + +VAR aus : text; + ausn,oben,unten,rechts,links,eingabe,ausgabe, + savename,savekomm,unterschrift,labelstr,ueberschrift : + var_string; + unitx,unity, xmax,xmin,ymax,ymin,dx,dy,dxsub,dysub,breite,hoehe, + unitry,rymin,rymax,rdy,rdysub : real; + fertig,rechteachse,xlog,ylog,rylog,xkreuz,ykreuz,rykreuz : boolean; + replot,finalplot : boolean; + ydez,xdez,rydez : byte; + ch,sprache : char; + seite : styp; + +PROCEDURE read_value_eof(VAR datei : text; VAR wert : real; VAR Ende : boolean); +BEGIN + Ende := eof(datei); + IF not Ende THEN + BEGIN + read(datei,wert); + Ende := eof(datei); + END; + END; + +(****************************************************************************) +(* Zehner-Logarithmus von 'x': *) + +FUNCTION lg(x: real): real; + +CONST rez_ln_10 = 0.4342944819; (* rez_ln_10 = 1 / ln(10) *) + +BEGIN + lg :=0; + IF x > 0.0 THEN + lg := Ln(x) * rez_ln_10 + ELSE + writeln('Argumentfehler: lg(x): x <= 0 !!!') +END; + +(****************************************************************************) +(* Berechnung von 'x hoch y': *) + +FUNCTION x_hoch_y (x, y: real): real; + +VAR ganz_y: InTEGER; + +BEGIN + IF (x <> 0.0) OR (y <> 0.0) THEN + IF x > 0.0 THEN + x_hoch_y := Exp(y * Ln(x)) + ELSE + BEGIN + ganz_y := Trunc(y); + IF ABS(y) <> ABS(ganz_y) THEN + writeln('x_hoch_y(x,y): nur ganzzahlige Exponenten zulaessig bei x<0') + ELSE + IF x <> 0.0 THEN + IF (ganz_y MOD 2) = 0 THEN + x_hoch_y := Exp(Ln(ABS(x)) * y) + ELSE + x_hoch_y := -Exp(Ln(ABS(x)) * y) (* ungerader Exponent *) + ELSE + x_hoch_y := 0 + END + ELSE + writeln('x_hoch_y(x,y): x = 0 und y = 0') +END; + +(****************************************************************************) + + +(****************************************************************************) +PROCEDURE process_file(seite : styp; + VAR fertig : boolean; + rechteachse,xlogar,ylogar : boolean; + VAR aus : text); + +CONST b1='BEGIN'; + e1='END'; + +VAR einn,symbol,test : var_string; + symbolcount,cur : integer; + ein : text; + anzahl : integer32; + ch : char; + sym,linie,quadratic,clipping,Ende : boolean; + x,y,xa,ya : real; + + FUNCTION betest(t,v : var_string): boolean; + VAR t1 : var_string; + i : byte; + BEGIN + t1.length := 0; + FOR i:=1 TO t.length DO + IF t.body[i] <> ' ' THEN + BEGIN + t1.body[i]:= t.body[i]; + t1.length := t1.length + 1 + END; + IF t1 = v THEN + betest := true + ELSE + betest :=false + END; + +BEGIN {of process_file} + writeln('Ende durch leere Eingabe !!'); + REPEAT + write('Daten -Datei (TechPlot-Format!!) : '); + readln(einn); + IF einn='' THEN + fertig := true + ELSE + fertig := false; + IF not fertig THEN + BEGIN + anzahl := 0; + open(ein,einn,'OLD'); + REPEAT + write('mit Plotsymbol (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + sym := true + ELSE + sym := false; + REPEAT + write('durchgezogene Linie (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + linie := true + ELSE + linie := false; + IF linie THEN + BEGIN + REPEAT + write('Quadratische Interpolation (1) oder Polygonzug (2) ? '); + readln(ch); + UNTIL ((ch='1') or (ch='2')); + IF ch='1' THEN + quadratic := true + ELSE + quadratic := false; + REPEAT + write('Clipping noetig (Achtung, das dauert lange) (j/n) ? '); + readln(ch); + UNTIL ((ch='j') or (ch='n')); + IF ch='j' THEN + clipping := true + ELSE + clipping := false; + END; + IF sym THEN + BEGIN + write('Plotsymbol (LaTeX-Text) : '); + readln(symbol); + REPEAT + write('Plotsymbol jeden n-ten Punkt : n = '); + readln(symbolcount) + UNTIL symbolcount > 0; + reset(ein); + writeln(aus,'%Datei ',einn,' (Symbole)'); + REPEAT + readln(ein,test); + writeln(aus,'%% ',test); + UNTIL ((betest(test,b1)) or eof(ein)); + Ende := false; + IF eof(ein) THEN + Ende := true; + write(aus,'% Daten fuer '); + IF rechteachse THEN + IF (seite=left) THEN + write(aus,'linke ') + ELSE + write (aus,'rechte '); + writeln(aus,'y-Achse ...'); + IF NOT Ende THEN + BEGIN + writeln('\multiput {',symbol,'} at '); + writeln(aus,'\multiput {',symbol,'} at %'); + END; + cur := 0; + WHILE NOT Ende DO + BEGIN + read_value_eof(ein,x,Ende); + read_value_eof(ein,y,Ende); + IF NOT Ende THEN + BEGIN + readln(ein); + anzahl := anzahl + 1; + cur := cur + 1; + IF xlogar THEN + x:=lg(x); + IF ylogar THEN + y:=lg(y); + IF (cur MOD symbolcount) = 0 THEN + BEGIN + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln( x:8:5,' ',y:8:4) + END + END + ELSE + BEGIN + writeln(' /'); + writeln(aus,' /'); + END; + END; + END; + IF linie THEN + BEGIN + reset(ein); + anzahl := 0; + writeln(aus,'%Datei ',einn,' (Linie)'); + REPEAT + readln(ein,test); + writeln(aus,'%% ',test); + UNTIL ((betest(test,b1)) or eof(ein)); + Ende := false; + IF eof(ein) THEN + Ende := true; + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else') + END; + IF clipping THEN + writeln(aus,'\inboundscheckon'); + IF quadratic THEN + writeln(aus,'\setquadratic') + ELSE + writeln(aus,'\setlinear'); + writeln(aus,'\plot '); + WHILE NOT Ende DO + BEGIN + read_value_eof(ein,x,Ende); + read_value_eof(ein,y,Ende); + IF not Ende THEN + BEGIN + readln(ein); + anzahl := anzahl + 1; + IF xlogar THEN + x:=lg(x); + IF ylogar THEN + y:=lg(y); + xa :=x; + ya :=y; + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln( x:8:4,' ',y:8:4); + END; + END; + IF quadratic THEN + IF not odd(anzahl) THEN + writeln(aus,' ',xa*1.00001:8:6,' ',ya*1.00001:8:6,' %'); + writeln(aus,'/'); + IF clipping THEN + writeln(aus,'\inboundscheckoff'); + IF replot THEN + writeln(aus,'\fi') + END; + close(ein); + END + UNTIL fertig +END; {of process_file} + +PROCEDURE Einheiten(VAR unitx,unity,unitry : real; breite,hoehe : real; + rechteachse,xlog,ylog,rylog : boolean); +BEGIN + IF xlog THEN + unitx := breite/(lg(xmax)-lg(xmin)) + ELSE + unitx := breite/(xmax-xmin); + IF ylog THEN + unity := HOEHE/(lg(ymax)-lg(ymin)) + ELSE + unity := hoehe/(ymax-ymin); + IF rechteachse THEN + IF rylog THEN + unitry := hoehe/(lg(rymax)-lg(rymin)) + ELSE + unitry := hoehe/(rymax-rymin) + ELSE unitry :=0; +END; + +PROCEDURE Skala (VAR aus : text; seite : styp; unitx,unity : real; + xlog,ylog,rechteachse,xkreuz,ykreuz : boolean; + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub : real; + xdez,ydez :byte; unten,oben,rechts,links : var_string); +VAR con: text; + + PROCEDURE Log_schrift(VAR aus: text; min,max : real; + markiere,kreuz : boolean); + VAR ort,o2 : real; + expo,code : integer; + stellen,i : byte; + ex : var_string; + BEGIN + IF Debug THEN + BEGIN + writeln; + writeln('Log_Schrift: Parameter'); + writeln('Minimum : ',min ); + writeln('Maximum : ',max ) + END; + writeln(aus,' ticks logged '); + IF kreuz THEN + write(aus,'andacross '); + IF markiere THEN + writeln(aus,'numbered ') + ELSE + writeln(aus,'unlabeled '); + IF markiere THEN + BEGIN {Zahlen dranschreiben} + write(aus,'withvalues '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF ((o2>=min) and (o2<=max)) THEN + write(aus,'$10^{',expo:1,'}$ '); + ort := 2.0*o2; + IF ((ort<=max) and (ort>=min)) THEN + write(aus,'2 '); + ort := 3.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,'3 '); + ort := 5.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,'5 '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + END; + {ticks setzen, normal lang} + write(aus,' at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<0 THEN + stellen := abs(expo) + ELSE + stellen := 0; + IF ((o2>=min) and (o2<=max)) THEN + write(aus,x_hoch_y(10,expo):1:stellen,' '); + {o2 := ort;} + ort := 2.0*o2; + IF ((ort<=max) and (ort>=min)) THEN + write(aus,ort:1:stellen,' '); + ort := 3.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + ort := 5.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + {ticks, immer ohne Beschriftung, lang } + writeln(aus,' unlabeled at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<0 THEN + stellen := abs(expo) + ELSE + stellen :=0; + ort := 4.0*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + FOR i:=6 TO 9 DO + BEGIN + ort := i*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + END; + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); + {ticks, ohne Beschriftung, kurz } + writeln(aus,' unlabeled short at '); + ort := min/10.0; + expo := Round(lg(ort)); + REPEAT + o2 := (x_hoch_y(10,expo)); + IF expo<=0 THEN + stellen := abs(expo)+1 + ELSE + stellen :=0; + FOR i:=1 TO 9 DO + BEGIN + ort := o2*(1.0+i*0.2); {1.2, 1.4, ... 2.8 } + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + END; + ort :=3.5*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + ort :=4.5*o2; + IF ((ort>=min) and (ort<=max)) THEN + write(aus,ort:1:stellen,' '); + expo := expo + 1 + UNTIL ort>max; + writeln(aus,' /'); {letztes "at"} + writeln(aus,' /'); {Ende von "\axis"} + END; { of Log_Schrift} + +BEGIN { of Skala} + open(con,'-STDOUT','UNKNOWN'); + rewrite(con); + write('\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at + '); + IF xlog THEN + write(lg(xmin):1:5,' ') + ELSE + write(xmin:1:5,' '); + IF ylog THEN + writeln(lg(ymin):1:5) + ELSE + writeln(ymin:1:5); + write('\setplotarea x from '); + IF xlog THEN + write(lg(xmin):8:5) + ELSE + write(xmin:8:5); + write(' to '); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(', y from '); + IF ylog THEN + write(lg(ymin):8:5) + ELSE + write(ymin:8:5); + write(' to '); + IF ylog THEN + writeln(lg(ymax):8:5) + ELSE + writeln(ymax:8:5); + IF seite=left THEN + BEGIN + write('\axis bottom shiftedto y='); + IF ylog THEN + write(lg(ymin):8:5) + ELSE + write(ymin:8:5); + write(' label {',unten,'} '); + IF xlog THEN + Log_schrift(con,xmin,xmax,true,xkreuz) + ELSE + writeln(' ticks numbered from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /'); + IF oben <> '' THEN + BEGIN + write('\axis top shiftedto y='); + IF ylog THEN + write(lg(ymax):8:5) + ELSE + write(ymax:8:5); + write(' label {',oben,'} '); + IF xlog THEN + Log_schrift(con,xmin,xmax,false,false) + ELSE + writeln(' ticks unlabeled from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /') + END; + write('\axis left shiftedto x='); + IF xlog THEN + write(lg(xmin):8:5) + ELSE + write(xmin:8:5); + write(' label {',links,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,true,ykreuz) + ELSE + writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + IF not rechteachse THEN + IF rechts <> '' THEN + BEGIN + write('\axis right shiftedto x='); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(' label {',rechts,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,false,false) + ELSE + writeln(' ticks unlabeled from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /') + END + END + ELSE + BEGIN + write('\axis right shiftedto x='); + IF xlog THEN + write(lg(xmax):8:5) + ELSE + write(xmax:8:5); + write(' label {',rechts,'} '); + IF ylog THEN + Log_schrift(con,ymin,ymax,true,ykreuz) + ELSE + writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + END; + close(con); + write(aus,'\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point + at '); + IF xlog THEN + write(aus,lg(xmin):1:6,' ') + ELSE + write(aus,xmin:1:6,' '); + IF ylog THEN + writeln(aus,lg(ymin):1:6) + ELSE + writeln(aus,ymin:1:6); + write(aus,'\setplotarea x from '); + IF xlog THEN + write(aus,lg(xmin):1:6) + ELSE + write(aus,xmin:1:6); + write(aus,' to '); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,', y from '); + IF ylog THEN + write(aus,lg(ymin):1:6) + ELSE + write(aus,ymin:8:5); + write(aus,' to '); + IF ylog THEN + writeln(aus,lg(ymax):1:6) + ELSE + writeln(aus,ymax:1:6); + IF seite=left THEN + BEGIN + write(aus,'\axis bottom shiftedto y='); + IF ylog THEN + write(aus,lg(ymin):1:6) + ELSE + write(aus,ymin:1:6); + write(aus,' label {',unten,'} '); + IF xlog THEN + Log_schrift(aus,xmin,xmax,true,xkreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF xkreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + xmin:1:xdez,' to ',xmax:1:xdez,' by ',dx:1:xdez, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /'); + END; + IF oben <> '' THEN + BEGIN + write(aus,'\axis top shiftedto y='); + IF ylog THEN + write(aus,lg(ymax):1:6) + ELSE + write(aus,ymax:1:6); + write(aus,' label {',oben,'} '); + IF xlog THEN + Log_schrift(aus,xmin,xmax,false,false) + ELSE + writeln(aus,' ticks unlabeled from ', + xmin:1:xdez+2,' to ',xmax:1:xdez+2,' by ',dx:1:xdez+2, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /') + END; + write(aus,'\axis left shiftedto x='); + IF xlog THEN + write(aus,lg(xmin):1:6) + ELSE + write(aus,xmin:1:6); + write(aus,' label {',links,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,true,ykreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF ykreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + END; + IF not rechteachse THEN + IF rechts <> '' THEN + BEGIN + write(aus,'\axis right shiftedto x='); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,false,false) + ELSE + writeln(aus,' ticks unlabeled from ', + ymin:1:ydez+2,' to ',ymax:1:ydez+2,' by ',dy:1:ydez+2, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /') + END + END + ELSE + BEGIN + write(aus,'\axis right shiftedto x='); + IF xlog THEN + write(aus,lg(xmax):1:6) + ELSE + write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + IF ylog THEN + Log_schrift(aus,ymin,ymax,true,ykreuz) + ELSE + BEGIN + write(aus,' ticks '); + IF ykreuz THEN + write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + END; + END; +END; {of Skala} + +BEGIN + writeln; + writeln(' Datei-Konverter Daten -->PiCTeX input ... '); + writeln('(c) Christian Boettger, Inst. f. Metallphysik, TU Braunschweig'); + writeln(' & Martin Frerichs, Inst. f. Theor. Physik, U Goettingen for'); + writeln(' Revised Unix Edition'); + writeln(' Version 1.0.1, 26.7.1991 '); + writeln; + write('PiCTeX-Datei : '); + readln(ausn); + open(aus,ausn,'UNKNOWN'); + rewrite(aus); + writeln; + write('X-Achse : Minimum = '); + readln(xmin); + write('X-Achse : Maximum = '); + readln(xmax); + REPEAT + write('x-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + xlog := true + ELSE xlog := false; + IF not xlog THEN + BEGIN + write('X-Achse : Schrittweite = '); + readln(dx); + write('X-Achse : Schrittweite Sub-Unterteilungen = '); + readln(dxsub); + write('X-Achse : Dezimalstellen der Beschriftung = '); + readln(xdez); + END; + REPEAT + write('x-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + xkreuz := true + ELSE + xkreuz := false; + writeln; + writeln('Eingabe der Daten fuer die (linke) Y-Achse ...'); + write('y-Achse : Minimum = '); + readln(ymin); + write('y-Achse : Maximum = '); + readln(ymax); + REPEAT + write('(linke) y-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + ylog := true + ELSE + ylog := false; + IF not ylog THEN + BEGIN + write('y-Achse : Schrittweite = '); + readln(dy); + write('y-Achse : Schrittweite Sub-Unterteilungen = '); + readln(dysub); + write('y-Achse : Dezimalstellen der Beschriftung = '); + readln(ydez); + END; + REPEAT + write('(linke) y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='N') or (ch = 'n') or (ch = 'J') or (ch='j')); + IF (ch='j') or (ch = 'j') THEN + ykreuz := true + ELSE + ykreuz := false; + writeln; + REPEAT + write('zweite unabhaengige Skala auf rechter y-Achse (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rechteachse :=true + ELSE + rechteachse:=false; + IF rechteachse THEN + BEGIN + writeln; + write('rechte y-Achse : Minimum = '); + readln(rymin); + write('rechte y-Achse : Maximum = '); + readln(rymax); + REPEAT + write('rechte y-Achse logarithmisch (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rylog := true + ELSE + rylog := false; + IF not rylog THEN + BEGIN + write('rechte y-Achse : Schrittweite = '); + readln(rdy); + write('rechte y-Achse : Schrittweite Sub-Unterteilungen = '); + readln(rdysub); + write('rechte y-Achse : Dezimalstellen der Beschriftung = '); + readln(rydez); + END; + REPEAT + write('rechte y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + rykreuz := true + ELSE + rykreuz := false; + writeln; + END; + write('Beschriftung Unterkante : '); + readln(unten); + write('Beschriftung Oberkante : '); + readln(oben); + write('Beschriftung rechts : '); + readln(rechts); + write('Beschriftung links : '); + readln(links); + writeln; + write('Breite des Bildes in mm = '); + readln(breite); + write('Hoehe des Bildes in mm = '); + readln(hoehe); + writeln; + write('Unterschrift des Bildes (\caption) : '); + readln(unterschrift); + write('Ueberschrift des Bildes : '); + readln(ueberschrift); + write('LaTeX-Label des Bildes : ');readln(labelstr); + REPEAT + writeln('Sprache des Textes:'); + write(' a=austrian, e=english, f=french, g=german, u=USenglish ? '); + readln(sprache); + UNTIL sprache in ['a','e','f','g','u']; + writeln; + writeln('und nun die Zwischenspeicherung ...'); + savename :=''; + REPEAT + write('Dateiname fuer \savelinesandcurves bzw. \replot = '); + readln(savename); + UNTIL savename<>''; + write('Kommentar im Save-File = '); + readln(savekomm); + writeln; + writeln('und nun die if-switches (Diese muessen im Dokument vor Benutzung'); + writeln(' deklariert werden!)'); + REPEAT + write('Switch replot benutzen (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + replot := true + ELSE + replot := false; + writeln; + REPEAT + write('Switch finalplot benutzen (j/n) ? '); + readln(ch); + UNTIL ((ch='n') or (ch='j')); + IF ch='j' THEN + finalplot := true + ELSE + finalplot := false; + writeln; + Einheiten(unitx,unity,unitry,breite,hoehe,rechteachse,xlog,ylog,rylog); + writeln('\begin{figure}[htb]'); + writeln('\originalTeX'); + writeln('\[ %horizontal zentrierte Ausgabe an'); + writeln('\beginpicture'); + writeln(aus,'\begin{figure}[htb]'); + writeln(aus,'\originalTeX'); + writeln(aus,'\[ %zentrierte Ausgabe an'); + writeln(aus,'\beginpicture'); + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else'); + END; + writeln(aus,'\savelinesandcurves on "',savename,'"'); + writeln(aus,'\writesavefile {',savekomm,'}'); + IF replot THEN + writeln(aus,'\fi'); + skala (aus,left, + unitx,unity, + xlog,ylog,rechteachse,xkreuz,ykreuz, + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub,xdez,ydez, + unten,oben,rechts,links); + IF ueberschrift <> '' THEN + writeln(aus,'\plotheading {',ueberschrift,'}'); + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + IF finalplot THEN + writeln(aus,'\iffinalplot'); + writeln(aus,'\replot "',savename,'"'); + IF finalplot THEN + writeln(aus,'\fi'); + writeln(aus,'\fi') + END + ELSE + writeln(aus,'%\replot'); + fertig := false; + IF finalplot THEN + writeln(aus,'\iffinalplot'); + REPEAT + writeln; + IF rechteachse THEN + writeln('nur Daten fuer die LINKE (!!) y- Achse jetzt !!!!'); + process_file(left,fertig,rechteachse,xlog,ylog,aus); + UNTIL fertig; + IF finalplot THEN + writeln(aus,'\fi'); + IF rechteachse THEN + BEGIN + skala (aus,right, + unitx,unitry, + xlog,rylog,rechteachse,xkreuz,rykreuz, + xmin,xmax,dx,dxsub,rymin,rymax,rdy,rdysub,xdez,rydez, + unten,oben,rechts,links); + fertig := false; + IF finalplot THEN + writeln(aus,'\iffinalplot'); + REPEAT + writeln; + writeln('nur Daten fuer die RECHTE (!!) y- Achse ab jetzt !!!!'); + process_file(right,fertig,rechteachse,xlog,rylog,aus); + UNTIL fertig; + IF finalplot THEN + writeln(aus,'\fi'); + END; + IF replot THEN + BEGIN + writeln(aus,'\ifreplot'); + writeln(aus,'\else') + END; + writeln(aus,'\dontsavelinesandcurves'); + IF replot THEN + writeln(aus,'\fi'); + writeln(aus,'\endpicture'); + writeln(aus,'\]'); + writeln(aus,'\germanTeX'); + write(aus,'\selectlanguage{\'); + CASE sprache OF + 'a' : writeln(aus,'austrian}'); + 'e' : writeln(aus,'english}'); + 'f' : writeln(aus,'french}'); + 'g' : writeln(aus,'german}'); + 'u' : writeln(aus,'USenglish}'); + END; + writeln(aus,'\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln(aus,'\end{figure}'); + writeln('\endpicture'); + writeln('\]'); + writeln('\germanTeX'); + write('\selectlanguage{\'); + CASE sprache OF + 'a' : writeln('austrian}'); + 'e' : writeln('english}'); + 'f' : writeln('french}'); + 'g' : writeln('german}'); + 'u' : writeln('USenglish}'); + END; + writeln('\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln('\end{figure}'); + close(aus); + 9999: +END. diff --git a/support/pictex-converter/piccon1.uue b/support/pictex-converter/piccon1.uue new file mode 100644 index 0000000000..49923764df --- /dev/null +++ b/support/pictex-converter/piccon1.uue @@ -0,0 +1,386 @@ +QUUNCD Ver. 1.2, by Theodore A. Kaldis. +BEGIN--cut here--CUT HERE--Part 1 +begin 600 picconv.lzh +M)?8M;&@U+=%?``#PU0``N6OS%B`!#%!)0U1%6%1%+D581;_"30``(U",O/@! +MHTI)[_?7=R60@%H!$0`9?T`(@)(0!`6,D0%+%`1@@0$81;)+DEA)JN\'>W?)W@[JKNKO;WX"] +M^%V=P/:R22R]'B]RJQZ'A/:5$''%#]X-O&]#A!PPLAQPR@MQR(]:/:#W@ +M]^/ACY(ZP:,>66((7$<.]((-A[(?`'3C[P[X>5>T$(0<",:+89D>P'N!SPZ@ +M:0;6M00YT<0.+'J!E1V@P=>../<#IAMKX@AS(RHS0N1S0YL<^.D'3#ZX[$70 +MU\M$Y8;>-W&]CB!^,7U]00M`VT8(<2,P.M%98$$+2-Q&"&&%@+49@['6#[X[,?G&D%]L2"%T&^CAA8BT&9&<'LQ[8=`-`.X2@:Y!! +MF.6%[Y1!"Q#!#]\QZD60XX6XS(]:/8C[`^V/OC1C\H[T5G+&.L<8.-&2%P,P.3'5CZP^ +MR.Q';#NAI!B;07YCBQ:"V'(#UPY49T>_'\@^2,^/K#[(^Z.Y%V*RTE^8V8;0 +M-U'!#$CCQE1<#^`8&\C?AP`X,?PCW +M`J[6@@_"O&[#$#SX]"/4#CAZH>L'*#.CW0]Z.C'RATHZX?<'>C7CHR/PVD7\ +M;P/-C#CT@XP<:,@+49<>R'/#XH^H.M'7C\H[T78V7ES(N-L&#&\#S8]<.5%: +M_EGXVX;R-^'`#@QC1:#-CUXS@^6.H'X!^(?E'>C7UYC;&S#=!NPWH;Z+`8H< +M<,P.:'QA]0??'=#2B_HE(QZ,9`>O'^H>^'/CKQHQ?3K$6\;\/2CC1DTO_;3" +M6,R/6C.CW0]Z/ECY@T`^T/O#LAIA>K<4_'EAP8Q8_A'2#\0[\7VWH(V'0C[(OMP(.+\-W'IAG![,>V'0C[(^Z.Q'YAWPTPV*!*ICTH]\/H +MC;N8+$QO`\V,4,R.B&?'3CZ`[05UQ.CN,2.('%CD![H=:/OCLQHQK]R.PN-Y +M&%'!CA1BACAS0^`-AN9/8XX7`S`]6.B'7C9>900Y<;:/,#A!<#,#U8]H.8'M +MQ\`?='<#D+H47'6C[X[,:,;+!((L'5W4L7&D'E(0M+&\#$#SXX@8T949D7(YD>^'/#XH^>.R'XA^4=Z*Z +M['5_&!'F1A!Z(60XX907&VCS0\X, +M0.)%L.0&9'M1[H>]'P!\H=*/G#[H[X:87J\'1+&!'F1A!OPX`<&+(>L'*"Y' +M.#X8Z$?''6#[`^V/S#9.:+;QM8P@PXWX<`/3#("W'(C-#^4=4/M#M!^87J\D +MCBO&#'G1Z(<4+(6P]:/9CW(^$/D#I!TP^N/M#[P[P7Z]%8Q?QO`WP;^.!&+' +M'#+CU0]8,^-"/MC1#NQ6WLZ68P`P@PXX(<6,@+@!O@X0<8. +M.'(#V`]L.='0#I!TP^>.Q%T.W%;"F%,>8&Z#?1P@X8<4..'(#UXS@]F-".O' +M:CNQ>^=+:Q@!NHQ`X(>F&1%P/7#VH]T/ACY8^@/I#ZHNAVX_&-@ABAXW0;L+ +M`<,.*'&#*#,C.#V8]L/JC[X[D=^-@AT$+4/,#>1Z`<*/4"T')#EAS(]\/C#Y +MHZL?6'V1V0T0T@U^(+.3'.#WPYX9\?1'U!UHNAVX_&-@OI:&-T&["P'##BAQ@Y`9D>M +M'MQ\-T&[#>AZ$ +M8H8T9$9,<\,\.I'V!^$=V+U?SM+C;QNP\\.%&,&2&:%R.:'P1GA_*/FCZP^R +M/NCNQLS`Z]8\N-W'GAZ`>B'IQ9C+#DAFQT@Z8?/'8#\([4:47W`&!,8$>:'G +MQB1C!DQF!RHSH_C'\@Z@?6'X!^4570G0C&P#`CS(P@]$+(<<,H.3'M!S`]N/ +MACY0^>-".L'E.B*KC=1AAP(Q8LQEQRPY@>]'1CIA]0=B.Y%V-CP)(8VT>8&& +M&^BP'J!R0S8]>,Z/XQ\(=`.F'U!]T=B+H8'!%4QA!Z$>C'I1CA:CU@]D/<#X +M(SPT`^N/P#N15X,JV/+C=1AAP(Q8LQ:"V'`'@&,&.%&,&-%P,P/5CV@Y@>W' +MPQT(^./F#0#LQHQW(K,0;-\;$-L&!'F1O(PHX,<*,4/4BR%P,P/8CV@Y@\'QAGAU(ZL?6 +M'W1V8T8[\5>)-FV-D&TB_CS`LQ:#-CUXS@]P/=C^(<^/Y!\X=2/MC[X[,=R/ +MS"]XHR!C;!@!@1A!YL8<6`SH]T/>CX@^,.F'SQ]H?>'9#N!^05G3%NXVH5XV +M\8,;T/.CT8]*.)%B+,6@RX^0.D'TQ]Y'.C^,=`.C&@'5#[@_`.T'=#O1=C7NG.A^/4BR&4%N.3'+#VXYP>^'Q1 +MT0Z'4CJQ] +M8=H.V'="LQA:^-B%$;@-S&&&^BP'IAC!C1DQ:CDQRP]D.9'N1\,=".G'T!]( +M=,X/9CG1_&/A#I!TP^>/ +MM#[P[(=P/SC2"]=0=_L8`8$>;&'&_#TPQ@QHRPY(9L6&Y#!C>!OXX$>D%B,>./&9'K1[`.W'?"]L3*6 +M/*#`#!CS@Q`\^-?QII'Q@!@1YD8<<".('%CU`M!;#V(]H.8'L(T^XYL>\'OQ +M]T=B+H=\-,+U'$QC:Q1&[C>QAAP@X8<4/WAEAR0]L.:'-CHQ\H=*.N'W!^`= +M\-,+TR)?&W#"##C@1Z0<.,>./&5'K1[`>Q'-CW@]^/DC/CIQUHZ\=@.]%V*R +M/.D>,`,",0//CT(]2+(<"KD#/.-D'E +MD&JVYC=U35:J0V*WW![%;L5OH"_V38GEL2Y?+?#//R$[T"O8K>NVS]0,-NLH +M&'Q(9^QQ.7FMM9\3.V!#UEKEAN=/-+8'+/9S55`PW*-`PW2-9`E6GFGU;BID(F=ESCSF4=N\KE +M-^[F])OW:#=ZSYYM3/JISTTOM$MJ?[/OFOFE;U]*:*![0HZ\I\%27^FX=!O: +M$I"A-DY].>B4.9\W->0K0W>]RK"FHWJ@84R$XPIDJ%/B%MB6LI(-6,G)HR[- +MKCY)G&R*.-9,FD>12I:K>4M5JJ>;YWS2UV??%2XIRA355.5 +M/ME])3%3ESJS4T3G[#$SO*JR&.D7^GAEVTL3.PUEV*V=_`7'3JXBL^Z7O^)G +M?(/ME2FT[@GG'2J(1Y^4X\V628%P\K2I:9:\2R9MV35&39MRG4DS98UG('VP +M[%LW96M'D?DJK6]Y=M;\O-;Y*EVTW\[?2E19/.]&G_W>7FO;L^)G]25GG<8E +M5V:WJ4'AG>58;^<8;^)S]I4JY.]H\K"G"^'6"=_"E!=\?PNTW<[85B4NTM7( +M2D=V=;'2Z^)G&#M2$4]*\IORP#5<+#[TUVTN68;C/P%9C)VVGFEQC)G&'Q&& +MR!RI\-TE>/E7M*T.P\/&%"*1P[49/6VA-DE%4H]MTODED34P>J^DP3]T#%NR +M9HM#!RW1D&4>X2P=V?#.(V1EV4AP.-9<6XD&K./CT99DUEV25TS=?T+%I'23 +M*GA$"B6)C+9)8#GD@6AY\&39&_,H]E(R3:/E&LFQ;W?'LF;1DC+IX/3 +M'9N+//L%B[$EEBVIR-47-*H=6ERNBX?*M*J'6)'RNU0A[`@XY6?HN%RJ/(0]E2Y* +MMZX7)C"N>:Z6),6U3R.7L3SH%3]Y>J?)XGS9W:I9[L`EPTOB1KR;DAN_@<[S +MK-0K-8$GQ/HE]+#6M0L&$ON$Q`WV`@(!/J@/,5[UEYJE.CA-)='6:3Z.FUI7 +M+"EK)5,?U5*!E-A-E4<^UKDN>^UG/=U7/YBR/_`K@Y867G6%*WMBF;'0O=5F +MQ;O,V*5-%R>5A6\I0KG&#X=%&;FG;[4=='7'UYVH^OGGU1JNO;-.[HWJ.O8^ +M^8^Z9/AV)O5]@!:=<]56==5Z^J=N;63M>2O+84O735*@X642U4E,G71'I+UDRLHN^0II:ER^DI7:7;OI=^G +M_:5+$!&;]3`U[]>J<#1B24R1SNL/K/[>JY2DA5F$-2/_)]$$W];!%KY602EX +M$$H^CJ*2+G72TG^=&%SKSMXG;4JI[:E?`N1.4]3C"PQ--+$+PKM311/B7>OH +MU]1Q[+5<=/1=)?!6E_IN'5T^!V'J(;/4M/@R/3/5'$8[^GXBRCLU1Q'M+B)4 +M=5U&CA*.W;2IT:?CI&>Q9MBEWD'U3ZI:'93X^0G\;"=R%/ +MO")RYL27'"]S-+>LU%+3)6F[+YSZ7J;F:5!N^3UT53NN04BDX]G4(L:W$IQ7 +M8.TIPRKVI*^O)OG/34K0].*K(D87)).F-E05PD':J?%SC63.31O[-I),FQVH +MI:4:(Q"Z&18M$8F4;,V[,^ZQ%3J'+7JGQ9K7J@RB%,A0&DN/Y3.T)N:7(-[3 +M/]P^\+35)0-5E])ODNI\GR5-'%I-\8:$K4IW+K"_7:U&G4J(PG5UY9W5:IRF +MJ=57;5*I^,J4A:>G986&IM,S!>FXM.7-6>E:3._,IJZ*BT:HO1\O?1-1\VE) +M;2F.+3Z(+XE5M511*JHYL32)4"=U=`JF-;;?*1;!?X5NJ)%V^^)">T[-J+6H +M5'&WYQG%/1"?0K+'%E%X"%58#E*5W4V!?@I*NP+\/R\&P(ABDO[(L#J/H[_O +MJ3OJ0X:4=X]7J-[3IU3_ZB@';S7A;XHQ._)8DK[WRAAM?#T,/UQPT&[BJU=O +M=/M7T+JO7N3_DU7*6']A\CRP^"4L/4[J+S +M;>/KSHX/M`PWQT=-Z._54,-FEOD6(T'RE+D^^LGESJ<4]M8;]/$S8R(4A>'O +MLJPWJFV!2UJU/H1MW9\3B%SK34DXPW<,K<6^<8&TZWR<%G&%)$I:XU/11$#Z +MVE)W0HI]5#+"^SM4%)R4QW*7UD$\#>DY\3G'Q +MBAOSSC#YR=.8*/*N%/#NHGBOISQ1O\,JD +MOC10*HXE>3^5K50RHI&_*JVD;W5TC?:ZD?*5-([:E:%6T=Q](G8MWZ!1ZOJ4 +M>HNW0J*%??03LNRW%LNF-Y54*ZO=@+ZUD'"6S$CT^OU"HR4A<YKYZ&'H;VT*59E_/OSDU\M##SD?\V;EK4EQ9WLWS8G*[>#RMCH87T% +M(;1T^JX[6Q\35<$5^=2N3ZG2&%R'42,I&R/49&XY"Z9$H>T<-49!BTF)AC(R +M1M54;_D)64:%-CM/S#B2R;9LSD$NULCD(:$?^!&L@BE4DW!2.12^*53[4\J? +M:GE0X&R%0]RE4/=9MQ4=ELYMCJ.;\:7-^3-\#N?;]"L@FX2@GQ9N6?TN*I8, +ME,,+Z$[VR?S2L)HM0@G9);7Q+3R?*G`+S[[EA\M?TN15[O79K+,-KEHK;4-[ +M8;6AA?9)3=)2G19ML_J6@7.R<2T"C;5E!]FE$]IFV^%)64\,+VM?TKA%.!WG +MW^-1BC@./S[SL*>!)X`28JR]-E9/KO3?D.!JX#17\+Q/AU[D^'OZSPZSM/5S +M.Z7A>*EI:7/JH4_LOS1XK&EHWIV?V<$\3YO)SKGGAOYSTWG#ROX':?/2B;C6 +M&@UI47'*T\LJD(E)G5ST6D;)3B*4)G<:=K[Z=?4^H6N_F^<1CG#4\5Y),C?F +M):3&08XUD9-+(>>>+]MB"?J.9><*X8QS5BW9MCP1R/1&01K*R +MDDQ3TS%QNUR1E(XTX<3*261D)1I,.)!&XW=**WCGY)G*RI2)%IVQX)A&XWT\ +M#*>"FNB,R1KS4L&;LD;!D8(GHV@\ +M'!P=@BY-P>$FE7#=')/4J_7*QQ;-IC90SCI5 +MVCY>W:WX,,A-TW/63@1J/CTL1 +M\<\U7D<]*8QO1LW$QC*1`JM&P])9DZCR(TVS2R]BE\4O*G+**S5\\:SE/3I,ME-92$@ +MU.E[N*YY1JPOR[\_DV]725?DV]72//)MZNDF])JZ3"5>M,U=)@:S>9]PGPCN +M@93TJ1/36>E2(*3M'1D$]!*":.D2VA:56N9 +MJJ?T-[\32TD\^'=Q6I=^0O(SZ*>VA]BR)\S1_1S)^#Y7C]92IDI[Y,E/5/S* +MK260_-CKP5;CK]GX^)CKTWQO(K957[L=:OY/ +MTXZ_<^.GQUIXCCY^$I\]&E\\[_UR!O7__D#HO!=J78LIPL+]-TUQB=OY3@I^ +M;;IIRIK_*ZD>=XT%XU+$Y[R!SI@YW5?3SHK2$LE +M9T^=&9-%O#IYXA(N?)%T/TT=GOB[OOSG9XYWA?3SLU\59.=JY-/.!,W!E?D2 +M0_)??4/:"$#J+^K3_KT@@EA*10Y1$V(./;(R4I(2#*.11?3VO+&-:RC9LC7V +MCB3QIMWHY%]<-)(V[\D?*P2[-O(RS&2<'MWT$$;Z]V^[0D9DEDS;SZH7RP9* +M+;2;&2DD;O,GWOE3][PE]\Y4_>\S)LY+J]);/%:@*WK3)8=[8I`?`@.+I+GU +M/KCI0'10'U=<=+FZ3C3"^I8)?G5J03T*V9#V9KF,?G,59U+M(;,WKUX"AYR, +MWAU.N<8;RLP.=5MTM\X=#C+Z3:O-6[FD_;T)?;+S6V.@U(V)+PI>XGE=\B9Y +M#.)0Q0H>=8;BLDRFVY,IX>ARPL+F,7.8JQJ3_S9P^\JZ-2U31K@5!WE71IM64:I[K]IQY_^2LG_Z98_38UO.18U3S_N^//ZR +MV_\Y_KUM^J?_7^RO]15AJLHHO?J2=9K;Q>W2ER[/;?\L>N4VO\<>M?HU,>O7 +M36X0F5QB54\C5E6%&EXM6C0^O(;+_KR&M:RW+HT[!_MHTT3K/.,*.$V7"T,W +M_+)&U_7DCEZRF$$G3!*X?_^HA^W)I+_KQ:-?\J(?MRB_]*(?W95J2E^W*M:Z +MWE_V95KKM/XY5M#M/KRK)6!7/_SCMO_R\-@G>'A?_?29Q'_[J527Z=$#Q>6EL[[. +M@LC91I;$O281LI*-8YFT/36-LBV;LI,V.3-NV1AEDG)W2Q227C +M3ZF,UE#9)E'MZR(Y"'M2G):LY"1X/*KU/)E5N`>4X%*$MK8@]T^UL0/?!65; +M5^H#EWGOJZKSQBG#?5M7X]N7>>$54\&[5>SS02\=)EH-13[SO'OO=?[U9)=;ESH[S],B_;%IN:B4&_.T\:NCF,@W,5"<.@&+^ +MB@%5NJ+G],:XT+4M7\OD6#\[]E@_J^[6>:,JJ^7/B5\XL+4H-ZGVT&B',9?' +M,5?N'0;!_HH-5QK\U!M;QJ#?JN4\[W/LH-67*?X6&U5!H%S&7%S%7/AT&B.! +M0;AX&ZN-<:%S:QJW_MMI4YQKNSG>=8G):WZ]M+],B_;%E-' +MM3QKCZOG1>I6235ZXGZ8UQH6I:OR=M+]E@\%P*#?@X5!N/7RIA:E!O4^V@W' +MSX_B]/[*#5G7VY-!N3MI?LN47_HH-^G9'?78;54&X^L2S.K^S`W69O.+"Z?; +M2Z=\4H?L/\;%GS5_W6+<;ON8-/W]*4!\& +MM@*G+T?(UL2K]FMB5?LU\"K]FO@>0E[6(?MH!4PRNU\W#AG%ZZJED')V]?V8 +MV)_T?LPD$C^O;UW#ZL)#S3N>;[E%)K_T=%O`_\>BWP>IG_7IJE7[-10J_ +M9J*'D)^K"16T`^K"16:B[APS\VY"LRM2RG*W7]^A+Q?G_PT)?[MA[4:C]T![>UG!8*4:2S)JW9-4_NT1@H*(B6?/X=EBD6;25<-T8. +M#@T48>XQMR1Y^1:LVS=FQ:(W[MF[>09-;HCT31LW@T8^#1Z-DW8R4E*R.1;, +M\?=$"3HNCQ/T*B_8J"OL;(MF1\NC9M&LXA[=!3B/^0I^))2D@Q:LV\C +M)LRAR-QQUU:7)'GD;34Q/#1I5ANW*4MV1&+IQN3AG&-@L0T;I65LY)PTD"RN +MLAG0,IAG)L9(]Y[)21RXXM1OS)LE(,>W(<0R[O*)=&Q:X]FR:J2)'.&L;(S# +M-E(GSN.`)N9-;E44F@K^S:2![LU.3E+H(_K&J,RN2/34\J%U# +M]D>)8[D?IL=@7D=R/UV2Y'CV2Y'^VR7(_V62PO!HU^VRV\S"E!'#1CC9')M) +M!G(%$,>QDF*+%Q'HM64;(I8YWDKO(K:U.0CQ+//IY=1:'<.!R^+:$CPI!X%I +M-X^N`5MJ'#B?VVK\YP(G^VU:U5DDIT,Q[$_I.WT4ZN`7&+C6,JW +M.C7+ +M;,99D6GLFS%I'1KAK+%*,;,2\&C%M64K)2CSD'#5E,]/(M\;C+#%RC5F<1C)%B=OB^G1N$B<"8E" +M/R2,P2,U9I8F4;ZX;)]*9BTL2DBRK.-;DBVHB2-PK81:.)2P["EML<7+F/YD +MES8]*C.271:5.Y%DQCCJ&(Y)]N#RIMMA,(XX/46P?183!7]&XP$`ET0$5,=6 +M.9-YANC`'[FN'$.EO_/]#A^#$6.-JHIRT7'%<.'2VP1;)I'4]:%<7C'V+4OG +M+*;)%MF4DRC6\DQ:2#AC(,LE%U]Y@DF7RGP`S->4P03->4BTR^U&!R9K[S%M +MDGQ&+DDL1.25S,S84IO>7/3J"!WV+B_'\00:K<1EOA3]!!P?9.Y+!\CV7.@K +MN7\7(Y=5]O27D*],_BYUS?B*1BS]'Q--_/NDH3B[,_XF>IC13/27,P51S,79 +M:?F3MQ74_VG>Y7<:1,L[:TMGUKS2Z=Y)+\L_M%^6L\JOJIL3C_2?=' +MX\C\B1_'<*/QU='_(*KYW5542SFJ7Q,[RK\GQ9N(U2_`MWK/H4:O/JISTTOM +MA'GV??-?-*W[I.`N*]0+?-7JJ-[2_R$W$'\-Q'XR"D^]=]U/9HI[-E/>MX5/ +M>Y^Z/SA'^Q(_V7"C^IKH_,'#SOH<*);O^=F'G*68>8E=F?QPLHN?5UM#.RZ3]5P7?EP6>+@O"X5I^>^Z/^(1_/D?T/"C]!_.PS3 +MJ6&:=*PS3UF,#;?=3W1%/=&4]GN%3VQ1/ZH_Y)'_+(_I.%'[[$_GQ@:GA1)Q +M$_RLPU"EF&HXV,#Q8FN[U7*\7O5*=?_DQA^KHQ\/)C%GKHPAA:Z,E\Y];TJ[$SME>]BM;_U5MDD#TO$G +MF@6XNU4^?W`]+753M5;5.;B".M]*I'^JY,?M?&U627,ZE+^9T_E->IU?37K, +MCF!S@YL>X7YSS%\3G/-'3#IU\2N=86?4G/,=+R+3L]76GK7ZUE9W_]59Y^ +M(_NM/H%NEX77S3T(#>V*8*NBPW$NZ+39_2F,ZKQ;)S\N=>OH9N()3;YYYHAW +MQ4I<`AP+@/Q#WHYU2X#3U5P&H_PN`\(<\/?CH1SX^(,\.C'1#I!\L?)4N`U/ +MU7`8/T>)8PI8C,<6Q%#@6(Z>HL1TV@4L1T"ET'BX;D9#-17\/R.I!QKAT^7ZM=R] +M;7(C)"U6BY1UZKW +M#5YN^PRR66SRQ!U%(.N[0T3Y=Z9UY3W.:>W]7G?@7YW7+[QI<[ZJ_.[%?G=D +MOOF=UB^>OB'9:6?DD(&<>X&%>V](?_R*:F=<\KGKVAVF[].\:S=[KO/=7OZY +M?Y-U53UKN%#`+]-Y)$O-@9N![!!V3*?=DW@IZRV3QD +M'6`>YZ$LGCH:%!U#OBLOC(NK:]Z8IM;'N +M)>0NR/>*T"#[K'#YH;1#+)=7H%4Y\N +MOH%OK+U5XTO>>T<'VU^FB7^>]%][+73<1K#I'&OOV2]4OQ6KFXC9'6H5:9+[ +MH:)50V=NMT2%#9Z/Y<_&.K0LS_/NK,L=5]90VYS[=ZIR7?+U.=(MO4Y*/4+ZDOS$+\TO;G>IR"]WZ60M;OT(5=L%\O9G= +M#"P?OKY>P9:SE#5WMKW4.LU+XA/(+9R(UR]RN]I>Y*1.N:>G)SW4`LU3JSK' +MG,U,XERK2]:J>55ZC63RI;$NMZKQ27*G"+SFX2C,+N'"N[Z5U\JS5)T2*%2[ +MT[U*LDQKRT*<^7LCOTE=ZUZ]K7X6]>XOEUCK2*]2](.M`KG/-N:WVE[O2ZIU +MWRNK?7M`]:S8)^:I2QU*1'.)>K!K&]FO%-V6H,&KE_]U>YU3I:A@7&\(D83'"O +MX-[IDH/U#U/>YS7DV5#G?5;6K=_(YUVR8]^L%3W:+/*E'ISJNLF5>@]AN^D9T/L3T06,$<.^U:3DN_WLDAR0A` +M!`151"(MEJQ2J"BJ`I5"%6J(JH+5!KBC:Y5%R'("VA"&RYBR<1Q5VMMI1X(B"R`$)/_O.2"UMS,S=S[[J<\8\*,1DY.,@",/$XN,()R +ML9AR5,8]DZ&,3*NA%]0GGI]P>SA?KBB[*;8E71GS/5B33TJ,O;BI4Q?^0@\9 +MX7F6?:,]Z+LB?<3L#P"OL%_G%G+/N&;Q;F>B&M]@,@&)"Y(2>J//:3.9P$8B +M6*=?((TZ^622QJR153/H4Y6@1I\;H$=IAAI8MS/U@U=Z!UA<&*1LVQB`OVA% +MV+>)8@(&_%*]EGQ4J32:+1AJ&5"TX;W\<"J9`$[B8Q(3E.(\L(2OA8@:UZ,N +M8/>:XY0]/TVF8!J*,PG$"O9/&0&8#T)>W'.,>3<9`6C$7D!(O-U&I9..8/5! +M-X5Q]6BT8:ZO%L=@CWFZAEQ$$0Y:)3W$/A]/!Z$'"=KRH*3%"E=0IL"<`B&* +M!$,>-#`13+R+I`8PO9B+]QR:<,>7K1`7D043HO-U!D&7I1&HE``B3Z7(B+VK +MDQ$7FA##)$IL5U+/X"\D(XUKP-;#F-4^>%$-4'**YI4%K14KY;F"8%91;8G6Z+1RL(05T%'U,(+[(5A%5YL4ZO851I`&46/UNP^-TQA9?3WO/]HB5-UK/S +M>D`]E5%(5RJ33TA7,#XW->'QIZ2%EN<0/7TNMI.$Y:0?0Y;+ZN6A470IZT0!01Z.:+4 +M:DQ$%\K$U<38FJW?<#RW\JH>F1,+[N/?WIB3@MTQ3Q<(_")(3^[`B,[>Y9*( +M22?UQC\O?,\_KX3/O]3"1[_N6("$`#*H]_X"E_X&C?Z=_//DF1I.>:G3X7QG +MLU+WPNE>_Q87XT)R\&"PC85W?=SS^]$9]_)QO([AX*'/W?+?RX@7(<'BX07N +MY]_+CA4N8+TP@!2\H+D(#Y:(8%Q,_68J'8(DC$D@O+"SAETRIM<&33)`@A&( +M8CKM>ZAR,F!!T["I92;"I+/"T\F$E@LM`+3XQ]0Y&,S"H^A1,*WB$5F*9"/X +MC%XS)Y2*RN6R^8BXR-S.:5Z-7,D[`.W1F%2K9JDPDVL)3"AWM($*?;D:-_YZ +M[,Z-_">QS_=T;^TXK@KO16ZCSZ>+TQ^?13L"GBWA4^AZ$3J.?1)XN00SA[GT +M]6)I0@#J+A4]T%N(^J11<5)OZH,CG":$N&Y7V[GJ!$Q1Q7+G$/"HV'-B.W=> +M]NNH&J([)Y)I&GYCPY85#6M07DBPYO@1Z$&9SD``*M,;(\*,/*L;.(^%<_&K@]"9"Q'7* +M9J*U5@LV!@^`E\45W$2Q,1J+LJJBE$BAA<`[NB9PD[#Q@,V8^D%L +M^E)5DD`MOP*S^8J7:1#8?2GJ,=!C1A.[=IHD`@$#I3':GFP/:"V$?H>2)S!2 +MM2L2$2M.>%)E*2/+#4O6N*E8^$!5GHW(`#AT`.0JP@XK!\+IG#X7;N'6&C?" +M]FX'!32NRFN6$"69S^991C+,VX\)0##0*2),XJ:H"I[!Q4.P,,:54?\E$U:% +MAT(CMQ#&ZHV'/NO>IDV.Y^.Z%U1FJFCD-0=T +M:%^'3L!31_T)/J'CDD\&D@$JX:=Z>*2SO/#K7\.6VK4^+#-;?VS3+C.9]NG*>`@CXB-RV55O +MROU5K?4&8F)8W/QDV42Q[%Q8VB]%89KC0(K-P4B\;-/L;FD'' +MR,!2B5Y#2Z>+J:4\K\:BL;2BL"Z*PMZ*RO**P8T5AUJ*RL*+[LU1%(O;I3Y+ +MQQXB`I4'[M0_KX+(PS()`%/D_&XP-'Z59BHZSOBNF$?E>12GP^IXBE5A$=K, +MK:5F4A\C#<^3B`/]*F['N=A-I\"QIU`0@459E(J*AC'BP#YHOL%P4:M( +M$H[@ORM!Q^@+>M+:\A.7"1T-1;O=PK+2>[F89A7K;1BMOF(5VF62HOU5.,1) +M:^'X#4B-L$1,G&_@AVI#GR2Z)R7XX@Q!LM^[,Q`*!$0R,$^+P0\5:GRT- +M?T5@GBH;4@I%%86IP'[L1#?$*0)P7Q"CB<1\0D),%1?=7@W)E10]C#L7BBL* +MNBL+NB^ZP9`]&&B*MA;,.PMZZUX69I;]2V3T>DT435Z(K[:R,U/DUD:NJ4G/ +MK,I;\]=;)#<+-#PC^HU/FZ*S*PD1#`W.*A@2X +MJ"R<-SSL&-P/;PA>4;FA/XX;$>-F&CO)O>?69FVW8?%N/XN1_'>'\7N[Y\JW +M*KWJNGGMMT6US%B^_OO"W?^N*.S;Z+W +M/U'A/WCB$$SH6N#:&D#_G@_X,!KHEK::A.MC5!*(/G(*WA3(YVT\L/+&$QZ= +MAB5IF86LDDUY#;E"N%>2TC/K,Z[1R8_D?_U*!EJ8#HZD=50":;5_D;.LDE:1 +MM6MJYX/#;3=LKQD!-O1D>^UBI`M,3'$]4]+3,(M9$35:'I_%",EJOK<=!6U2 +M,I&S9F<<\Z2,:5C3,:=C4,:EC5,W\F^;DX:.#[0_15XC=9..]OB[11P>'R_V +M;".^SX.@YSL+M>5T8[K;EHMJY'C[[@^5NK*\_9?&+*/19RJWCY\'Q^YAK3@* +M<(E5T'ZE7+197M[WS:+UDS`_H_.J?&5B%'3>8]%ZLLQ'>"#QF +MH`VK(\BLRBQP-\^<25F566TJNO']8@"D777EO/(.-;N5\E>MZR-*4]Y>I:AJ +M&)QL:YGU>0H%ER):2DIY+RJ2EDJ-I)GERQJ+;(`?73YV2I*531M(T\O4W>X4 +MU[2F$O4]ZLRLS;9!SFN._:!MVE\I=T^"$HY1=R>'I6C**'\E)69.PK,NL`T- +ME+<7E$O-9&>S%?O>7*F[K(N;MJ&7KZ9#R7D59&L,V8PZU<6MZ[Z\9'(Q2]%G +M,Y)*S(I?E5RR]%.O2Y9=XR=>*I3>V[DJ;O7IKM4J";NU.V1\Q37B,4-K)2VKZXS=>'OEYM\'@F6]4IK\D(#I$M2I2]>J[:Y3`54J +M2NWJKVSQ2Y&C"TM)%1YW;7@7]WFTL/1^420&+GE;;/;7S"_-%1F-J5,:+'P% +MB\Z*CS9*0`8+6*CS:N\I9"CI5!4I=O5=MD-+D&W4HZ=)KMZU:L.]Z[6Y!4J1 +MAS'7@;K[K,K9UF4F7`-^M99DPS=>I"_J04N1DF1KN2#7<@!'.\REO:304NNX +M4WT8F)1QB@E#&9!6?D<[HB]@*)L;1\'<80ZM%(YTO4";6.GBZ@F/M/''B2`! +M,PK@Y'.Z0OCM]2JARKGV(NY5^/&[>`GH:-VULLQ*"O*9%R`EJR^R"M!693K8 +M#J7D1)Z\\22`:(,"GC\PA234`#Q'S][SZZ]2$#M2WSDCG3+-E&B?EB4;\_&2 +M5F8JPLEXT5Q/8&!>/`GX('[$F+VQ]M7E7"[L(F?89]@,[U*1Y9EC_N3SWDQ\ +M9ES2(,3'@0EW,2/00]'JQVJ$/5D!#.8ZF*4OA4H_4*SK02(OT+Z$*;006PZ, +MJ4(*4I8OE+#Y7*B^<'SSHNHGCY50WHU%02CT17-I4UU1ZBZ]Z%P*5D*1DVI+ +MD;1Y""2F5H`X"PO>7RH_:/(7=DDD'!W'PA2]['2:&GN.*DDH:+GSC(Q*))\7 +M7C@-J+AS0K&((4O;^)"GS_\A23_9"KF_!"GLU"JS+UX:!JR-\"'#K$'5$X'! +MLTE/2].DIUHJ0/*DI*&0)I-R&'&OM)N>:&%QGP5U2!=F3879AU>>%V="FD0V +MH%"K&#A5$(?8%V02A]APL$@^.^%JD$@))QZ;IF(^/\G3,0F[X7:0/QH< +M2H_QOR=,)O5+TR7ZJ"RTUXC,9HQU=6,%YHR%IC[LCZ4^Y>`\OEZ9)_B1BV>R(B7FATV1K,4JT*]XI\, +M_1-658'!.-*Q-.*/K,53S+\5S=SSVO*6J\$:,*T!:<5/G30HWC0'7&=Z#"KY +M;#U4A![I^P.,]"535@1C^;K,5D%HEW4%-(1Z1BN<56C+H8U#ZJT7&6B*Q/$S +M59BIH^.>]%UY*9:&'AR4&<,N2NBHK0YIQT11D[B1P7'9S\$*?EZ9*'%W@WPT +M@*GX;6`;-52",1O'[AXA*4,M_"'Q-6GVX<9"<2%2(-0B"GF,#D)/]00^\9>$?^3P#Z'`']@`^/C_0(9YT/Z*4A#>!`#C^T9S^9 +M:!P']!J+2?@1(67U#([2N1*EZ)RK@2]HY#DGGO.1CVK[Q>NS@"P$LS +MQL`(]!RK2!R#GZ7-*D+6N76<0Z8(NGL.':&8"]M34!PH(#;`@)G9P"):.%8< +MB^Y5.R_SZ7#F=_PVC`7B@`M^X5ON=6/._#E"X)S9WF_+?G1O.Y8*$J5B4`7U +MG`<6WQA"5X,NE4/J*A8]E=T<14MZ!$BOJH9OK-XKA%N+^SN +MW1@M),T(J9`8DICYA%,>,/TPL#1' +M]#=7!EV3<$[PS6H/!.F>R7YK4'R41RD]TE +M_M[O)EXWZ+*-"@Y2U1$F_]@7)QF4^CO9)H]W.WLQ)<+C,C&>7I?.V.U]3=^U +MP>([J'!U65/*0)FN<,,16>9M?9^L^/`\^!,TG(N,)JL;%T=.:`[6!,S>4Y7H +M8K]W4?:LT!7P)F2]AMT+[U/93>RYS`F)N%MN@S;8153#+-/20)CZ[Y,, +M\Q#`^:!A-S5[JPW[?C$"NO?7=Q+OX5E*R:ABW"5`'*X,*CB"I-6RXIXO08F5 +M.Q>($K(]'!_QY$I*E9FO$`LO#Z(A$1Q&1!S#WBR80,I\A769"G9L57B.P%X> +M.!A4,[WAB#V16?#1H_3Z2@O#S&??%#$S;< +M5&7,P=.):9LRM40H8KKP4\A9F,^H5I4(>:Q&%O'T6=;9W;U`O6E/I+))U*9+ +M#/G3$MO$I,0MO!$XH_GTBV\0D^,MO'DE,VL<&(6V@ULZD/*_?C1+5?N&/OR' +MH:M2=2@9.9\RSNS.J;EA2PIU[P"NG,&UD%&AYH@GZZN7EF0#OY\0#V#$?%?B_.#Q8EM; +M\RU3E0: +MEM\C)(45Q7*,PZBN#2V&(K!Y;:N,2`C-;A^.):H8M.&(K5'TD&DU1XJ/0E:4 +MA:T?IQ^2,DE5OMZHK@7!9=+?O?;3$RG)CRNBQZ/8*^K%\V)J,7N8 +MDZJ2P87\OX'=R8W=P#IW><&[O,MK%4E"`4>AN:DL!NM!Y(7/>VQIK1WR@O0> +M:CC0AI(#(+=M)ARP^JMJ(C/I!P'"&DHYNS.@:$(@9+7@R4'O#I6&6FE`U4)P +M3I.5GP^]*1\XVF3L!/IWJK5PSU8JX0*T+#\D-7T2`RS"^[K^^/@7V8SY\YX7 +M)CAMH2;=GM^?OEUN_&7.U>I)`Q@+&`JX"NVW?7[)(O5HU^F-UPRQ]>\`\W3' +M:'1MP0J.V8F4=LK[#FX%?K2+NXC!<925V]N4.0?'3V +M/!=)`Y=#CN?D@-KP2E6WB,E$HL1MIP7)/"Y`;\GDG"\5,7L\*9@E#%>I"\K/ +MKU*%?+D+YM&TI1,YPC.SK6E;8L^HPJ6%FPZ3"Z!KJ[ +MN(65!.HP@4/(:$/+PBBN4,>0Y$9]8\1BL>`@61.$!@W1*9&,925(;FZZ0@8- +M0B:=)18G[('X.')*9<8LO*WJ,+EA];`NF%"(E`6@6\`P;ZDW](..457I.HVL +M>0$("O*YSUS27P!"M[0:Y:[:\[S#&PX[?*E2H\\5.H"L^\,-*B!8/X((:X29 +M-6AX*,G!/`4^/3'LR6@K*"MZF"]6`:F\#Q21Z3P>FK;@BV\-7U&R"2\,0\7WO00T>NMV6]6R +M8:HA=:/KUJD+UJC[U!\<]'+>>_&<+\<56\<<&:^L<9L`R(7'-K>N,K!`[[TG +END--cut here--CUT HERE--Part 1 diff --git a/support/pictex-converter/piccon2.uue b/support/pictex-converter/piccon2.uue new file mode 100644 index 0000000000..a1a09bded1 --- /dev/null +++ b/support/pictex-converter/piccon2.uue @@ -0,0 +1,419 @@ +QUUNCD Ver. 1.2, by Theodore A. Kaldis. +BEGIN--cut here--CUT HERE--Part 2 +MQ!9!P@I-.%&31!*(]\/W#*2CD+OKPXS4Z^@@`31Z0'/CDL=T),W;E`[F4U!V +M.ZL;\)6`*[P]\"TVC.MI&9A+]0&.,UOJ09);FSZ@DDT@WV4E(9;Z.4!BM!9N +M9\V:2]:5"KQ2Z^8)HE#K[T)HX5P*PAA41$@DB(])N%-Z5'HPLHQL$R]!?!\R<6RGD<1H +M$F^V[8Q`&U3<25\$5U?)-PS6*Q$H91L<)9IBC8C6?'M[:8X]I)4KJE+$):5S +MJ]2JBAD:=Q+!3>A4#8LR!Y#ERP`V5`=_>`$T<*L&!7&>KZJ4MPV`\0>,P:M& +MHMPIFVYCZ$JKLC4=CS%-\(Q,`&[&!P<0-5`L!9)Z&'],5F,;@MCK +M;<4I;TC!3?4>KEPKEN40+BHSF'HN*_&E`OFOXRFH8E5Y7-*K3*DUX3@-7#IX +M>?2`Z;<23@'?`\0;P?(->#E8ME.GM\.CS@$#+RQX^'OOPIF+E`=2\7GQ+B*\6%U8A#R8K(4;WL$HYAL+P;W)$'N>L_#>XEXJ,P_Q4):\/6.825^-X +M&&NFGV'CGM^A?*KHZ#!7%P-T'`1W0W[!D:&^5=0SZ5ZEP$>&4:E*R(NYG$"C +MI>4'/&MFN#/"?ZS<23=>IO9,W=':8(.#5QJFXPTO'-!^^]W[:8(0

]B)1JOE[A?)7(<]:!I;- +M=XV:J*Z\@.5`(U6^&E[C#2ESAIOO&FK_DSV^(DKC$*; +MG$2G>7R]NODKA>IN?R,X=#">DKO!2EZ_2C??E:8_O2I9#:/6`9K/O_@8B`\* +MAT6%-QB)2Y&55-P4K0H!LI![LT%@R9@AR%V=M[4T]L[)U"7LG(-YR5*."4/)$MS=! +M>@ZY`TAW`.G.G6[\-FS!3?^OX-F9MI(.`,Q68TV`6%20)7CR\[W2\J(=T[*2 +MLH65?RLI*%W%XY"LO#=@E'2@C?\X+T5X9SL%UZXFL3I-$'(C5Y5S>,[)LUDHNXFW]2@N&=D4S"D +MAM[P=+D9A%,7<31[?ZC4FM[0=T%QKP1J)U'/84S1[N1,C=#.WK/7MSJ#B`KE6(VUO%Z4@)BW +M9B\^AG'M5UHO5'YPA581:%5]@1BO#'O>G,^R"%8]DQ^A=CNV[Z"=1RI2QJZA +M*Z<<)7UZ1:G^P7S?0B#>6W6K'!MR_B[N'8>KL,8C@@KE1M^9'65?[^5`@3DP;E]Z6G%(#L<=,=EX-ZTQ]ZTR%7US +M(,YZDV0#]O!.FY!L>1F');LI\^5T0T-L5D6$@S,:!).YV?C0C^9.?C`O%(N0 +M(5^1Q4$-#],1.9"LFBY!"KPI4>?BY`^K?EM^?)\PI#%O"MXIQ1QD#.!71B5I +M*<1XQ&/Q:@Y'<)QJ_++VBTFI,JQ_7SF?2 +M,!'BK>RW)^,SY1_7PF?P`M.JDTZI)P0%\=F^'+UG%YE_)B%D#$*UZ!B!G6_J +M.(3;1Q`]B/FCE.)X_F/C4&P"T>')!*4B*ESY4DA#H_`DFS8XHK$G%+G%P$M: +M[*9!5D6`;'?(%CZE#4I2?_ECC"2/PP6=H/?6[#T+;K.P@@$JU?+B7R1]?-H5ZP*35(*J4ASNX][1NC^$(I4K77D9!*+? +MH)M"7I.V4%),0L6&[VV$A!9&02%[F[7O`[TT+U/3$:L.+'TPV?PY6)APWYPX +M1?H<(^=/E"(7DSSI$91"OF +MR-PI22QE">EQ8*2/X*40X*;(EFD\Y-XQ'A[[A[SA[WA^MP^&/C%MNV4.8P\K +MP6`4!M^@&QC^$%PZF^.S>_,F4?F547#G!_,CH+V/1.Y"\260WM*[(_V2'2=\B/ +M^1AW#DW]/CR?@]DTVC[W\4_V$.II7C4FB/<3T1[#^X>-#\3]7V[[]J$XDOM- +MYC9V34%?Z:5V82_5,+B[^'"-PW[YL;5D7B1YKYC:= +M^QLF7AG#(O7&%I+\OXC"ZMR7UW+)WRDXSE^*72NF-_'AF;DQ$2'Y`;CST)G= +M[C'DX_?,XYGZ(-T'ZIS!2SM%J_D9@\[(Z1*AP&(.OW9OPY83Y_>Z7IV^NU7R +MCY9#B_ID6Y.1P7N^$_&\O9[5[KJ7Y,2B[#ASX/,8?W^1YB%3*?IX0PCL3-A" +M_.\WK08'0^GE/GU/J?FLV'Q92,)LJZJ2F6``PE;P7LA&3!4NX\R'8?M4P*^ +M7<4#*:QQ5\`[CQCH]D,K0R'>X%>*3+_AB:#FB4ERZ&<[$4;KW$WO(F.09,X@0.C09..=$R$V.!L#%GZ6KT)]UY[Q\[&'=G?13<+@/L +MY>/>L!#W46VA6&\V87MRQIYHKI>.,#.HUSGK!!J\%Q=(APO+J+7(SO?_"P?7 +M`()6XV(.IP([T@(18,7H%%.N4297N^R;T$53*2ZYCT?A*U,(.J*#D8*9#NJHJV-E*;))HI- +M=/!LE#D-#X=W3U;5IQQ!@1RQZ+\[L54@1BA-/B#H'4@J%7WC9'3@NWM=NX7; +M$#I4=_&(MPI;L)=PMOD),6?EVZVT1;B7;LS)K!`#\QT#C2VTMQZL1ST6Z#TG +M@OX;TQ`707K"7;UIE:89&!C'B<$&\[>VNW;.Q/][H3+7WH=-\5S#1L_MVWK2 +MDG*EJ+DT<6VAX*BL^2@B)=SN)9(:(6K(%>\'3YEO5JZOM,L.NRAPZXBR\N=1 +M%N;4KJTQ[BB_5LTFB+@[[4+;P.>*T1;]:N=`C'M7R-OJ-QL4@US9%!R-*0MK +MU_UQZ0*\\PS\2^*U,AOQP?8ZYC]^.#S^N7^NU6SP6$^&*D#;#I[&B*4O%WYI +MAXJ$+DD\7FCX[_=Q3"+9]T_61T@"FY>?M04VAG4H +M1UR\WV].SNYK(52'].NJH\_97E5'H8FZJH\A#Q3%!3@."2]X\"-`C&6ZY@)" +M7_"T,R]4$ID`P?P;XD"6QR^/1\R/2!UJH;&BY*^&D%+;C^;6V-KU$(4Z!XU, +M!NFH5F%XHBFE*D:_>@N^2Q$NMTJ[N)"^>9H)_O!34/@:W;<_]')%?LVA)^Z] +M^1D1KL`N,486'\1&R3#NO%47P\OC,1*/J)>&[-I=>_0S>%+X)@2@UW,2`3V0 +M]EFDH9Q+*+N8E,@<#U,>3MR&J2Z3=51??NAHYN-?!,ALT;F/`_IP#=G8<7T3 +M6DH`(CL).\/I1]Y>I?&5OD4^2W.2WV2ELEZ.2_ADF62EX?\T/KX>1\ +MGX?)XWD\_R7S(P&1A,C?-]')Z0([)&BA"K:*7P]D+ES;_PU\V_[GI[KJL/I] +M??+;[[56)AW/K=[)15`"Q,13D%%%)[(4+J`YN"6U.G\WH!HY>!&=KZ3.S)Z* +M$@H7W/K$P?`?K]^:6]W-).6PZT-]\1UFM2C)/I4WJ5!+ZE6_N^L4-41B96]P +MNHT[+&3X>P_"G/Y2LQ44OA*T45N2*X7XF2*;J-2=#'3L(]Y\9:*M8KY!)3( +M0]4?1ZU<7]B3Z'[QVW9WU"207P7*!D_](KJ![%\V_/,[FU>O+'8L,^F./X5-MU\&OSY]?. +MH5^E(#62=$V'P]77D]%2ZZF0[UJ'0T?6DKNNDZV]-^JEAV*0&BJ?9S%T%YFIM4BG,0NOKB< +M@N(+'H4+]/OS#LCLG2KE17&7!GGF3./?IY\">`;P6U;]KAC.W)_KNI:_2&I^ +M_&NX^%G#A`RY=RHKCO(/DN3'>4@Y*9A]9ES]8-]&F-&#&`YA6MYM&.> +MI2BXSR*ZHS.T&^*HOZ7V#+CT\I^G*?KRGL93@92CRG-RE-E)++LLOC/[6'R6$F\1\V#[L49%;C*X/*W +ML5XV5,BGC*Y0/F4RMME>3E;S*LLKUW;!]?7DVDR@#0-HKYD$!`.$HX'UB#KW^!TA<432,OG2^%POWFT?C)W[TM]^ +M/O]-J=[E_J$7N!4X1^0HZOD2M;D.0*WB"KZ);KJ'V1?VFW@BE +MUND>NVKNC'UGVQGV2M0P&?;5=T;I%W,;M(ES[O2%2,@<3D&(J9*UO,8BID%= +MUBGSZQ+;6J2%[RD9&R&>/UCKEHWTY=]X?3Z^N=Z2&6]?+:C+:3+?M#[_:']O +M@^Z7+<@/[US?GPR]T%U\N%AON6_>0DL&X=40&DLC+8%1E=>^T(/_0E$8AW8< +M+-0!S_!+]MW!T\;]'VG@'C-,$QXKIG3:B7R"18$VZZ]]N>@@`,FUY:(GR0=9 +M[UX9Y!O)1O&W0TB[F'[-JT^(\4X&@@&?V\#R',4:?K/(77YU7@H4*,A&0A/B +M2(PQ$B%#CLOY.7C`_LNGFTX_O\T#-0/J0/JP/P0/\8'FP,9EX7'X3(>[C?6Q +MV3-!8S+_HQGU9#WL7&9?>X:?@A^XZ$9D.AI';TO_W!;=<4\T%>,M9E_7RY.7 +M79?W,O\N7Y$**&^Z'8;?G9;U_6'OE]_-Y=UH[#:?VLL-W#2U$=0?':Q?A[66 +M.]O$!U!O2YI6G&-Y=T*-@[*&M'P.\+`'UMK"K;]`KSP:0ACAS;4%C0JTB[N' +M[]=;>=QLB#):HCZQ"\JJ"F(S2`>S<*3X@<]JJ(ZPIC951%F)7MZHCKA?YF8( +M.1!5HN8,0,>`<1B+LS);LQJUY<*K[O^VFQ?)/ACUNXHJ*Z@HH;Z'=!R^_E0< +M_29;N^#"<9IWXNFE'YP]@1N,Q16'7,2T5E88'JT +M^$5%8??10]C#DA[5=%87?%/PUM6]O`)_I,Z5!#5-;UP_JU"WK:T9;0GZCBBQ +MB+@GB7BBLFAB"B^ZPHK"Y6WB$G&\%!Z2`TCU%%7\T?@'S95%%87M:76EQ'+) +M#,ZU%97AF28=:MMEO7/1%J;A`+09HMUS3PU4N8XEZ=)/^[,`8;*\'0$_T6[> +M*D*N#,SY.>]/RS5DL8=9F#,H:,C5(S'#5VP+HJ]G@"1/WS1R174TE.$`41;W +MS[7EGS4+.-!9B.BL+8#S8=L`P&R`>Z'7M0(K4"*V]M4E)>&M2?)P@'8Q"2]> +MF\NFR;DULF,HK!C16(!=`L<.#+'=.-/:#NMGI15 +MF(J*P:!Y"M#D=.6F]`X7IV"PU]][>^5/RM.!H#!->\#OC?+PG_=FO6_6/'LJ +MLU[=?!?YY@9&!JU]Y0-6L+@U!J@SSA_8.IL`R["_6R5\^T5A,AY-UNOOKHWR +ML91N:AG6-^;\;Z+)H/B4)_>8!&9S+>:>1M(]?,#./54M\`,:U1\D@T%[KJ]6 +MDY2$:J41\D]?AA9?3RW0C'F<>0!*I#NZ(SF&6PLS`YGQLSCLSK,S-9F>S +M/^69^#,4>8^/,?MBW^,1QCW&*HS;1D]&7S>3E"`02IFT8Z(E'&?:J>2KCU]_ +M#N?\[*-ED4OI^@X^F=?`M#.OOZ*Q])\"2_/-J)DH:ABO-%8_G?`LQS+JB"FR +M,0;NE/::3'H46"HBIL2W7GFZ-2>!F8;3K>B^WM`Q=?-B-]PU%_<`+IY;<:]* +MR#U8:][#`2T3!2]KU(8-?8&6P:GS.R/1O9@_@,TBB9.HW#S);--,*E6S530O +M^?V#SLS-ZS8[#7)M>KF=:3L-G,IM;L]=,?U"'Q3L-C,)IG9DIM?LUO&5/0UDSKMC,32;8S&O)_T"'ORM;K9B:FDVNF)G83'^"@) +M\=J8<4?[A$+H)C9;-5M@6N9)5;/8IOS;'9ZWT1F":#VVWA,/Y1),QLMH2F)V:94#(9N83$^A,)M:K5*AM8UVP53&M)&UM]D@T<36L +MV4P#C)O8:W^Y3>PT>@VF8-TA?[ZY<)'[":]%-L)I-.*M@3,9#:*MF2!K_KI' +M>\WK`4@88KF=A_AMXGV/&MINN)5,:S7;;^^N'`8\,JZW9[+9:S^VQ!YSFCSA +MS:__6ZZ%=E'8S$SYX;9O(-+.SVDPJU@]WF-P`A)I)B8]'_HI/XVX:R93:#29 +M"/T.D-2G^P0_:0UT7_S>RET*LE-L]>FVFL!%O]ST]2HW(IM?K%>Q)_X2-)HP +M;-_]!Q/LC,3(,*V(!>PV*M5_?1[@M)Z&L5;"9\]--[#9[$UG7__!2SX]X__L +M%&DX7_P(_\"/]0C$R4P3.;-5Z +M(0HOT*PEKF[MYI7M-ILU7XP_,3HPC'AN&"$]M%9,P=O@V.PFB0FVS/G^$(PT +M>KVFQV&MU@!="&0ZBV@I.RV!(`VMF)C7>%=X1V4=9KM9M!KJ$`_73 +MFL"2?^43,(N.MV:H^B-`C6T_X!AL>`"F)G +M9J_/]!--;36`TD*%Q-M#3,.:/X%,\3PIS6#I&]C,?UF:_]TS>)_)X1.VVDPF +MV#MK8"9K4UW5I?Z+A@@J5HEJ1-%RUPQ=+/#<,$:;H]-Y3P[>V/;:3?'+]_WM +MX=:@RLN:1H+LO@7?)>[`=P<;;5_:/>2=(SSG9.M="D`"/D+CA0%&A+K70"C> +M4-#+D8U?10:'1LY;7""_/^T(N9OP +MEFD9!_L9FTUA[Z_?ZK]*?Q6WUT?2M)@$3LV<7ADI=)G"Y?XQ2VIT@101G+K6 +M)TA!0"*K.BAVUVC"*9CA-=`IP$?L!P9Z\D1313W/!.%+V)/V0&KMGA5'SD62 +MD?4BU`Q,JR77DD-&OELQ,O%_FY&PV>;AUE]3IR5+U[I4*)*Z_$@$T+SAP2,B +M?H\%1C2$.D](_ER/,1^\1V7F0)]S4!4L^CF2ZAR()46,;4L2-CZ^XVP!R`!N +M78HOP`F4V1P-G!%``*1!DV<*,O=C,D!UD"Q0S-N,_+;LR0W;[=C^^V9?V"4- +M+6QH-2VX*P``V*\``*AK\Q8@`0Q024-415A412Y005,^]$T``!W0@YKNLC<< +M?^IL0"J91>W1NC,S=LXLS$DM2)6)Z23B2+U$D\22M6ZMV$7F9[,R]-Y=YUW= +MDY:0-`P'6.BGQ1_?_>]Z[O,S,PDE$DE))E)ZWO]K(XVV[KSMIYFX:Z +MU7@/>@._!F=/I=/I0OG?-Y:];:A@:;8WK#K[%=Z#RL7&8+=F%ROO(TI?T$5T +MYGQ\FJ&G/-6K<##9[,$]&@W&7C,POF_7^RS%Q@`XO0`QQAVL=QB%R`?+QZ]N +M!]AMIS;?8.TY:9K'8&D1]]/I3'V=P[C-P[!>&V[V\U9'*1IFWX'F +M(3UH\60<#)`24.H7&H+S!?,3!KUQF\Q>N-.,1%XQ%XV+S%B(?+\-8>!?-9X[ +M4!V+;I[:.&I`CPW\?YY&Z>0!7AOGD;GB(,\=EM7"[)WH&K2>^G9KVWSL7FW; +M3$1?#R/F]MO'A\C$2?IY/W(#*SKK9V7%`^*P?R,7B^'B\OS&CK10'4#*]MA^ +MZ\.*G_4?"O;9>4#'R*#_,AZ23:@8$QMJXS]#KVUN`]K3KC"<)IR3"](,:"'M +MH[RD_9WO?Y/W3Z6L>N=K-K4Z%'JYT\S5@W9ZW8[ +M68;XSVNL;NGK&[5$U+LY=/X,OK]DVE5^7I]+09@/EQ\PQ:JC2RZ7:R^O\ +M!L_7V"&=UN+*V'4Z[.=>;9>=ANF[>KFZ^?F^#*\ +M'P_)F^"KX=+N=/I:YW+!WEBW\P`[KSMR3EGM_7=MN&TJ!OB"R9XO;-V\_K=; +MK]?L]?X=G2S_#I9U#.T=C3J[!#B&M]!Z\"MUGPO/NO&_AA#+PCV/AT,[7V-FE +MW"/+HFLM.,MMQ&M.P&9'3!V6!TS;KNV&#QAUN`)UP6WCG-G:.IKH0E>>ANOP +M&T3.'/8/8#2ATP(NV8B1H!!MUUY``NLU]MFT<@G<9VSH!M=/5-QEQI^VP6$X +M&`#\#KQ^GTFH"U9:9\,VS`"6#.V5[,9NZR^:L>R-90,:=J#4O;K082`:+;X; +MMMJO;4WHL-60Q1.Y`H!93[7D&,S!+DP-7#OL(YZC9LFM'<.\U7,"(0-.'1V% +M\\%_GSMFRC8UAV&/F5PB"IT#`[A$:V&S)`]8';8BZ% +MNCM[NZ9H=C;=W7#.W3N4)YC:,T!A#H\"=\?.Z[T^D.WUSV(03L&6,"$'H=/I +M>]_E_3R0@U5B)216UX4&UG>'-UC?&&&GQNO6">'E[ZQ[3XPA]!)(,<1C9P\W +M#?'H['?3FZ&H9&$3+/-[YLNH;W*/50S!SE>M%'KHN0/3OXNX:R4F<'<3?L[E2 +MX.Y9_B+FWQ^KFG%S.=_2?,,7UHO&E1=2F*Z%=S5W;ET-N[`2I@MH39T`P5)_ +MV9G<#=5FLV20L[-LA`)&?JJ65$&0$Y[L,"59!MLQ",6C-(./-'L*$5UX,R8@ +MQ1>/9A0GJ3$E*>X@4#5H28]V'7)L!*A.(V`;7H6E+?G>LAJ$%4W3-631.PAA +MHXABO"^M4"3KK`5AE`(617!;BV64+CA84C'=UR +MN(&36.AG57/M%VT%OW7FH("!3H:R* +M9ROC:!HNC@=PFB[*N(!EK`3.4-ARB:["N#OH+"C9D6.N'0B-?$#R/I0;'5WR +M!*=@@#B(T-8>9W2V;Q@)X5%/NNI#.AIV$O +MX\E#3B1J.&JH+^1"'F:9)'HI=1P+T/021_"-IG5> +M]HZ:M&D7U#=W-\&O57N,]M[7KKD)UCD:2:IJ8(.-I[;;$',$ZRBJG#3OHZ@0 +M9^L::O:I.].C[C.2!F$\MGL4J<_,0P'7DSU[G6.S8;R^ +M?)H='NQZ0;F2H!*V=,MGSR=TV0ZXFXF+VU==?PR]1` +MN$XA=RZFZ4.7XLPT10")>? +MR1YB>45)$R%J'4EG8Q'_1L6*?7CQ^^*&1X6K!W5X"4`U@:/3Z;KUS!IWCW3A +MO6*#*TV;;/$3=Q\\?>TDM'&B0^^(\7+P?",*>3F#$4>%BA@\!*273_JFJ\$U +M8AQ)G[.G\GATBFN$^*I:?)-@(A#,[7TMC5*;+['5ZHFR]B$J(P:EU5S45.EE +MT>OETJ9JJ9J+`*:[MB@XZ_7H7`5R07E]4*NALFG:.=I&'"D"/6I4*="GI>)0 +MXV,_5(B1##(+J/:QBX!S`+)W7H=?M=0!'X`Z7F#GV;FT:77IJZ#*$!/&T>QE +MT^T;5(()GC?1HDS@=MW="#'PX1GKPOB`N[Z,H#;2")(F)LK1''^WVJ-&G2ZU +M&G1[%!7"L&\[B9P3-T-"A\.=J5=@"C/K\0FEG3=<0-@AG"A?WX;MT,H43;Q1 +M6U76UM36S]303`!(_+J`'JHP&;JZH9DZ/B-KZ]W4 +MUC;.GH[&`9_M@5)W[@-YNXKYO0%#PY2+80-L6Q-F(+1<9NOFTM?**0P%!#!B +M@:P0QPB^X7G!$K!)F"2FLX0,)PAYE!M'X@WSN%#MI?#OEY6FE3LZ=.`VSQ`: +MW#<9*@VLV$1$`9@W115BH)7J_>LC?T_L(&CCEA1TU$8\*J=5U5RF]P[PBYMD +M->ZEXKHZ>Q5UN[FY]4O39UZNN;0=*A/>9?),+>@ +M`;0`)2`^;K:V;\AO'1H`_7SFU.ZMH:E73Q]:C\Y616;INI7+?FL>9H%-T7-Q +MEL.5K*Y/`E]>76]T/5S."HAV2J1?+IM46:SV:8<=LD$!3;[#88U%9ON769M> +MN'0QA&F"A%]'3DA+ETVD>XZ\3VD2-[K94\VOMD&P3YV+T!Y^&R$9&BG-KB`) +MT<*3IDB,S-BP4,OT;0[FXT\ZX4_1ZS="(*9]>F924#T'?7J[#,#/+I-:KKU= +M;PU="5Q-ZP@\'`7,=L4.VY=12`W@2V2K*(K`%AH3HL'G+5IA&I%:0L'W&JY_ +M.C@#%G0CKS&#%A`VRJ\:(PC*$T+`!]SH*9PH8)4*E#T +MQ@IJ"H?B@%761`5Y2='JT7>*PD"T961(7B;EYN>"9>*#< +MW&G6T$UY=3X"7D]>F^,+MVO23#NY^<$4(ZMK_0L;^_5_OU?Z]7IG*D=;89=H +MN=Z%R52UG.T;U@W.@38EX2I$);5LK,:5>]''4: +M_V0/*M=6A?BZ-(ERH`J+KPX5+7/>'07_/MTW8U3;L=P*F,'O5T79#H%XD_;I +M$K#'2QNBRS=#=^NZ\3R&.4O30L_MDRV7#WKJ';*]5[!1=QV&U;,^+UVF@8W4"0GZ7W4'2O45@Y +M67BQ^R)LQ(0(O`#2S&_UI5(UW\:)*4@1;RD35Y7L7U[;8$,(Z\'=16B05A;V +M=ZOL#2B8+JBJ^A!`&T1!"/'3#M%R$0M_J&7[VQ'Y]6B6O#*[G96R-:T:S/5* +M)9Q25W-$ZLN$?&XSM^>/Z#,1Z$1ZU/K=$+"J'U$K_#7@*Z:?I4*%*F4\_@GF.(@ +MN-)8"B3*#;JYZ38N",/2BR+ULJGFONV8" +M=$\NY[ZW571&DX0AT:_-NI2=5SY%^F]+PY"8I<](3^N`)P:X%]:^[.J8-LB] +MRDI?SI&Z09ULK[<;*,5DR%=3%`=L-0W.=])MN.[KBNYS\R1JR+!D(%XKB[8V +MDH]YJ6I-]'SX$(]Z_K1[UCP/1+O]0@/0MJ&QCW/#KC7F9LE!3LI;<\^KE"*9 +M^,[GG5FV"2R<)DDBR@5RMTQH;OLU[5PBGCQ;YH=;4K#@VX42KSZ2_U]3]`I@ +M"^OLJNYH+T)?:'"OMU_J+RH\/-PD1((AS502*:2+ZJ'-K'$S\(=8%J9Z(@:7 +M6`B[07]97!^?4)-;-TE$3G?EMZ>KK:F>+:%K535;T%],Y%3IG>'-UK]3Y";I +M53OO5=;,Z+0!+NE-E<[!>0/7MUG6+;I[!Y3=UUMMW=)`QER5\%@LD\E$3DJJ +MS(NOSKQ(;:/4U(\S,W`SXLK9]%#A6SEO$C'>PVIK1T +MM7P5=*KI[&;L:.II\M:?Z?2\+)-UK![PZH3+429J.K?^S"%T76/:+$'T4R:\ +M^C(SJO>T=,B2EFT,WOE>[_[H9VOL;-*A6:@#$7X:\+D6YNNO +ME9RMATSM:!EI"\1MQ5QAZR>@FPROR<=0#FG(PC<#F(6DW,9;7[D.![VT>X>1#[3\E_26T1L8]W4$6;\4V^],IXL[0$-&T9Q +MJO;@!5!`ZBEI8-AU<6PUX:]O=/:\^RZ^+9?+#:>:LV25\W3M#L,=C%KN^ +MB[-*$%@]EH4V-Z#J0N6OL-P-6L&[[.+=KXJY]@?^P;OLB@O/W3C%"5MEX[5_ +M>TL9*ZLEU4RM5<_8;A'%*EBW2]('F6<>R>VV^J8@O[3'RW;.T&G@(F!,)5=! +MBQA0/?9M'ZE\S.XZ\5ZPPEG.V$`)4$)?PD5D(J,*%I(>3%9>`_H88Y1NZ.7# +ML^F]0---[\>@]\>M1&#)!Z^,@K\^.&=2G/C]5I^X$^\]TF5D!_MJ!CEX_)#Q +M*'(UC"(MS:KMJ\&\2CI:BN4,"PVJ(3K7XDNRGLYDO])!3@56X(M^-12;V +MW)TW3S=/9'_S?:]KVIL_`8'"84J8]M"AB0G0TVL(1GRS0'O0)8];H5N&`=1" +M8YLU%:_)(OR(50<"#LZZW"^P&?8^2@"4HT*SQKRT4`3;<"C[!4X]A`X8NN@O +MS%IEZLI)U`@KBQ."EQ;6V5D7&ZU'K$Z:Q-2%'=I-?25C&DQCW&C+QLR/&;LD +M30G4*L"N\K`ZJL!P6$J/<48]PX>%R/&[4>-=A-E*QD\>+6CCBR1$9^[#9LG>I,)^Z:$S:XM!DBP:6*3#P +MHNS%9E]JN2A3KI42>32,[<&T1S&&6U>`&I?=.^NWERGPDW:1UM,O0%M)/7:I +MJVDB`2^3T"?P&$3)Z&/B!'@RV[,_)AUWI\]+5M"QF'K9<3%:P +M.G0(;7[^@LLC'CZHM;+(3#PH6P_VDL[E1*C,\Q7)I6)VZB5%]_MB.+\G:(\S +M[W9-4E8_M]D7THN9Q]$J*6@R9][C]7^U*TF*F))@F*&^7VKR=9J +M_@+J&2G\I=!N]\N;::'3Q%R5E_>XWI$T9_5QQ#5;)QU`2Y./1YGWN/Z.IK'? +M%7SXT"T/L.']@@Z5P`%SF@X,G:_+[FCE"42F5U4HM?"%(F%C=ON42#B.\KVT +MS%S63M$PML5$%TD3%OA5.4]QA,)+[@E+IR?)<"2A +M+PG_&!__/QOV)4DB0A%$(D".]'`,+9X*A[I9"H(XRKRIUL]*6"1Y4,A<.1\@ +MCM"]LAEPK:R2&&#?$R?DRD;U>445?AX663V^X6/&IOAZ"46#&6Y?!9(,J7A7 +M!O%Q@Y9V'HR'>LN\5Q'@`:(S>718`.F`BP%%P[U$;W@00X3:J0DDD,']MJ[Q +MR%61"+,EBH9(I8B^R8Y2"]]$AX5=,+6M:W1YQ1Q,^2;4&[+!3 +MKK8C?YW5HT8\^5:G)UO(MBP26DO%O+'XHI$"#0%2($)_HD?LM+("=-U9L=`7 +M0K+'D:4F0BKO1Y#D>1@G\HS-PN0--B#(CYEV^XN7C*#-.[946)?,$I!RGPR( +M^:K5?;V>%'[')K\2.B;1/BFT#7[L^08\C-MO"^Z#M8OQ-UA$2XB50P/Z9 +MBS/4Y=XL?X:#COT'65/,B`I[3O2OVT<7*C3E+_3+N.*LF%QG!@!%=)%I$AS1 +M@2C0FD226,.S%N5UZ,OOWT]0+&W;;0IQ$Z<2<]]3)$@P6(7`)\^>*IT7;EI[ +M\BG$S[ZFIN-3DW0I[([K4+YT[?:RHZ$F0P))CS-QY\;V5`I66V2(VE;`3N!L +M"4=_QCI!/4C^?*WRQ$(1A\9FU9O$Y#6W[OGJ7LHX,C!SV,R=6_WR9S]^P`+& +M;M82E0T4^@F8SUS.1K536=&9SM<%:&9D)TMJ1A1`+$]"'M]'O?'T[)!64[YY +M6Y<:/MZ^-5/I7V(!.<0R8)H&PFH;KF<$ +M^HD)>%'?OM6K?A:L'=D1LCBMU16=8[5PU5IQL[Z(7$2%DUA`LF]L*P&U77VD +M1,TU0X$6\JI-J".F*Y'B$DL7"J&SQ'$Y&`-*//ONFT.8,#5U#E]+1HL?6JYN +MAM>'-\&S56[%OP-JZ9'C@<%TS*7'5DIIO6.-]2Z!J49=/@:MQO%T,F$@-+5; +M#+ZJ=Z2M\K_"5\M0X;*&T2J?'3Z,-0X*G7H)FB`HDPY("Y,1@EVI?0=OD56/ +MUE\4^O2.42:`F2-MS)BZM\=\K"?[SEN9,XW+B\CV,'XV#E^ +MJ$"I]<,,_31#02%\?H[;@U"Y/?%J%*;2:>4^'/IX^#7T*_4(L?+_-;-)?W[T9.`_W +M_Q$7'UKU0,7/`O\4,[*DCQ'D]9X\4#)^,\R=IRGJ+NG&>=?4.)B@O,^H]R]? +MQGRQ)F%Q7UGS+2]!\"TG0PSD84<*/_$Q,QP'RO,(/+Y;43;KTW7Y+]G*(B>9 +M)`@^^F!!C@?L$#-YKL;M%`#?3=D4XA>4DT8J=1OLVDZ"I+`O2]+1`[EH,4/W +M+>'4GZE/9Q!"5G7F1]S+L<[WOW?IY`\WRGMN(JTHH*K4%NX#"%$[3;TW+-^' +M\0/Z?2[NSIY^QHZFF9NT:=>EO>,I:BT^?J:>OL`U/DVFW-JE1%V1HT.MU>M3 +M[76ZW9I=K,P!D/7MH742;8UMVO;-%_(;W& +M;Z]M$!]J('$8-%S''*D%VF7/)M#1Z.GL5>]5ULS`9,&(G`AJ#%3S:FL:=%'Z +MR&9XC7&DX*#;5;UT;KWDF^GIT,AM3&C&*?R>*%N-AX5YN=%+3T"%V;G:XPP, +MR\$ZQ?$)F1`1?!P0R($!0'REF&K1RXT(184H832<+?V7PV-*7)->[:4,9 +MDJ&'ZP5)T"_WB,G_;WR@1YJNQ&TM30,)V$DG-_3X2X(+B"VD2`%Q!>HI^'7X +M^"XP#E<`!D73"69WF;`DL5]T0D)YP]?#E%?"PJ[Z%P<1<;R.^0B83B-Q+I?; +MU_^I<__0$Y'BR/%]_:LBV^ +M=B\V3C1B)'UYM<0.35X">\IK$B2W1VS"L=$,=`QN1UB2?@!9`."EBK((>X$, +M8H$21LE4F@I9=2!58I%)&:RZE(T#IFSN6H+H13FJT2((EIQQA^*Y6=;85?JL5ZU&A7!H+PK*8@'7 +M.R]7MZQZ\>0&,"*969MUP09DFQ#BJ6NO*D/XKC#;3C1V/X86;#S,`BIJ[;5V +MZ!ZQAA(8]F%*F+S+$3)L3A^_2%[Z0&-72J07"4PX@V<.TRI@EIFL==+=W[3H +MJR?Z#)-*\K01#P3M@)/:K;L&5W13!F8/:]HKJ_-GRVK=%J4(KLF(5J]&!4FS +M4G22G^$1[]WK[K3ECNM/!*E!FLTHA +M->VGV!=PU34HDG$-AM0%>W4F_7FIJSA>>G-GX;=TG0*K;,5S"HDK`6HAR9$OU]\2N#C[_,P][I2][II[W,C +M[O25W>->K#WO!C8N_\?8<]3"HSGVB3BG9H<8!_4P)8-\?^$I7?P9NGWJL_&= +MG]/7^`[!G8/XLK8)W2MCM,CZFG +M21X;YT,29^`IZVAP>9,3?=2S3FH7M%?GG:Z`">?(&)2^R,V4.+XR?X0E[H!T +MNC70^UDD2.S);560@#&1LJ. +MA)`HK+(JT-(@HZC9[,$=PV30'Y`H%@-LYIL>>@ZJ!H9.@2'8Q?@(;%E9J!K0 +MH4)>'X)\5(7ENPLKK+YK@I9K5V&`WEFK?53=XS,$J9^$8SCHFZ8(V +M/AR;PACX;CH=A'_O(?2R<#X='%CT?/0OYDJ+D=X3T1*II=2QX0-FF(22::]E +MU$3ALN=%+G1(SHH\[`2DP2GO9?9R^P/*:Q$KQ]V;DUI:3KQZ3K3\%2X7;W>" +MZI1G%-U)O'P+J3<@-65)1H[]+6Y'!V->R9YG[G0OXAX7/FS^9K__X8`QMB5M +M9T:3$HHTY6=$J\3Q&OMNN2K%2.?9%]X]L"IQY\V6_X2L`[^K#"D1BW$P'^:Z +M&X7ZE'N5(O\:UW6YUKL2L'`@*N7]2VH=L6%D.O +MYN$\%YGWJ5"B/U*3D6/"]WB09ZDJ1GWTP[-E.WP,'Z[;HAH;[_);#Z.MHXI2 +M`LN2>^$HA;)X@XBMH0N-07F"^8D?+PHB9(X-YAJSQ:9BVZ>V=>)(H]CGP$3W +MS#Q?.2M\XY)52)J2`HX"2]:1?U)Q(LW&;T_*1X$PWC,:E9/)L2UV4C58&HT6 +M`1HH]G?U*O?JH$42Q%%R")&P1WWJ(UN5%D$..!S1AX1L]?`P%ST8X>C'*[,2 +MLB^?[;>/#Y& +M(D?6_1OR,PP1HF+!?Y^&LP73&(D840_PPL8HL'`0'P;+71FT\9"6[#M8?".` +M/E08-M^2CX21N$G?Q8DMH*H/-68%D$79P"X,."WQX0FN,O;;0H'C&+J,^6TB +MFLMNLP4`395""11;G7H&'1<(4YJ&/1Q4E&*[J*'<*)D<5*Q&.^&*XI)S%^D_ +MC69*-!A4ZPM+@ZR'?08^T>P:_0GR2(3SS'%TLN6&:[SK[^/7+[IP/(W(;E89 +M-@;+@>*PN-BBP-HSL4G@L)CMZVJJ:.,K]Y?E#7$"T/?7"-$=H':36Z+_,]T6 +ME!#O]^2,2=1;VR.#U*5%6'@@QC:\#Q*X#43\NEET6#WI'E_A9;G'#VA9FY,G +MREAJ@>@\C4`)^9O+T#J+P!.CJ[M*B@#3Y`$4CG.=I]PKD7/$-+8,/7MU"7WD +M8SXS+^Y2H_WQ'FHXC-WO=IXA&]`D+*$CT"1GS"7R_,_<9;;-3W +MN`0=7A$&#HJQ?ZQ!U>$0=?]P@Z_"(*5&00IBD2$`)#F2HIXXYB-IH5FO2JB( +M>?R!9H0#0I_K9FV7+6]A6"4`ERTBLK&DIBC7HX4[D2:\R2WH22]*1Q1K`]>W +M1533DL317N$)AX$PI#,XC*Y!Z.JK9OS5HT^5/*ASM7.<2 +M:T::6%-&1-#$-!F<(FQIF1HSX49I49?PA?K_Q!?\(66ES@J.TN +M7EOR\:APU*S[]8[^H>QR<']"(RT1.!#[;A>\GL0^?MEV[\2(DS_FA[4YT/O? +MI>9$"_AVG[TZE[[7O4:%.?F+@YZ5"FP:E0ZS!5"0U.AV3;WWT"_T(&= +M6A_I95]:A_W:!@KXNKGD%)S-[;,'M[WIU2+A#N"R3^W\S-YI^/722G11Y`NK +MU^Z*RQPBK9\-`Q-KJI,R7\B5K1AKPE5]HJ1M7==>L-."G&/Q!%FXB5D?-VYJ +M)6>\"VBH^W+C"?>)?OW#771(:8%4<$YZD1+G*4[:2MCR1UB,^/.D!,6$$APB +MN<2+6;X'&@B4"9(^R7LY4P)D2IAKQK+SMS[O->SPBE/,>RD3RB4E?^@*A\)R +MA5F]P!5@T6_S"+?#47/S"+[O,.,N7+S)!)#C&9O"ASPF;113_T&:17PT_/VS-2%+_^F; +M)6C`9N]4Y27 +MOWIW[AK\2IDS\:I!OU&O-^ +M_P1=V/I/JZ+P%M^W%]1B$E!O.(6;W&(?IC!O63Z0GF2,.XND7%ZDO2I*`/Y +MD(ORQTO(F7PH184S.1"+\,=CA0A]D=C?04]$=JHH-/@.2C$PG+&%]R.[X3E? +MB./S&[_+'B\C;3UMM^0W?XH]%;#CHCT?R+O1?YUWE,XLD&72QP9=*2#+&W], +M&2G5Y%VY0Q*@C$E!&+F79_)(ARH?_CBDN%\?,]#XZ9QH:??BGL*&/JD4_N+U +M&P'7D7MOF`IY#MQKV]$53PG?DBJ_J/#^.1C__G4XY'.-@%,YE_IGX%^IGU/U +M?Y5^?T(._G0?C:6)LDLJI42>TY2"$FX?V6 +M0W$HU83`HBT[F0.E63\D<48R,1=D\&#@$]\P4Z;XLK-0VHRS:33C5R&X:I*) +M$3$7'K@_]W]6/)+V:K=7E;H/DV0.[=QH&!-.^CJ#HWUC2V?-`*KVUX`T@ +MM9&S=SV2G,E8R;61.'O4FZ+6D9'G]>;/3H`Z+3[I?_HCZ$W-\Z5V5X*&X +MZ]D3KXLA`Y1N,E%(D(#KE`GP0;I2C6`@UB]AHB7'LM>&ME;(DF`G[\@(T#^1JX.TF7MMH[R>'V(7J]OR-'( +MA,[O#G)WI_^\V26J.$VD>&LVW*Q9JM.6A$/H(TEB79^P\:PTE?1Z1?7S[G@7_>D8 +M`&PE\Y01ZF`O"7+D+J;V%X-OE[WV"3V^P3EE\8V"^^P:YR7;:)E_^",%K\RYN&QTS3,U!)GP/"7H8,>H=RTVT_;8-9J67CN5QXVJ@E_+A9T-3 +M9UU:#@=7/I%B\57M*J7@T"535Z0&P\W`4&MY-V@;Y@6@6T]*+F'OZA+@Z^K#[?<4.%"SXG;EP[@MRIFKAM<:3*[ +MK39Y`I*$ML:I.((X"V2?A(_BY9IN5*/EZ)A*B["$YV)7Z3!2OK!.3F$.5,4U +MR+V.ARSY;+5J%X^]X[<%;Y\<^#\SHI/P(VV$D\F7XS>Z*9:UY'1TYLWD'57F +MB<:FS87T2%[+F39H&5UJO`!E-Q\134RNCBJ=-S<93G^,QO=^YQ.4:7^+X]!P +M(*BAD^W-86>AB;[?%N$>I:2R1Y_*G8$=H4UF,@+Z(B)-F*%@$*I-FOGJ+WE. +M=?/(ARDJFW)T\=E,L7DV(.6G-V(DU*)A%J^72ZS)MZB+-NJG[1ML>$T1*#VP +MGV)A=%P2E9EKZKBV7NK4]X"8D0"R#2-8H13@9L2747'%0R)+Z<..:E\&CI_% +M5-.]KVBD>#)@-?H/!Y(#>T/T;,VZ\[7.^_M$:B<@PR>*\:JBJ08M?!.K_BC0 +M)3XHJ\+"H4^0^KT2\.]&N'PGZ>E/VJYA8C_(C<6$1GK`AOF'I4`GHT`TP=', +M@,CFW":?CAJ))!TWG,YK5<_O[&,SK-;A-!C-&DG'(:1[":4W`:B6ZFX4X+`9 +MI[Z^/$N^(:_SL-_,R\2]7Q,NEL:18B*\#;+EJ%FT?R_,K15P](C>:NV8R(AY +MX(!S`'EOUMZ^3D/8,>G4_1PZ;NY-,F`.PZ7O9-*GJ6'2[.32QP(V#46Y+F[[P'E-YOFXY#:?L-A]PUGL-1ZS2> +9LT'\1G/V&8\QE*[;K\==A&@H+L>J_[^\``!U +` +end +END--cut here--CUT HERE--Part 2 diff --git a/support/pictex-converter/picconv.anleit b/support/pictex-converter/picconv.anleit new file mode 100644 index 0000000000..524299a482 --- /dev/null +++ b/support/pictex-converter/picconv.anleit @@ -0,0 +1,13 @@ +Kurzbemerkung zum PiCTeX-Converter: +Das Programm erklaert sich (hoffentlich) selbst. +Das Datenformat fuer die XY-Tabelle ist: +-------------cut here--------------- +Hier k¾nnen beliebige Kommentare stehen ... +Hier auch, bis... +BEGIN +2342 34535 +2342 5675 hier darf beliebiger Text OHNE Ziffern stehen +1231231 576 hier auch +.9 0.6 +1e-4 -70.3 +END darf, muss aber nicht hier stehen diff --git a/support/pictex-converter/picconv.lzh b/support/pictex-converter/picconv.lzh new file mode 100644 index 0000000000..cfca20833c Binary files /dev/null and b/support/pictex-converter/picconv.lzh differ diff --git a/support/pictex-converter/pictex.info-cb b/support/pictex-converter/pictex.info-cb new file mode 100644 index 0000000000..c77de0bd9b --- /dev/null +++ b/support/pictex-converter/pictex.info-cb @@ -0,0 +1,39 @@ +Date: Tue, 23 Jul 91 16:59:55 MEZ +From: Christian Boettger +Organization: Technische Universitaet Braunschweig, Germany +Subject: PiCTeX +To: tex-d-l@dearn +Message-Id: <910723.165955.MEZ.I2010506@DBSTU1> +======================================================================== +Hallo, +ich habe fuer den Eigengebrauch ein Programm geschrieben, dasz eine +X-Y-Wertetabelle einliest und mit einigen Fragen an den Anwender daraus +ein PiCTeX Quellfile bastelt, mit Achsen und Beschriftung etc. +Geschrieben unter TurboPASCAL 5.5, sollte aber recht leicht auf anderes +PASCAL (oder C..) umzuschreiben sein, da wenig TurboPASCAL spezifisches +verwendet wird. +Den Quelltext (und natuerlich das EXE) koennte ich zur Verfuegung stellen, +aber OHNE Funktionsgarantie. +Wer Interesse hat, melde sich mal bei mir (oder waere das etwas fuer die +diversen Server??) +Christian Boettger + +________________________________________________________________________________ + Christian Boettger phone: (+49) (0)531/391-5113 + FAX : (+49) (0)531/391-5129 +mail: Institut fuer Metallphysik und Nukleare Festkoerperphysik, + (room -167/-168), Technische Universitaet Braunschweig, + Mendelssohnstrasse 3, W-3300 Braunschweig, Bundesrepublik Deutschland + FRG / RFA / Germany +________________________________________________________________________________ +EARN: I2010506@DBSTU1.BITNET +InterNet: boettger@julian.uwo.CA + boettger@rz.tu-braunschweig.dbp.DE +X.400: S=boettger; OU=rz; P=tu-braunschweig; A=dbp; C=de; +UUCP / UseNet: + or + (whereever)!uunet!watmath!ria!boettger + (whereever)!uunet!mcvax!unido!DBSTU1.BITNET%i2010506 +******************************************************************************** + + diff --git a/support/pictex-converter/pictexte.pas b/support/pictex-converter/pictexte.pas new file mode 100644 index 0000000000..873ab9b1b9 --- /dev/null +++ b/support/pictex-converter/pictexte.pas @@ -0,0 +1,1391 @@ +program pictextest; + +uses {cb_util,}dos,crt{,mathfunc}; + + + +type styp = (right,left); + +var aus : text; + ausn,oben,unten,rechts,links,eingabe,ausgabe, + savename,savekomm,unterschrift,labelstr,ueberschrift : string; + unitx,unity, xmax,xmin,ymax,ymin,dx,dy,dxsub,dysub,breite,hoehe, + unitry, rymin,rymax,rdy,rdysub : real; + fertig,rechteachse,xlog,ylog,rylog,xkreuz,ykreuz,rykreuz : boolean; + ydez,xdez,rydez : byte; + ch,sprache : char; + seite : styp; + dos_major_version, dos_minor_version : integer; + + +(*********************************************************************** +Received: by DEARN (Mailer R2.03B) id 8469; Wed, 14 Feb 90 18:27:58 MEZ +Date: Wed, 14 Feb 90 01:19:57 CST +Reply-To: Borland Pascal Discussion Group +Sender: Borland Pascal Discussion Group +From: "John M. Kelsey" +Subject: Cursor questions +To: "Christian Boettger, TU Braunschweig, FRG" + +I finally got around to looking up the three BIOS interrupst I needed +to call and got a working package to make the cursor vanish, then restore +it to the same kind of cursor it was before. (Otherwise, a program which +uses different cursor-sizes at different times, and uses a generic routine +to set the cursor off and back to the small cursor, may have the cursor +size change every time, say, a window is blown open.) I'll type these two +procedures in here. +*************************************************************************) + +Procedure Cursor_Vanish(VAR W : Word); +VAR Regs : Registers; +Begin WITH Regs DO Begin + AH := $03; + BH := $00; + Intr($10,Regs); + W := CX; + AH := $01; + CL := $20; + CH := $20; + Intr($10,Regs); +End End; { End procedure } + +Procedure Cursor_Restore(VAR W : Word ); +VAR Regs : Registers; +Begin WITH Regs DO Begin + AH := $01; + BH := $00; + CX := W; + Intr($10,Regs); +End End; { End procedure } + +(************************************************************************* +These two procedures have to be compiled with the DOS unit available. +(After the Program line, put uses DOS;) + +I've tried to be pretty careful typing these in, but I don't even pretend +to be perfect, so if you want to use these procedures, I'd recommend typing +them in, then saving them, then running a program once as a test. (A test +program for these two should be pretty simple.) + +Also, regarding the screen saving procedures in _Turbo Pascal, the +Complete Reference_, I've written some routines that implement a simple +stack of saved screens, so that you can simply push the present screen +state, draw your menu, then pop the last screen state off the stack. +If anyone's interested, I should be able to upload the routines from a PC +disk.... + +--John Kelsey, C445585@UMCVMB +**************************************************************************) + +Function Zentriere (meldung : string; var status : boolean) : byte; +{Berechnet X-Position fr zentrierte Ausgabe von MELDUNG mit GotoXY} +var laenge : byte; +begin + laenge := length(meldung); + if ((laenge>=80) or (laenge=0)) then status := false else status := true; + if status then Zentriere := (80-length(meldung)) DIV 2 + else Zentriere := 0; +end; {of Zentriere} + +procedure Ende (var raus : boolean); + var screen : string; + status : boolean; + antwort : char; + + BEGIN + raus := FALSE; + ClrScr; + screen := 'Programm wirklich beenden (j/n) ? '; + GotoXY(Zentriere(screen,status),12); write(screen); + Readln(antwort); + antwort := UpCase(antwort); + IF antwort = 'J' THEN raus := TRUE; + END; + + +procedure StandBy; + CONST meldung1 = 'Weiter mit beliebiger Taste'; + meldung2 = ' '; + var x,y,x_pos : byte; + muell : char; + cursor : word; + status : boolean; + begin + Cursor_Vanish(cursor); + x:=whereX; y:= WhereY; + x_pos := Zentriere(meldung1,status); + GotoXY(x_pos,25); + HighVideo; + write(meldung1); + NormVideo; + repeat until keypressed; + muell := ReadKey; + GotoXY(x_pos,25); write(meldung2); + GotoXY(x,y); + Cursor_Restore(cursor); + end; + + +(************************************************************************ +Received: from CUNYVM by CUNYVM.BITNET (Mailer R2.03B) with BSMTP id 6339; Tue, + 13 Feb 90 21:05:12 EST +Received: from cod.nosc.mil by CUNYVM.CUNY.EDU (IBM VM SMTP R1.2.2MX) with TCP; + Tue, 13 Feb 90 21:05:09 EST +Received: by cod.nosc.mil (5.59/1.27) + id AA01529; Tue, 13 Feb 90 18:06:29 PST +Date: Tue, 13 Feb 90 18:06:29 PST +From: howell@cod.nosc.mil (Susan Howell) +Message-Id: <9002140206.AA01529@cod.nosc.mil> +To: ADD.@BOETT +Cc: howell@cod.nosc.mil +Subject: Source for supporting unit ERRORCOD + +------- + + + + APPENDIX R + + SOURCE LISTING FOR UNIT ERRORCOD + +***********************************************************************) +(*******************************************************************) +(**** ERRORCOD.PAS ****) +(**** This unit maps MS-DOS error codes returned by the ****) +(**** operating system to strings to give the operator a ****) +(**** human readable response. ****) +(**** ****) +(**** Reference: MS-DOS Version 3 Programmer's Utility Pack ****) +(**** MS-DOS Reference Guide Volume 1 ****) +(**** 1986, pp. 4.86-4.88, 4.254-4.257. ****) +(**** ****) +(**** Developed by Nelson Ard ****) +(**** ****) +(**** Last modificaton Sep 89 ****) +(*******************************************************************) +(********************* +UNIT ErrorCod; + +INTERFACE + +USES Dos; +*******************) +CONST Error_Code : ARRAY [0..88] OF + string[40] = ('No errors', + 'Invalid function code', + 'File not found', + 'Path not found', + 'No file handles left', + 'Access denied', + 'Invalid handle', + 'Memory control blocks destroyed', + 'Insufficient memory', + 'Invalid memory block address', + 'Invalid environment', + 'Invalid format', + 'Invalid access code', + 'Invalid data', + 'RESERVED error code', + 'Invalid drive', + 'Attempt to remove the current directory', + 'Not same device', + 'No more files', + 'Disk is write-protected', + 'Bad disk unit', + + 'Drive not ready', + 'Invalid disk command', + 'CRC error', + 'Invalid length (disk operation)', + 'Seek error', + 'Not an MS-DOS disk', + 'Sector not found', + 'Out of paper', + 'Write fault', + 'Read fault', + 'General failure', + 'Sharing violation', + 'Lock violation', + 'Wrong disk', + 'FCB unavailable', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'Network request not supported', + 'Remote computer not listening', + 'Duplicate name on network', + 'Network name not found', + 'Network busy', + 'Network device no longer exists', + 'Net BIOS command limit exceeded', + 'Network adapter hardware error', + 'Incorrect response from network', + 'Unexpected network error', + 'Incompatible remote adapt', + 'Print queue full', + 'Queue not full', + 'Not enough space for print file', + 'Network name was deleted', + 'Access denied', + 'Network device type incorrect', + 'Network name not found', + 'Network name limit exceeded', + 'Net BIOS session time exceeded', + 'Temporarily paused', + 'Network request not accepted', + + 'Print or disk redirection is paused', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'RESERVED error code', + 'File exits', + 'Duplicate File Control Block', + 'Cannot make', + 'Interrupt 24 failure', + 'Out of structures', + 'Already assigned', + 'Invalid password', + 'Invalid parameter', + 'Net write fault'); + +CONST Error_Class : ARRAY [1..12] OF string[40] = + ('Out of a resource', + 'Temporary situation', + 'Permission problem', + 'Internal error in system software', + 'Hardware failure', + 'System software failure', + 'Application program error', + 'File or item not found', + 'File or item of invalid format', + 'File or item interlocked', + 'Media failure - storage medium', + 'Unknown error'); + + Recommended_Error_Action : ARRAY [1..7] OF String[40] = + ('Retry, then prompt user', + 'Retry after a pause', + 'Reprompt user to reenter', + 'Terminate with clean up', + 'Terminate immediately', + 'Observe only', + 'Retry after correcting fault'); + + Error_Locus : ARRAY [1..5] OF String[40] = + ('Unknown', + 'Random Access block device', + 'Related to a network', + 'Related to serial access device', + 'Related to RAM'); + +(************************************************ +PROCEDURE Extended_Error_Code (VAR Error_Code : INTEGER; + VAR Error_Class : Byte; + VAR Error_Locus : Byte); + +{ Following an error code returned by an MS-DOS function call or + I/O function, this may be called for amplification on the + error } + +**********IMPLEMENTATION**********************) + +Var index : integer; + +PROCEDURE Extended_Error_Code (VAR Error_Code : INTEGER; + VAR Error_Class : Byte; + VAR Error_Locus : Byte); + +Var Regs : Registers; + +BEGIN + Regs.AH := $59; + Regs.BX := 0; + Intr($21, Regs); + Error_Code := Regs.AX; + Error_Class := Regs.BH; + Error_Locus := Regs.CH; +END; +(********************* +BEGIN +END. +*********************) +(*********************************************************************** +------- + +Addressees in 'BOETT.ADD' are: I2010506%DBSTU1.bitnet@cunyvm.cuny.edu +************************************************************************) + +{***************************************************************************} +{ Name : GET_DOS_VERSION } +{ } +{ Purpose : To obtain the version number of DOS. } +{ } +{ Input : none } +{ } +{ Output : dos_major_ver : version of dos } +{ dos_minor_ver : level of dos_major_ver } +{ } +{ Example : DOS 3.1 would yield [dos_major_ver = 3 } +{ dos_minor_ver = 10] } +{***************************************************************************} +procedure get_dos_version(var maj, min : integer); +var regs : registers; +begin + with regs do begin + ah:=$30; + msdos(regs); + maj := al; + min := ah; + end; +end; + + +procedure GetDOSErrorMessage (code : integer; var message : string); + begin + case code of + 0 : message := 'OK'; + 2 : message := 'Datei nicht gefunden'; + 3 : message := 'Suchweg nicht gefunden'; + 5 : message := 'Zugriff verweigert'; + 6 : message := 'Handle nicht definiert/ungltig'; + 8 : message := 'nicht gengend Hauptspeicher frei'; + 10 : message := 'Environment-Parameter ungltig'; + 11 : message := 'ungltiges Befehlsformat'; + 18 : message := 'keine weiteren Dateieintrge/Datei nicht vorhanden'; + else begin + Str(code,message); + message := 'DOS - Fehler Nr. ' + message + ' = ' + Error_Code[code]; + end; + end; + end; + +procedure GetCompleteDOSErrorMessage (code : integer; + var Error,error_cl,error_l : string); + var class,locus : byte; + fehler : integer; + begin + Extended_Error_Code(fehler,class,locus); + Error := Error_Code[fehler]; + error_cl := Error_Class[class]; + error_l := Error_Locus[locus]; + if code <> fehler then writeln('NANUNANA!!!'); + end; + + + +procedure read_value(var datei : text; var wert : extended); + + type vorzeichen = (plus,minus,none); + zeichentyp = (trennung,sign,value,point,garbage); + + const o_komma = Ord(','); + o_space = Ord(' '); + o_semi = Ord(';'); + o_lf = 10; + o_cr = 13; + o_null = Ord('0'); + o_neun = Ord('9'); + o_punkt = Ord('.'); + o_e_kl = Ord('e'); + o_e_gr = Ord('E'); + o_plus = Ord('+'); + o_minus = Ord('-'); + null = '0'; + + var puffer1,puffer2 : char; + weiter,raus,basic : boolean; + akt_vorz,alt_vorz, + vorz2 : vorzeichen; + puffer_art, + puffer_art_2 : zeichentyp; + + function CheckDelimiter(test : char) : boolean; + var o_test : byte; + begin + o_test := Ord(test); + if ((o_test=o_komma) or (o_test=o_space) or (o_test=o_semi) + or (o_test=o_lf) or (o_test=o_cr)) + then CheckDelimiter := true + else CheckDelimiter := false; + end; + + function CheckValue(test : char) : boolean; + var o_test : byte; + begin + o_test := Ord(test); + if ((o_test>=o_null) and (o_test<=o_neun)) + then CheckValue := true + else CheckValue := false; + end; + + function CheckPunkt(test : char) : boolean; + begin + if (Ord(test)=o_punkt) + then CheckPunkt := true + else CheckPunkt := false; + end; + + function CheckE(test : char) : boolean; + var o_test : byte; + begin + o_test := Ord(test); + if ((o_test=o_e_kl) or (o_test=o_e_gr)) + then CheckE := true + else CheckE := false; + end; + + function CheckPlus(test : char) : boolean; + begin + if (Ord(test)=o_plus) + then CheckPlus := true + else CheckPlus := false; + end; + + function CheckMinus(test : char) : boolean; + begin + if (Ord(test)=o_minus) + then CheckMinus := true + else CheckMinus := false; + end; + + function CheckIOResult : boolean; + var code : integer; + error_m,error_cl,error_l : string; + begin + {$I-} + code := IOResult; + if code<>0 + then begin + CheckIOResult := false; + if DOS_Major_Version >= 3 {UNIT ENV} + then + begin + GetCompleteDOSErrorMessage(code,error_m,error_cl,error_l); + writeln('I/O-Fehler ',code,' --> ',error_m); + writeln('I/O-Fehler-Klasse ',error_cl); + writeln('I/O-Fehler-Locus ',error_l); + end + else + begin + GetDOSErrorMessage(code,error_m); + writeln('I/O-Fehler ',code,' --> ',error_m); + end; + StandBy; + end + else CheckIOResult := true; + end; + + function puffertest(puffer : char; var vorz : vorzeichen) : zeichentyp; + begin {of puffertest} + puffertest := garbage; + if CheckMinus(puffer) then vorz := minus + else if CheckPlus(puffer) + then vorz := plus + else vorz := none; + if vorz<>none + then puffertest := sign + else if CheckDelimiter(puffer) + then puffertest := trennung + else if CheckPunkt(puffer) + then puffertest := point + else if CheckValue(puffer) then puffertest := value; + end; {of puffertest} + + + procedure skip(var datei : text; var vorz : vorzeichen; var puffer : char; + var puffertyp : zeichentyp); + begin {of skip} + {$I-} + vorz := none; + puffertyp := garbage; + repeat + if eoln(datei) then readln(datei); + read(datei,puffer); + if not CheckIOResult then begin + ende(raus); + if raus then halt(300); + end; + + puffertyp := puffertest(puffer,vorz); + { + case vorz of + plus : write('P'); + minus: write('M'); + none : write('n'); + end; + } + until ((puffertyp<>garbage) or eof(datei)); + end; {of skip} + + + procedure PickUp(var datei : text; basic : boolean; puffer : char; + VAR wert : extended ); + + var zahl : string; + stop,punkt,raus : boolean; + puffer2 : char; + fehler : integer; + begin {of PickUp} + {$I-} + zahl := ''; + punkt := false; + stop := false; + if basic then begin zahl := '0.'; punkt := true; end; + zahl := zahl+puffer; + while ((not eoln(datei) and (not stop))) do + begin + read(datei,puffer); + if not CheckIOResult then begin + ende(raus); + if raus then halt(300); + end; + if ((CheckPunkt(puffer) and punkt) or CheckDelimiter(puffer)) + then stop := true + else if (CheckValue(puffer) or (CheckPunkt(puffer) and (not punkt))) + then begin + zahl := zahl+puffer; + if CheckPunkt(puffer) then punkt := true; + end + else if (not CheckE(puffer)) + then stop := true + else begin + if (not eoln(datei)) + then begin + read(datei,puffer2); + if not CheckIOResult + then begin + ende(raus); + if raus then halt(300); + end; + if (CheckMinus(puffer2) or (CheckPlus(puffer2))) + then zahl := zahl+puffer+puffer2 + else stop := true; + end + else stop := true; + end; + end; + Val(zahl,wert,fehler); + if fehler<>0 then begin + HighVideo; + writeln('Fehler beim Einlesen von >',zahl,'< an Position ',fehler,' !!'); + NormVideo; + StandBy; + ende(raus); + if raus then halt(301); + end; + end; {of PickUp} + + begin {of READ_VALUE} + {$I-} + akt_vorz := none; + alt_vorz := none; + + weiter := true; + wert :=0; + + while ((not eof(datei)) and weiter) do + begin + basic := false; + alt_vorz := akt_vorz; + skip(datei,akt_vorz,puffer1,puffer_art); + case puffer_art of + value : begin + akt_vorz := alt_vorz; + PickUp(datei,basic,puffer1,wert); + weiter := false; + end; + point : begin + read(datei,puffer2); + if not CheckIOResult then begin + ende(raus); + if raus then halt(300); + end; + puffer_art_2 := puffertest(puffer2,vorz2); + case puffer_art_2 of + value : begin + basic := true; + akt_vorz := alt_vorz; + PickUp(datei,basic,puffer2,wert); + weiter := false; + end; + sign : akt_vorz := vorz2; + trennung : akt_vorz := none; + point : akt_vorz := none; + end; + end; + trennung : akt_vorz := none; + sign : begin + read(datei,puffer2); + if not CheckIOResult then begin + ende(raus); + if raus then halt(300); + end; + puffer_art_2 := puffertest(puffer2,vorz2); + case puffer_art_2 of + value : begin + basic := false; + PickUp(datei,basic,puffer2,wert); + weiter := false; + end; + sign : akt_vorz := vorz2; + trennung : akt_vorz := none; + point : begin + read(datei,puffer2); + if not CheckIOResult + then begin + ende(raus); + if raus then halt(300); + end; + puffer_art_2 := puffertest(puffer2,vorz2); + case puffer_art_2 of + value : begin + basic := true; + PickUp(datei,basic,puffer2,wert); + weiter := false; + end; + sign : akt_vorz := vorz2; + trennung : akt_vorz := none; + point : akt_vorz := none; + end; + end; + end; + end; + end; + end; + if akt_vorz=minus then wert :=-wert; + {$I+} + end; {of READ_VALUE} + +procedure read_value_eof(var datei : text; var wert : extended; var ende : boolean); + begin + ende := eof(datei); + if not ende then begin + read_value(datei,wert); + ende := eof(datei); + end; + end; + +(****************************************************************************) +(* Zehner-Logarithmus von 'x': *) + +FUNCTION lg (x: extended): extended; + +CONST rez_ln_10 = 0.4342944819; (* rez_ln_10 = 1 / ln(10) *) + +BEGIN + lg :=0; + IF x > 0.0 THEN + lg := Ln(x) * rez_ln_10 + ELSE + {CalcError(3, 'lg(x): x <= 0')} + writeln('Argumentfehler: lg(x): x <= 0 !!!') +END; + +(****************************************************************************) +(* Berechnung von 'x hoch y': *) + +FUNCTION x_hoch_y (x, y: extended): extended; + +VAR ganz_y: INTEGER; + +BEGIN + IF (x <> 0.0) OR (y <> 0.0) THEN + IF x > 0.0 THEN + x_hoch_y := Exp(y * Ln(x)) + ELSE + BEGIN + ganz_y := Trunc(y); + IF ABS(y) > ABS(ganz_y) THEN + {CalcError(3, 'x_hoch_y(x,y): nur ganzzahlige Exponenten zulssig bei x<0')} + writeln('x_hoch_y(x,y): nur ganzzahlige Exponenten zulssig bei x<0') + ELSE + IF x <> 0.0 THEN + IF (ganz_y MOD 2) = 0 THEN + x_hoch_y := Exp(Ln(ABS(x)) * y) + ELSE + x_hoch_y := -Exp(Ln(ABS(x)) * y) (* ungerader Exponent *) + ELSE + x_hoch_y := 0 + END + ELSE + {CalcError(3, 'x_hoch_y(x,y): x = 0 und y = 0')} + writeln('x_hoch_y(x,y): x = 0 und y = 0') +END; + +(****************************************************************************) + + +(****************************************************************************) +procedure process_file(seite : styp; + var fertig : boolean; + rechteachse,xlogar,ylogar : boolean; + var aus : text); + + + function betest(t,v : string): boolean; + var t1 : string; + i : byte; + begin + t1:=t; + for i:=1 to length(t) do t1[i]:=UpCase(t[i]); + while t1[1]=' ' do Delete(t1,1,1); + if t1=v then betest := true else betest :=false; + end; + + const b1='BEGIN'; + e1='END'; + + var einn,symbol,test : string; + ein : text; + f : SearchRec; + anzahl : longint; + ch : char; + sym,linie,quadratic,clipping,ende : boolean; + x,y,xa,ya : extended; + + begin {of process_file} + writeln('Ende durch leere Eingabe !!'); + repeat + write('Daten -Datei (TechPlot-Format!!) : '); + readln(einn); + if einn='' then fertig:=true; + FindFirst(einn,Archive,F); + until ((DOSError=0) or fertig); + + if not fertig then + begin + anzahl :=0; + assign(ein,einn); + repeat + write('mit Plotsymbol (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='J') or (ch='N')); + if ch='J' then sym := true else sym := false; + repeat + write('durchgezogene Linie (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='J') or (ch='N')); + if ch='J' then linie := true else linie := false; + if linie then + begin + repeat + write('Quadratische Interpolation (1) oder Polygonzug (2) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='1') or (ch='2')); + if ch='1' then quadratic := true else quadratic := false; + repeat + write('Clipping ntig (Achtung, das dauert LANGE) (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='J') or (ch='N')); + if ch='J' then clipping := true else clipping := false; + end; + + if sym then + begin + write('Plotsymbol (LaTeX-Text) : '); + readln(symbol); + reset(ein); + writeln(aus,'%Datei ',einn,' (Symbole)'); + repeat + readln(ein,test); + writeln(aus,'%% ',test); + until ((betest(test,b1)) or eof(ein)); + ende := false; + if eof(ein) then ende := true; + write(aus,'% Daten fuer '); + if rechteachse then + if (seite=left) + then write(aus,'linke ') + else write (aus,'rechte '); + writeln(aus,'y-Achse ...'); + if not ende then + begin + writeln('\multiput {',symbol,'} at '); + writeln(aus,'\multiput {',symbol,'} at %'); + end; + while not ende do + begin + read_value_eof(ein,x,ende); + read_value_eof(ein,y,ende); + if not ende then begin + readln(ein); + Inc(anzahl); + if xlogar then x:=lg(x); + if ylogar then y:=lg(y); + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln(x:8:5,' ',y:8:4); + end + else begin + writeln(' /'); + writeln(aus,' /'); + end; + end; + end; + if linie then + begin + reset(ein); + anzahl :=0; + writeln(aus,'%Datei ',einn,' (Linie)'); + repeat + readln(ein,test); + writeln(aus,'%% ',test); + until ((betest(test,b1)) or eof(ein)); + ende := false; + if eof(ein) then ende := true; + + if clipping then writeln(aus,'\inboundscheckon'); + if quadratic then writeln(aus,'\setquadratic') + else writeln(aus,'\setlinear'); + writeln(aus,'\plot '); + while not ende do + begin + read_value_eof(ein,x,ende); + read_value_eof(ein,y,ende); + if not ende then begin + readln(ein); + Inc(anzahl); + if xlogar then x:=lg(x); + if ylogar then y:=lg(y); + xa :=x; + ya :=y; + writeln(aus,' ',x:8:6,' ',y:8:6,' %'); + writeln(x:8:4,' ',y:8:4); + end; + end; + if quadratic then + if not odd(anzahl) then + writeln(aus,xa*1.00001:8:6,' ',ya*1.00001:8:6,' %'); + writeln(aus,'/'); + if clipping then writeln(aus,'\inboundscheckoff'); + end; + close(ein); + end; + end; {of process_file} + + procedure Einheiten(var unitx,unity,unitry : real; breite,hoehe : real; + rechteachse,xlog,ylog,rylog : boolean); + begin + if xlog then unitx := breite/(lg(xmax)-lg(xmin)) + else unitx := breite/(xmax-xmin); + if ylog then unity := HOEHE/(lg(ymax)-lg(ymin)) + else unity := hoehe/(ymax-ymin); + if rechteachse then if rylog then unitry := hoehe/(lg(rymax)-lg(rymin)) + else unitry := hoehe/(rymax-rymin) + else unitry :=0; + end; + + procedure skala (var aus : text; + seite : styp; + unitx,unity : real; + xlog,ylog,rechteachse,xkreuz,ykreuz : boolean; + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub : real; + xdez,ydez :byte; + unten,oben,rechts,links : string); + + procedure Log_schrift(var aus: text; min,max : real; + markiere,kreuz : boolean); + {$I float.typ} + var ort,o2 : float; + expo,code : integer; + stellen,i : byte; + ex : string; + begin + writeln(aus,' ticks logged '); + if kreuz then write(aus,'andacross '); + if markiere then writeln(aus,'numbered ') else writeln(aus,'unlabeled '); + + if markiere + then + begin {Zahlen dranschreiben} + write(aus,'withvalues '); + ort := min/10; + repeat + Str(lg(ort):1:0,ex); + Val(ex,expo,code); + {expo := trunc(lg(ort));} + o2 := (x_hoch_y(10,expo)); + if ((o2>=min) and (o2<=max)) + then write(aus,'$10^{',expo,'}$ '); + ort := 2*o2; + if ((ort<=max) and (ort>=min)) + then write(aus,'{\small 2} '); + ort := 3*o2; + if ((ort>=min) and (ort<=max)) + then write(aus,'{\small 3} '); + ort := 5*o2; + if ((ort>=min) and (ort<=max)) + then write(aus,'{\small 5} '); + ort := 10*o2; + until ort>max; + writeln(aus,' /'); + end; + + {ticks setzen, normal lang} + write(aus,' at '); + ort := min/10; + repeat + Str(lg(ort):1:0,ex); + Val(ex,expo,code); + {expo := trunc(lg(ort));} + o2 := (x_hoch_y(10,expo)); + if expo<0 then stellen := abs(expo) else stellen :=0; + if ((o2>min) and (o2min)) + then write(aus,ort:1:stellen,' '); + ort := 3*o2; + if ((ort>min) and (ortmin) and (ortmax; + writeln(aus,' /'); + + {ticks, immer ohne Beschriftung, lang } + writeln(aus,' unlabeled at '); + ort := min/10; + repeat + Str(lg(ort):1:0,ex); + Val(ex,expo,code); + {expo := trunc(lg(ort));} + o2 := (x_hoch_y(10,expo)); + if expo<0 then stellen := abs(expo) else stellen :=0; + ort := 4*o2; + if ((ort>min) and (ortmin) and (ortmax; + writeln(aus,' /'); + + {ticks, ohne Beschriftung, kurz } + writeln(aus,' unlabeled short at '); + ort := min/10; + repeat + Str(lg(ort):1:0,ex); + Val(ex,expo,code); + {expo := trunc(lg(ort));} + o2 := (x_hoch_y(10,expo)); + if expo<=0 then stellen := abs(expo)+1 else stellen :=0; + for i:=1 to 9 do + begin + ort := o2*(1+i*0.2); {1.2, 1.4, ... 2.8 } + if ((ort>min) and (ortmin) and (ortmin) and (ortmax; + writeln(aus,' /'); {letztes "at"} + writeln(aus,' /'); {Ende von "\axis"} + end; + + var con : text; + begin + assign(con,'con'); + rewrite(con); + write('\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at '); + if xlog then write(lg(xmin):1:5,' ') + else write(xmin:1:5,' '); + if ylog then writeln(lg(ymin):1:5) + else writeln(ymin:1:5); + + write('\setplotarea x from '); + if xlog then write(lg(xmin):8:5) + else write(xmin:8:5); + write(' to '); + if xlog then write(lg(xmax):8:5) + else write(xmax:8:5); + write(', y from '); + if ylog then write(lg(ymin):8:5) + else write(ymin:8:5); + write(' to '); + if ylog then writeln(lg(ymax):8:5) + else writeln(ymax:8:5); + if seite=left + then + begin + write('\axis bottom shiftedto y='); + if ylog then write(lg(ymin):8:5) + else write(ymin:8:5); + write(' label {',unten,'} '); + if xlog then Log_schrift(con,xmin,xmax,true,xkreuz) + else writeln(' ticks numbered from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /'); + + write('\axis top shiftedto y='); + if ylog then write(lg(ymax):8:5) + else write(ymax:8:5); + write(' label {',oben,'} '); + if xlog then Log_schrift(con,xmin,xmax,false,false) + else writeln(' ticks unlabeled from ', + xmin:8:xdez,' to ',xmax:8:xdez,' by ',dx:8:xdez, + ' unlabeled short from ',xmin:8:xdez,' to ', + xmax:8:xdez,' by ',dxsub:8:xdez,' /'); + + write('\axis left shiftedto x='); + if xlog then write(lg(xmin):8:5) + else write(xmin:8:5); + write(' label {',links,'} '); + if ylog then Log_schrift(con,ymin,ymax,true,ykreuz) + else writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + if not rechteachse then + begin + write('\axis right shiftedto x='); + if xlog then write(lg(xmax):8:5) + else write(xmax:8:5); + write(' label {',rechts,'} '); + if ylog then Log_schrift(con,ymin,ymax,false,false) + else writeln(' ticks unlabeled from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + end; + end + else + begin + write('\axis right shiftedto x='); + if xlog then write(lg(xmax):8:5) + else write(xmax:8:5); + write(' label {',rechts,'} '); + if ylog then Log_schrift(con,ymin,ymax,true,ykreuz) + else writeln(' ticks numbered from ', + ymin:8:ydez,' to ',ymax:8:ydez,' by ',dy:8:ydez, + ' unlabeled short from ',ymin:8:ydez,' to ', + ymax:8:ydez,' by ',dysub:8:ydez,' /'); + end; + close(con); + write(aus,'\setcoordinatesystem units <',unitx:1:5,'mm,',unity:1:5,'mm> point at '); + if xlog then write(aus,lg(xmin):1:6,' ') + else write(aus,xmin:1:6,' '); + if ylog then writeln(aus,lg(ymin):1:6) + else writeln(aus,ymin:1:6); + + write(aus,'\setplotarea x from '); + if xlog then write(aus,lg(xmin):1:6) + else write(aus,xmin:1:6); + write(aus,' to '); + if xlog then write(aus,lg(xmax):1:6) + else write(aus,xmax:1:6); + write(aus,', y from '); + if ylog then write(aus,lg(ymin):1:6) + else write(aus,ymin:8:5); + write(aus,' to '); + if ylog then writeln(aus,lg(ymax):1:6) + else writeln(aus,ymax:1:6); + if seite=left + then + begin + write(aus,'\axis bottom shiftedto y='); + if ylog then write(aus,lg(ymin):1:6) + else write(aus,ymin:1:6); + write(aus,' label {',unten,'} '); + if xlog then Log_schrift(aus,xmin,xmax,true,xkreuz) + else begin + write(aus,' ticks '); + if xkreuz then write(aus,'andacross '); + writeln(aus,'numbered from ', + xmin:1:xdez,' to ',xmax:1:xdez,' by ',dx:1:xdez, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /'); + end; + + write(aus,'\axis top shiftedto y='); + if ylog then write(aus,lg(ymax):1:6) + else write(aus,ymax:1:6); + write(aus,' label {',oben,'} '); + if xlog then Log_schrift(aus,xmin,xmax,false,false) + else writeln(aus,' ticks unlabeled from ', + xmin:1:xdez+2,' to ',xmax:1:xdez+2,' by ',dx:1:xdez+2, + ' unlabeled short from ',xmin:1:xdez+3,' to ', + xmax:1:xdez+3,' by ',dxsub:1:xdez+3,' /'); + + write(aus,'\axis left shiftedto x='); + if xlog then write(aus,lg(xmin):1:6) + else write(aus,xmin:1:6); + write(aus,' label {',links,'} '); + if ylog then Log_schrift(aus,ymin,ymax,true,ykreuz) + else begin + write(aus,' ticks '); + if ykreuz then write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + end; + if not rechteachse then + begin + write(aus,'\axis right shiftedto x='); + if xlog then write(aus,lg(xmax):1:6) + else write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + if ylog then Log_schrift(aus,ymin,ymax,false,false) + else writeln(aus,' ticks unlabeled from ', + ymin:1:ydez+2,' to ',ymax:1:ydez+2,' by ',dy:1:ydez+2, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + end; + end + else + begin + write(aus,'\axis right shiftedto x='); + if xlog then write(aus,lg(xmax):1:6) + else write(aus,xmax:1:6); + write(aus,' label {',rechts,'} '); + if ylog then Log_schrift(aus,ymin,ymax,true,ykreuz) + else begin + write(aus,' ticks '); + if ykreuz then write(aus,'andacross '); + writeln(aus,'numbered from ', + ymin:1:ydez,' to ',ymax:1:ydez,' by ',dy:1:ydez, + ' unlabeled short from ',ymin:1:ydez+3,' to ', + ymax:1:ydez+3,' by ',dysub:1:ydez+3,' /'); + end; + end; + + end; + + + +begin + writeln; + writeln(' Datei-Konverter Daten -->PiCTeX input ... '); + writeln('(c) Christian Bttger, Inst. f. Metallphysik, TU Braunschweig'); + writeln(' Version 1.0, 3.7.1991 '); + writeln; + Get_Dos_Version(dos_major_version,dos_minor_version); + + write('PiCTeX-Datei : ');readln(ausn) ; + assign(aus,ausn); + rewrite(aus); + + writeln; + write('X-Achse : Minimum = ');readln(xmin); + write('X-Achse : Maximum = ');readln(xmax); + repeat + write('x-Achse logarithmisch (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then xlog := true else xlog := false; + if not xlog + then begin + write('X-Achse : Schrittweite = ');readln(dx); + write('X-Achse : Schrittweite Sub-Unterteilungen = ');readln(dxsub); + write('X-Achse : Dezimalstellen der Beschriftung = ');readln(xdez); + end; + + repeat + write('x-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then xkreuz := true else xkreuz := false; + + writeln; + writeln('Eingabe der Daten fr die (linke) Y-Achse ...'); + write('y-Achse : Minimum = ');readln(ymin); + write('y-Achse : Maximum = ');readln(ymax); + repeat + write('(linke) y-Achse logarithmisch (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then ylog := true else ylog := false; + if not ylog + then begin + write('y-Achse : Schrittweite = ');readln(dy); + write('y-Achse : Schrittweite Sub-Unterteilungen = ');readln(dysub); + write('y-Achse : Dezimalstellen der Beschriftung = ');readln(ydez); + end; + repeat + write('(linke) y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then ykreuz := true else ykreuz := false; + + writeln; + repeat + write('zweite unabhngige Skala auf rechter y-Achse (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then rechteachse :=true else rechteachse:=false; + if rechteachse then + begin + writeln; + write('rechte y-Achse : Minimum = ');readln(rymin); + write('rechte y-Achse : Maximum = ');readln(rymax); + repeat + write('rechte y-Achse logarithmisch (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then rylog := true else rylog := false; + if not rylog + then begin + write('rechte y-Achse : Schrittweite = ');readln(rdy); + write('rechte y-Achse : Schrittweite Sub-Unterteilungen = ');readln(rdysub); + write('rechte y-Achse : Dezimalstellen der Beschriftung = ');readln(rydez); + end; + repeat + write('rechte y-Achse Markierungen durchziehen (Gitter) (j/n) ? '); + readln(ch); + ch := UpCase(ch); + until ((ch='N') or (ch='J')); + if ch='J' then rykreuz := true else rykreuz := false; + writeln; + end; + write('Beschriftung Unterkante : ');readln(unten); + write('Beschriftung Oberkante : ');readln(oben); + write('Beschriftung rechts : ');readln(rechts); + write('Beschriftung links : ');readln(links); + writeln; + + write('Breite des Bildes in mm = ');readln(breite); + write('Hhe des Bildes in mm = ');readln(hoehe); + writeln; + write('Unterschrift des Bildes (\caption) : '); readln(unterschrift); + write('berschrift des Bildes : '); readln(ueberschrift); + write('LaTeX-Label des Bildes : ');readln(labelstr); + repeat + writeln('Sprache des Textes:'); + write(' a=austrian, e=english, f=french, g=german, u=USenglish ? '); + readln(sprache); + sprache := UpCase(sprache); + until sprache in ['A','E','F','G','U']; + + writeln; + writeln('und nun die Zwischenspeicherung ...'); + savename :=''; + repeat + write('Dateiname fr \savelinesandcurves bzw. \replot = '); + readln(savename); + until savename<>''; + write('Kommentar im Save-File = '); + readln(savekomm); + Einheiten(unitx,unity,unitry,breite,hoehe,rechteachse,xlog,ylog,rylog); + + writeln('\begin{figure}[htb]'); + writeln('\originalTeX'); + writeln('\[ %horizontal zentrierte Ausgabe an'); + writeln('\beginpicture'); + + writeln(aus,'\begin{figure}[htb]'); + writeln(aus,'\originalTeX'); + writeln(aus,'\[ %zentrierte Ausgabe an'); + writeln(aus,'\beginpicture'); + writeln(aus,'\savelinesandcurves on "',savename,'"'); + writeln(aus,'\writesavefile {',savekomm,'}'); + + skala (aus,left, + unitx,unity, + xlog,ylog,rechteachse,xkreuz,ykreuz, + xmin,xmax,dx,dxsub,ymin,ymax,dy,dysub,xdez,ydez, + unten,oben,rechts,links); + + + writeln(aus,'\plotheading {',ueberschrift,'}'); + writeln(aus,'%\replot "',savename,'"'); + + fertig := false; + repeat + writeln; + if rechteachse then writeln('Nur Daten fr die LINKE (!!) y- Achse jetzt !!!!'); + process_file(left,fertig,rechteachse,xlog,ylog,aus); + until fertig; + if rechteachse then + begin + skala (aus,right, + unitx,unitry, + xlog,rylog,rechteachse,xkreuz,rykreuz, + xmin,xmax,dx,dxsub,rymin,rymax,rdy,rdysub,xdez,rydez, + unten,oben,rechts,links); + + fertig := false; + repeat + writeln; + writeln('Nur Daten fr die RECHTE (!!) y- Achse ab jetzt !!!!'); + process_file(right,fertig,rechteachse,xlog,rylog,aus); + until fertig; + end; + + writeln(aus,'\dontsavelinesandcurves'); + writeln(aus,'\endpicture'); + writeln(aus,'\]'); + writeln(aus,'\germanTeX'); + write(aus,'\selectlanguage{\'); + case sprache of + 'A' : writeln(aus,'austrian}'); + 'E' : writeln(aus,'english}'); + 'F' : writeln(aus,'french}'); + 'G' : writeln(aus,'german}'); + 'U' : writeln(aus,'USenglish}'); + end; + + writeln(aus,'\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln(aus,'\end{figure}'); + + writeln('\endpicture'); + writeln('\]'); + writeln('\germanTeX'); + write('\selectlanguage{\'); + case sprache of + 'A' : writeln('austrian}'); + 'E' : writeln('english}'); + 'F' : writeln('french}'); + 'G' : writeln('german}'); + 'U' : writeln('USenglish}'); + end; + + writeln('\caption{',unterschrift,' \label{',labelstr,'}}'); + writeln('\end{figure}'); + + close(aus); +end. + + + + + + + -- cgit v1.2.3