[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]
{
> This would be a simple way to check for the screen size.
> Clr The screen
> Set the colors to Back on Background and Forground so that no one sees
> what is happening.
> Make a For L := 1 to 50;
> Do a WriteLN(L);
> then after the top line shgould have the letter "2" if it's a 50 lines
> down else it would have 9 there.
> to get the image just use the IF PORT[$B800:000] =$32 Then { 50 lines
}
var
mode:byte absolute $40:$49; {cur video mode}
columns:byte absolute $40:$4A;
dispSize:word absolute $40:$4C; {cur page size in bytes}
dispOfs:word absolute $40:$4E; {cur page offset}
cursor:array[0..7]of record x,y:byte;end absolute $40:$50;
cursorMode:word absolute $40:$60; {scan lines start/end?}
numPages:byte absolute $40:$62; {video pages avail} {or activePage??}
crtcPort:word absolute $40:$63; {CRTC port addr}
modeSave:byte absolute $40:$65; {crtModeSet}
colorSave:byte absolute $40:$66; {crtPalette}
ticker:longint absolute $40:$6C; {18.2x/sec} {timer}
lastRow:byte absolute $40:$84; {newer bios only:rows on screen-1}
points:byte absolute $40:$85; {newer bios only:scan lines per char}
{
These last two are the interesting ones. LastRow is set to rows-1 on newer
bios's and by up-to-date programs that tweak the CRTC. Otherwise it will
contain 0, meaning 25 lines, for older Bios's
There's a wealth of information up there, man.
And I think this:
}
function ScrnLines:word;begin
if lastRow=0 then lastRow:=24; {set in case BIOS doesn't}
scrnLines:=lastRow+1;
end;
{Untested but should work.}
[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]