[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]

    {
    Someone has suggested that you use the BIOS routines, but I don't
    think his code was complete.  In case you want to go the BIOS
    route, I hacked out a routine that does that:
    }

    function Screen(row, column : byte): char; assembler;
    { returns the char at Row, Column }
    asm
      MOV  AH, 0FH
      INT  10H       { Get active display page in BH, where it stays for
                       remainder of this routine }

      MOV  AH, 03H
      INT  10H       { Get current cursor settings for active display page }

      PUSH DX        { Save cursor coordinants on stack }

      MOV  DH, row
      MOV  DL, column
      DEC  DH        { Make allowance for the fact that BIOS treats origin }
      DEC  DL        { as 0,0, whereas we want it treated as 1,1           }
      MOV  AH, 02H
      INT  10H       { Move cursor to row-1, column-1 }

      MOV  AH, 08H
      INT  10H       { Get character at cursor in AL, where it stays until
                       returned by function }

      POP  DX        { Restore old cursor coordinates to DX }
      MOV  AH, 02H
      INT  10H       { Move cursor back where it was }
    end;
    ---
     * Blue Lake System OR 503-656-9790 v.32bis 5 Node 12 Gig
     * PostLink(tm) v1.20  BLUELAKE (#433) : RelayNet(tm)

[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]