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