Var VideoScreenWidth : Integer; { Is screen set to 80 or 132 column } Function GetVidLine( LineNumber : Integer) : StringLong; { File: GETVIDLN.INC } { Given the screen line number, return the line from video memory } Const LATOFSBase = $0EF4; VidMemSeg = $EE00; null = 0; Var TempString : StringLong; LATOFSOffset, CharOffset : Integer; LineLen, ColCounter, LastCharPos : Integer; Begin TempString := ''; { First get the line offset from the LATOFS table } LATOFSOffset := LATOFSBase + (2 * (LineNumber - 1)); CharOffset := MemW[VidMemSeg:LATOFSOffset]; VideoScreenWidth := Mem[VidMemSeg:$0f26]; If (CharOffSet Xor $8000) > 0 Then Begin { It's a double width line } CharOffset := CharOffset And $7FFF; LineLen := VideoScreenWidth div 2; End Else LineLen := VideoScreenWidth; For ColCounter := 1 to LineLen Do Begin If Mem[VidMemSeg:CharOffset] = null Then TempString[ColCounter] := ' ' Else Begin TempString[ColCounter] := Chr(Mem[VidMemSeg:CharOffset]); If TempString[ColCounter] <> ' ' Then LastCharPos := ColCounter; End; { If there was a character } CharOffset := CharOffset + 1; End; TempString[0] := Chr(LastCharPos); { Return with the final value } GetVidLine := TempString; End; { Function GetVidLine }