home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------*)
- (* TREIBER.PAS *)
- (* Ausdruck von IBM-Textdateien *)
- (* m. nicht-kompatiblen Druckern *)
- (* (C) 1988 T.Lang & TOOLBOX *)
-
- PROGRAM Treiber; (* Anpassung des STAR8480 an IBM-CODE *)
-
- CONST esc = #27 ;
- eofchar = #26 ;
- laenge = 55 ;
-
- TYPE wandeltyp = STRING [6] ;
- (* 1. Zeichen IBM, weitere die Umwandlung *)
-
- VAR ifile : FILE OF CHAR ; (* Inputfile *)
- sourcename: STRING [20] ;
- readchar : CHAR ; (* Eingelesenes Zeichen *)
- wandeln : ARRAY [1..laenge] OF wandeltyp ;
-
- PROCEDURE init_wandeln ;
- BEGIN
- wandeln[01] := #$15 + esc + 'D' + #$40 + esc + 'J' ;
- wandeln[02] := #$18 + #$EB ;
- wandeln[03] := #$19 + #$ED ;
- wandeln[04] := #$1A + #$EC ;
- wandeln[05] := #$1B + #$EA ;
- wandeln[06] := #$1C + #$E5 ;
- wandeln[07] := #$5C + esc + 'U' + #$5C + esc + 'J' ;
- wandeln[08] := #$7F + #$DB ;
- wandeln[09] := #$80 + esc + 'F' + #$5C + esc + 'J' ;
- wandeln[10] := #$81 + esc + 'D' + #$7D + esc + 'J' ;
- wandeln[11] := #$82 + esc + 'F' + #$7B + esc + 'J' ;
- wandeln[12] := #$84 + esc + 'D' + #$7B + esc + 'J' ;
- wandeln[13] := #$85 + esc + 'F' + #$40 + esc + 'J' ;
- wandeln[14] := #$87 + esc + 'F' + #$5C + esc + 'J' ;
- wandeln[15] := #$8A + esc + 'F' + #$7D + esc + 'J' ;
- wandeln[16] := #$8B + #$69 ;
- wandeln[17] := #$8C + #$69 ;
- wandeln[18] := #$8D + #$69 ;
- wandeln[19] := #$8E + esc + 'D' + #$5B + esc + 'J' ;
- wandeln[20] := #$94 + esc + 'D' + #$7C + esc + 'J' ;
- wandeln[21] := #$97 + esc + 'F' + #$7C + esc + 'J' ;
- wandeln[22] := #$99 + esc + 'D' + #$5C + esc + 'J' ;
- wandeln[23] := #$9A + esc + 'D' + #$5D + esc + 'J' ;
- wandeln[24] := #$9C + esc + 'E' + #$23 + esc + 'J' ;
- wandeln[25] := #$9D + #$5C ;
- wandeln[26] := #$A7 + #$DF ;
- wandeln[27] := #$A9 + #$99 ;
- wandeln[28] := #$AA + #$E6 ;
- wandeln[29] := #$B0 + #$E8 ;
- wandeln[30] := #$B1 + #$E8 ;
- wandeln[31] := #$B2 + #$E7 ;
- wandeln[32] := #$B3 + #$87 ;
- wandeln[33] := #$B4 + #$9C ;
- wandeln[34] := #$BF + #$E6 ;
- wandeln[35] := #$C0 + #$E5 ;
- wandeln[36] := #$C1 + #$9A ;
- wandeln[37] := #$C2 + #$9B ;
- wandeln[38] := #$C4 + #$88 ;
- wandeln[39] := #$C5 + #$E3 ;
- wandeln[40] := #$D9 + #$E4 ;
- wandeln[41] := #$DA + #$99 ;
- wandeln[42] := #$DB + #$E7 ;
- wandeln[43] := #$DC + #$E0 ;
- wandeln[44] := #$DD + #$9F ;
- wandeln[45] := #$DE + #$E2 ;
- wandeln[46] := #$DF + #$E1 ;
- wandeln[47] := #$E1 + esc + 'D' + #$7E + esc + 'J' ;
- wandeln[48] := #$E2 + #$90 ;
- wandeln[49] := #$F4 + #$A2 ;
- wandeln[50] := #$F5 + #$A3 ;
- wandeln[51] := #$F7 + #$C6 ;
- wandeln[52] := #$F8 + #$DF ;
- wandeln[53] := #$F9 + #$A5 ;
- wandeln[54] := #$FA + #$2E ;
- wandeln[55] := #$FE + #$9D ;
- END ;
-
- PROCEDURE open_ifile ;
-
- VAR io_ok : BOOLEAN ;
-
- BEGIN
- REPEAT
- WriteLn ;
- Write ('Welche Datei soll gedruckt werden ? : ');
- ReadLn (sourcename); Assign (ifile, sourcename);
- (*$I- *) (* I/O-Fehlerbehandlung aus *)
- ReSet (ifile);
- (*$I+ *) (* I/O-Fehlerbehandlung ein *)
- io_ok := (IOResult = 0);
- IF NOT io_ok THEN
- WriteLn ('Datei ',sourcename,' finde ich nicht !');
- UNTIL io_ok ;
- END ;
-
-
- PROCEDURE passend_out ;
- (* Zeichen anpassen und ausgeben *)
-
- VAR i, j : INTEGER ;
- gefunden : BOOLEAN ; (* IBM-Zeichen gefunden ? *)
- writechar : CHAR ; (* Ausgabe-Zeichen *)
-
- BEGIN
- gefunden := FALSE ;
- i := 1 ;
- REPEAT
- IF Copy (wandeln[i], 1, 1) = readchar
- THEN gefunden := TRUE
- ELSE i := i + 1 ;
- UNTIL (gefunden) OR (i > laenge) ;
- IF gefunden THEN BEGIN
- FOR j := 2 TO Length (wandeln [i]) DO BEGIN
- writechar := Copy(wandeln[i], j, 1);
- Write (Lst, writechar) ;
- END ;
- END
- ELSE Write (Lst, readchar) ;
- END ;
-
- BEGIN
- init_wandeln ; (* Umwandlungs-Codes initialisieren *)
- open_ifile ; (* Dateiname erfragen und öffnen *)
- WHILE NOT Eof (ifile) DO BEGIN
- Read (ifile, readchar) ; (* 1 Zeichen lesen,... *)
- IF (readchar <> eofchar) THEN
- passend_out ; (* ... ausgeben ... *)
- END ;
- Close (ifile) ; (* ... und file schließen *)
- END.
-