PROGRAM GMakeFnt; {****************************************************************************** ** ** Author: Robert W. Bloom ** ** Function: This program reads input from the file 'CHARS.ASC' and creates ** a file 'CHARS.DAT.' CHARS.DAT is used by the program 'SIGNS' ** to create signs or banners. See Signs.DOC for more info. ** This is a generic Pascal version for Pascal MT+. ** *****************************************************************************} CONST Date = '30 Apr 86'; {date of last revision of this prog} Input_DFN = 'Chars.ASC'; {default input file} Output_DFN = 'GChars.DAT'; {default output file} Max_Width = 10; {these must be no greater then input file} Max_Height = 12; {and match CONSTs in signs.pas!} TYPE CHAR_RECORD = RECORD {record type used for random access} character : CHAR; width : INTEGER; height : INTEGER; pic : ARRAY[1..Max_Height,1..Max_Width] OF CHAR END; {record} IN_FILE_TYPE = TEXT; OUT_FILE_TYPE = FILE OF CHAR_RECORD; LABEL 1; {for error recovery} VAR c : CHAR; ans,ifn,ofn : STRING[14]; input_fn : IN_FILE_TYPE; output_fn : OUT_FILE_TYPE; trans_chr : CHAR_RECORD; i,j,result : INTEGER; BEGIN WRITELN('<<< program -- MakeFont, ',Date,' -- started >>>'); WRITELN; 1: WRITE('Enter filename of input file, for the default ''Chars.ASC'' -->'); READLN(ans); IF ans = '' THEN ifn := Input_DFN ELSE ifn := ans; WRITE('Enter filename of output file, for the default ''GChars.DAT'' -->'); READLN(ans); IF ans = '' THEN ofn := Output_DFN ELSE ofn := ans; ASSIGN(input_fn,ifn); RESET(input_fn); IF IORESULT = 255 THEN BEGIN WRITELN('No input file found!'); GOTO 1 END; ASSIGN(output_fn,ofn); REWRITE(output_fn); IF IORESULT = 255 THEN BEGIN WRITELN('failed trying to open output file - enter a different name!'); GOTO 1 END; WRITELN; WRITE('Date of font file --> '); FOR i := 1 TO 10 DO BEGIN READ(input_fn,c); WRITE(c); END; {output date of file} READLN(input_fn); {skip rest of line} WRITELN; WRITE('defining characters --> '); WHILE NOT EOF(input_fn) DO WITH trans_chr DO BEGIN FOR i := 1 TO Max_Height DO FOR j := 1 TO Max_Width DO pic[i,j] := ' '; {fill with all spaces} READLN(input_fn,character,width,height); FOR i := 1 TO height DO BEGIN FOR j := 1 TO width DO READ(input_fn,pic[i,j]); READLN(input_fn) END; WRITE(output_fn,trans_chr); {write out record to file} WRITE(character); {echo char just processed} (* WRITELN; {echo of char picture} FOR i := 1 TO Max_Height DO BEGIN {commented out for less 'noise'} FOR j := 1 TO Max_Width DO {during processing} WRITE(pic[i,j]); WRITELN END; *) END; {with trans_chr} {END while} WRITELN; CLOSE(input_fn,result); CLOSE(output_fn,result); WRITELN; WRITELN('<<< program -- MakeFont -- completed >>>') END.