program Printer_Initialisierung; (* T. Reh 15.9.87 *) const ziffern : set of char = ['0'..'9']; var eingabe : string[80]; i : byte; bef,u : char; procedure menue; begin write(#27'G8M|gliche Schalter :'#27'G0'^M^J, ^J'I : Initialisieren 6 : 6 Zeilen/Zoll', ^M^J'Bn : Breitschrift an/aus 8 : 8 Zeilen/Zoll', ^M^J'Dn : Doppeldruck an/aus Pn : Seitenl{nge in Zeilen', ^M^J'En : Elite an/aus Ln : Linker Rand', ^M^J'Fn : Fettdruck an/aus Rn : Rechter Rand', ^M^J'Kn : Kursivschrift an/aus Un : Unterer Rand', ^M^J'Qn : NLQ-Druck an/aus Zn : Zeichensatz', ^M^J'Sn : Schmalschrift an/aus Xn : Einzelblatt an/aus', ^M^J'M : Miniaturdruck Yn : Ende-F}hler an/aus'^M^J^J); end; function wert:char; var hilf : byte; begin hilf:=0; while (eingabe[i] in ziffern) and (i<=length(eingabe)) do begin hilf:=10*hilf+ord(eingabe[i])-$30; i:=succ(i); end; wert:=chr(hilf); end; begin writeln('Printer-Init V1.1 vom 15.9.87'^M^J); move(mem[$80],eingabe,succ(mem[$80])); if length(eingabe)=0 then begin menue; write('Eingabe : '); readln(eingabe); end; i:=1; while i<=length(eingabe) do begin bef:=upcase(eingabe[i]); i:=succ(i); case bef of '6' : write(lst,#27'2'); (* 6 Zeilen/Zoll *) '8' : write(lst,#27'0'); (* 8 Zeilen/Zoll *) 'B' : write(lst,#27'W',wert); (* Breitschrift *) 'D' : case wert of #0 : write(lst,#27'H'); #1 : write(lst,#27'G'); (* Doppeldruck *) end; 'E' : case wert of #0 : write(lst,#27'P'); #1 : write(lst,#27'M'); (* Elite *) end; 'F' : case wert of #0 : write(lst,#27'F'); #1 : write(lst,#27'E'); (* Fettdruck *) end; 'I' : write(lst,#27'@'); (* INIT *) 'K' : case wert of #0 : write(lst,#27'5'); #1 : write(lst,#27'4'); (* Kursivschrift *) end; 'L' : write(lst,#27'l',wert); (* Linker Rand *) 'M' : write(lst,#27'S'#0#27'A'#6#15); (* Miniaturdruck *) 'P' : write(lst,#27'C',wert); (* Seitenlaenge *) 'Q' : write(lst,#27'x',wert); (* NLQ-Druck *) 'R' : write(lst,#27'Q',wert); (* Rechter Rand *) 'S' : case wert of #0 : write(lst,#18); #1 : write(lst,#15); (* Schmalschrift *) end; 'U' : begin u:=wert; if u=#0 then write(lst,#27'O') else write(lst,#27'N',u); (* Unterer Rand *) end; 'X' : case wert of #0 : write(lst,#27#25#4); #1 : write(lst,#27#25#0); (* Einzelblatt *) end; 'Y' : case wert of #0 : write(lst,#27'8'); #1 : write(lst,#27'9'); (* Ende-Fuehler *) end; 'Z' : write(lst,#27'R',wert); (* Zeichensatz *) end; end; end.