{ Copyright (C) 1986 Adam Fritz, 133 Main St., Afton, N.Y. 13730 } procedure ListChar ( BChar : char ) ; var iBChar : integer ; nCLines : integer ; nChar : integer ; nSegs : integer ; OffOn : byte ; nOff : integer ; nOn : integer ; i : integer ; {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} function GetFont : byte ; begin GetFont := fData[fOffset] ; fOffset := fOffset + 1 end ; {~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~} begin { force ASCII code range } iBChar := Ord(BChar) and $007F ; { character defined? } if fIndex[iBChar].iDef <> 0 then begin { position to read } fOffset := fIndex[iBChar].iOff ; { get line count } nCLines := GetFont ; nBLines := nBLines + nCLines ; { show character } while nCLines > 0 do begin nCLines := nCLines - 1 ; { get segment count } nSegs := GetFont ; nChar := 0 ; while nSegs > 0 do begin nSegs := nSegs - 2 ; { get Off character count } nOff := GetFont ; while nOff > 0 do begin nOff := nOff - 1 ; if nChar < PageWidth then begin write (LST,BlankChar) ; nChar := nChar + 1 end end ; { gen On character count } nOn := GetFont ; while nOn > 0 do begin nOn := nOn - 1 ; if nChar < PageWidth then begin write (LST,DisplayChar) ; nChar := nChar + 1 end end end ; writeln (LST) end end end ; { Copyright (C) 1986 Adam Fritz, 133 Main St., Afton, N.Y. 13730 }