Procedure WriteP (DispStr : String; X,Y,Colr : Byte; FChar : Char; Patrn : String); (* DispStr = non-formatted string to be output to the screen. ie: pass '4031234567', not '(403) 123-4567'. X,Y = location to begin writing string to screen. If the pattern begins with an 'X', this WILL be taken into account and will advance one space. Colr = attribute of DispStr. FChar = Filler character for strings that don't complete the pattern. Patrn = Template for writing string to screen. Essentially, the only character required in this template is the 'X', to show where a character is NOT displayed. *) (* This procedure will write DispStr to the screen, following the guidelines given in Patrn. For example, calling WriteP ('40312345',10,11,7,'_','X###XX###X####'); will display: 403 123 45__ ^advancing space on the screen. Of course, the '( ) -' would make it complete, but that's just an example. *) (* Standard disclaimer: I'm not liable for anything this procedure does outside the original purpose of the procedure. If something bad happens, let me know, but that's all I can do. *) Var Loc, PX : Integer; Begin Colr := CheckColor (Colr); Loc := ((X-1)*2)+((Y-1)*160); Loop := 1; PX := 1; While PX <= Length (Patrn) Do Begin If Patrn[PX] = 'X' Then While Patrn[PX] = 'X' Do Begin Inc (Loc,2); Inc (PX); End Else Begin If Loop <= Length (DispStr) Then Begin Mem[VidSeg:Loc] := Ord (DispStr[Loop]); Mem[VidSeg:Loc+1] := Colr; End Else Begin Mem[VidSeg:Loc] := Ord (FChar); Mem[VidSeg:Loc+1] := HiColr; End; Inc (Loop); Inc (Loc,2); Inc (PX); End; End; End;