program dump_nlq; { print 12 X 16 character representations of a font file. pass 1 data is printed as '*' and pass 2 data as '+'. Data must be converted from column to row mode. You can get some idea of font appearance by changing all references to lst to con with the Turbo editor.} type pass = array [0..11] of byte; chardesc = record ch : char; pass1 : pass; pass2 : pass; end; passes = record pass1 : pass; pass2 : pass; end; anystr = string[255]; var descfile : file of chardesc; inpdesc : chardesc; passdat : array[' '..'~'] of passes; line : anystr; procedure dumpit; var i,j,b : integer; ch, ch2, ch3 : char; begin ch := ' '; repeat for i := 0 to 15 do { 16 rows of dots } begin for ch2 := ch to chr(ord(ch)+4) do { dump 5 chars across } begin for j := 0 to 11 do { 12 columns of dots } begin if odd(i) then { if odd, pass 2 else pass 1 } begin b := passdat[ch2].pass2[j]; { get proper byte then shift in preparation for next column} passdat[ch2].pass2[j] := passdat[ch2].pass2[j] shl 1; ch3 := '+'; end else begin b := passdat[ch2].pass1[j]; { ditto for pass 1 data } passdat[ch2].pass1[j] := passdat[ch2].pass1[j] shl 1; ch3 := '*'; end; b := b shl 1; { transfer bit 7 to high order byte then if high <> 0 print the dot} if hi(b) <> 0 then write(lst,ch3) else write(lst,' '); { else no dot here } end; write(lst,' '); { blank area between chars } end; writeln(lst); { skip to next row } end; { 4 blank lines between char rows } writeln(lst); writeln(lst); writeln(lst); writeln(lst); ch := chr(ord(ch)+5); { prepare for next row } until ch > '~'; end; begin { open and read all the data for the font file } assign(descfile, 'ascii2.nlq'); reset(descfile); repeat read(descfile,inpdesc); passdat[inpdesc.ch].pass1 := inpdesc.pass1; passdat[inpdesc.ch].pass2 := inpdesc.pass2; until eof(descfile); close(descfile); write(lst,^[,'0'); { select 8 LPI } dumpit; { doit!! } end.