home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 02 / einstieg / treiber.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1988-07-12  |  4.2 KB  |  133 lines

  1. (*-------------------------------------------------------*)
  2. (*                   TREIBER.PAS                         *)
  3. (*           Ausdruck von IBM-Textdateien                *)
  4. (*          m. nicht-kompatiblen Druckern                *)
  5. (*             (C) 1988 T.Lang & TOOLBOX                 *)
  6.  
  7. PROGRAM Treiber; (* Anpassung des STAR8480 an IBM-CODE *)
  8.  
  9. CONST esc       = #27 ;
  10.       eofchar   = #26 ;
  11.       laenge    = 55 ;
  12.  
  13. TYPE  wandeltyp = STRING [6] ;
  14.       (* 1. Zeichen IBM, weitere die Umwandlung *)
  15.  
  16. VAR ifile     : FILE OF CHAR ; (* Inputfile *)
  17.     sourcename: STRING [20] ;
  18.     readchar  : CHAR ;         (* Eingelesenes Zeichen *)
  19.     wandeln   : ARRAY [1..laenge] OF wandeltyp ;
  20.  
  21. PROCEDURE init_wandeln ;
  22. BEGIN
  23.   wandeln[01] := #$15 + esc + 'D' + #$40 + esc + 'J' ;
  24.   wandeln[02] := #$18 + #$EB ;
  25.   wandeln[03] := #$19 + #$ED ;
  26.   wandeln[04] := #$1A + #$EC ;
  27.   wandeln[05] := #$1B + #$EA ;
  28.   wandeln[06] := #$1C + #$E5 ;
  29.   wandeln[07] := #$5C + esc + 'U' + #$5C + esc + 'J' ;
  30.   wandeln[08] := #$7F + #$DB ;
  31.   wandeln[09] := #$80 + esc + 'F' + #$5C + esc + 'J' ;
  32.   wandeln[10] := #$81 + esc + 'D' + #$7D + esc + 'J' ;
  33.   wandeln[11] := #$82 + esc + 'F' + #$7B + esc + 'J' ;
  34.   wandeln[12] := #$84 + esc + 'D' + #$7B + esc + 'J' ;
  35.   wandeln[13] := #$85 + esc + 'F' + #$40 + esc + 'J' ;
  36.   wandeln[14] := #$87 + esc + 'F' + #$5C + esc + 'J' ;
  37.   wandeln[15] := #$8A + esc + 'F' + #$7D + esc + 'J' ;
  38.   wandeln[16] := #$8B + #$69 ;
  39.   wandeln[17] := #$8C + #$69 ;
  40.   wandeln[18] := #$8D + #$69 ;
  41.   wandeln[19] := #$8E + esc + 'D' + #$5B + esc + 'J' ;
  42.   wandeln[20] := #$94 + esc + 'D' + #$7C + esc + 'J' ;
  43.   wandeln[21] := #$97 + esc + 'F' + #$7C + esc + 'J' ;
  44.   wandeln[22] := #$99 + esc + 'D' + #$5C + esc + 'J' ;
  45.   wandeln[23] := #$9A + esc + 'D' + #$5D + esc + 'J' ;
  46.   wandeln[24] := #$9C + esc + 'E' + #$23 + esc + 'J' ;
  47.   wandeln[25] := #$9D + #$5C ;
  48.   wandeln[26] := #$A7 + #$DF ;
  49.   wandeln[27] := #$A9 + #$99 ;
  50.   wandeln[28] := #$AA + #$E6 ;
  51.   wandeln[29] := #$B0 + #$E8 ;
  52.   wandeln[30] := #$B1 + #$E8 ;
  53.   wandeln[31] := #$B2 + #$E7 ;
  54.   wandeln[32] := #$B3 + #$87 ;
  55.   wandeln[33] := #$B4 + #$9C ;
  56.   wandeln[34] := #$BF + #$E6 ;
  57.   wandeln[35] := #$C0 + #$E5 ;
  58.   wandeln[36] := #$C1 + #$9A ;
  59.   wandeln[37] := #$C2 + #$9B ;
  60.   wandeln[38] := #$C4 + #$88 ;
  61.   wandeln[39] := #$C5 + #$E3 ;
  62.   wandeln[40] := #$D9 + #$E4 ;
  63.   wandeln[41] := #$DA + #$99 ;
  64.   wandeln[42] := #$DB + #$E7 ;
  65.   wandeln[43] := #$DC + #$E0 ;
  66.   wandeln[44] := #$DD + #$9F ;
  67.   wandeln[45] := #$DE + #$E2 ;
  68.   wandeln[46] := #$DF + #$E1 ;
  69.   wandeln[47] := #$E1 + esc + 'D' + #$7E + esc + 'J' ;
  70.   wandeln[48] := #$E2 + #$90 ;
  71.   wandeln[49] := #$F4 + #$A2 ;
  72.   wandeln[50] := #$F5 + #$A3 ;
  73.   wandeln[51] := #$F7 + #$C6 ;
  74.   wandeln[52] := #$F8 + #$DF ;
  75.   wandeln[53] := #$F9 + #$A5 ;
  76.   wandeln[54] := #$FA + #$2E ;
  77.   wandeln[55] := #$FE + #$9D ;
  78. END ;
  79.  
  80. PROCEDURE open_ifile ; 
  81.  
  82. VAR  io_ok : BOOLEAN ;
  83.  
  84. BEGIN
  85.   REPEAT
  86.     WriteLn ;
  87.     Write ('Welche Datei soll gedruckt werden ? : ');
  88.     ReadLn (sourcename);  Assign (ifile, sourcename);
  89.     (*$I- *)  (* I/O-Fehlerbehandlung aus *)
  90.     ReSet (ifile);
  91.     (*$I+ *)  (* I/O-Fehlerbehandlung ein *)
  92.     io_ok := (IOResult = 0);
  93.     IF NOT io_ok THEN
  94.       WriteLn ('Datei ',sourcename,' finde ich nicht !');
  95.   UNTIL io_ok ;
  96. END ;
  97.  
  98.  
  99. PROCEDURE passend_out ;
  100.  (* Zeichen anpassen und ausgeben *)
  101.  
  102. VAR i, j      : INTEGER ;
  103.     gefunden  : BOOLEAN ;  (* IBM-Zeichen gefunden ? *)
  104.     writechar : CHAR ;     (* Ausgabe-Zeichen        *)
  105.  
  106. BEGIN
  107.   gefunden := FALSE ;
  108.   i := 1 ;
  109.   REPEAT
  110.     IF Copy (wandeln[i], 1, 1) = readchar
  111.     THEN gefunden := TRUE
  112.     ELSE i := i + 1 ;
  113.   UNTIL (gefunden) OR (i > laenge) ;
  114.   IF gefunden THEN BEGIN
  115.     FOR j := 2 TO Length (wandeln [i]) DO BEGIN
  116.       writechar := Copy(wandeln[i], j, 1);
  117.       Write (Lst, writechar) ;
  118.     END ;
  119.   END
  120.    ELSE Write (Lst, readchar) ;
  121.  END ;
  122.  
  123. BEGIN
  124.   init_wandeln ; (* Umwandlungs-Codes initialisieren *)
  125.   open_ifile ;   (* Dateiname erfragen und öffnen *)
  126.   WHILE NOT Eof (ifile) DO BEGIN
  127.     Read (ifile, readchar) ; (* 1 Zeichen lesen,... *)
  128.     IF (readchar <> eofchar) THEN
  129.       passend_out ;  (* ... ausgeben ... *)
  130.   END ;
  131.   Close (ifile) ;    (* ... und file schließen *)
  132. END.
  133.