home *** CD-ROM | disk | FTP | other *** search
- 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 }
-