program konvert; { Konvertiert FAST Zeichensaetez in DOWNLOAD fuer EPSON FX-80(+) Version 1.0 Stand: 02.05.88 (c) GHE, Gunkel --------------------------------------------------------------------------- beim veraendern diese Files beachten Sie bitte: - die Werte sind jetzt fest fuer FAST Zeichensaetze und Epson eingestellt - jeder Drucker hat in der regel andere Werte ueber den Aufbau eines DownLoad-Zeichensatzes - Lesen Sie daher den Aufbau der FAST-Zeichensaetze im FAST Handbuch Seite 12/13 - Lesen Sie in Ihrem Druckerhandbuch das entsprechende Kapitel ueber den DownLoad-Zeichensatz - das ganze hat nur Sinn, wenn Ihr Drucker das 8.Bit hardwaremaessig nach- geruestet hat. Lesen Sie dazu im File README.DOC den entsprechenden Ab- schnitt. - teilen Sie uns konvertierte Zeichensaetze fuer andere Drucker bzw. anderere Konvertierungsprogramme mit. Sie helfen damit anderen Usern ----------------------------------------------------------------------------- } const rec1 = 4096; { Puffergroesse in Bytes } buf1 = 32; { Puffergroesse in Records a 128 Bytes } attribut = 139; { bei Proportional entsprechend Zeichenbreite setzen, hier fest fuer maximale Breite gesetzt } var datei1 : string[14]; { Quelldatei zum wandeln name.FON } datei2 : string[14]; { Zieldatei $+name.FON } file1 : file; file2 : text; byte_zaehler1, record_zaehler1 : integer; buffer1 : array [1..rec1] of byte; byt : array [0..7] of byte; bit : array [0..7] of byte; file_end : boolean; i,j,k,m,n,send,laenge, zeichen_anzahl : integer; { ======================================================================== } procedure read_file1; { liesst die Quelldatei in ein Zug in Speicher } begin byte_zaehler1 := 1; if record_zaehler1>buf1 then begin blockread(file1,buffer1,buf1); record_zaehler1 := record_zaehler1-buf1; file_end := false; end else begin blockread(file1,buffer1,record_zaehler1); file_end:=true; end; end; { ======================================================================== } procedure wandel; begin for j := 1 to zeichen_anzahl do begin write(char(j+31)); write(file2,char(attribut)); (* die naechsten 8 Bytes laden *); for i:= 0 to 7 do begin byt[i]:=buffer1[byte_zaehler1+i]; end; byte_zaehler1:=byte_zaehler1+8; (* Matrix wandeln *) n := 128; for i:=0 to 7 do begin for k:=0 to 7 do begin bit[k]:= 0; (* Bits loeschen *) end; for k:=0 to 7 do begin bit[k]:=byt[k] div n; byt[k]:= byt[k] - (bit[k]*n); end; send := 0; (* nach bitwertigkeit neues byte bilden *) m := 128; for k:=0 to 7 do begin send:=send+(bit[k]*m); m := m shr 1; end; write(file2,char(send)); n:= n shr 1; end; (* byte zeichenschleife *) write(file2,char(0),char(0),char(0)); end; (* der Zeichenschleife *) end; { ========================================================================== } { MAIN } begin clrscr; writeln('Konvertierung FAST Zeichensaetze zu DownLoad-Zeichensaetze fuer'); writeln(' EPSON FX-80(+)'); writeln(' (c) 4/88 by GHE, Gunkel'); writeln; writeln('Zur Programmfortfuehrung bitte Taste druecken'); writeln; write('Name der zu wandelnden Zeichensatzdatei eingeben : '); readln (datei1); datei2 := '$'+datei1; writeln('Zieldatei = ',datei2); writeln; writeln('Bitte etwas Geduld ***** working'); assign(file1,datei1); reset(file1); record_zaehler1 := filesize(file1); file_end:= false; while not file_end do begin read_file1; end; close(file1); assign(file2,datei2); rewrite(file2); laenge := ((buffer1[128]*256) + (buffer1[127])); zeichen_anzahl := laenge div 8; writeln (zeichen_anzahl); byte_zaehler1 := 129; wandel ; writeln; writeln('Ende der Umwandlung'); close (file2); end.