[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]