home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
progmisc
/
nfsrc21.zip
/
VIDCUR.PRG
< prev
next >
Wrap
Text File
|
1991-08-16
|
4KB
|
143 lines
/*
* File......: VIDCUR.PRG
* Author....: Glenn Scott
* CIS ID....: 71620,1521
* Date......: $Date: 15 Aug 1991 23:03:30 $
* Revision..: $Revision: 1.3 $
* Log file..: $Logfile: E:/nanfor/src/vidcur.prv $
*
* This is an original work by Glenn Scott and is placed in the
* public domain.
*
* Modification history:
* ---------------------
*
* $Log: E:/nanfor/src/vidcur.prv $
*
* Rev 1.3 15 Aug 1991 23:03:30 GLENN
* Forest Belt proofread/edited/cleaned up doc
*
* Rev 1.2 14 Jun 1991 19:53:12 GLENN
* Minor edit to file header
*
* Rev 1.1 14 Jun 1991 17:59:18 GLENN
* Documentation change (minor), and checked for compatibility with new
* ft_int86().
*
* Rev 1.0 01 Apr 1991 01:02:28 GLENN
* Nanforum Toolkit
*
*/
#include "FTINT86.CH"
#define VIDEO 16
/* $DOC$
* $FUNCNAME$
* FT_SETVCUR()
* $CATEGORY$
* Video
* $ONELINER$
* Set the cursor position on a specified video page
* $SYNTAX$
* FT_SETVCUR( [ <nPage> ], [ <nRow> ], [ <nCol> ] ) -> NIL
* $ARGUMENTS$
* <nPage> is the video page (defaults to current page, determined
* by FT_GETVPG()
*
* <nRow> is the row coordinate (defaults to 0 )
*
* <nCol> is the column coordinate (defaults to 0 )
* $RETURNS$
* NIL
* $DESCRIPTION$
* FT_SETVCUR() sets the cursor position on a specific video page.
* It uses FT_INT86() to invoke interrupt 10h, function 2.
*
* For more information on graphics programming, cursors, and video
* pages, refer to Richard Wilton's _Programmer's Guide to PC and
* PS/2 Video Systems_ (Microsoft Press).
*
* $EXAMPLES$
*
* // Set the position to row 5, column 10 on video page 1:
*
* FT_SETVCUR( 1, 5, 10 )
* $END$
*/
FUNCTION FT_SETVCUR( nPage, nRow, nCol )
LOCAL aRegs[ INT86_MAX_REGS ]
nPage := iif( nPage == nil, FT_GETVPG() , nPage )
nRow := iif( nRow == nil, 0 , nRow )
nCol := iif( nCol == nil, 0 , nCol )
aRegs[ AX ] := MAKEHI( 2 )
aRegs[ BX ] := MAKEHI( nPage )
aRegs[ DX ] := MAKEHI( nRow ) + nCol
FT_INT86( VIDEO, aRegs )
RETURN ( NIL )
/* $DOC$
* $FUNCNAME$
* FT_GETVCUR()
* $CATEGORY$
* Video
* $ONELINER$
* Return info about the cursor on a specified video page
* $SYNTAX$
* FT_GETVCUR( [ <nPage> ] ) -> <aCurInfo>
* $ARGUMENTS$
* <nPage> is the video page to get the cursor information for.
* Defaults to the current page, as returned by FT_GETVPG().
* $RETURNS$
* A four-element array (<aCurInfo>), set up as follows:
*
* aCurInfo[1] = Top line of cursor
* aCurInfo[2] = Bottom line of cursor
* aCurInfo[3] = Character row
* aCurInfo[4] = Character column
*
* $DESCRIPTION$
*
* FT_GETVCUR() uses FT_INT86() to invoke interrupt 10h, function
* 3, to return the character cursor location for the specified
* video page.
*
* The top line and bottom line of cursor are set depending on
* the current cursor mode, and are only meaningful in alphanumeric
* video modes.
*
* For more information on graphics programming, cursors, and
* cursor modes, refer to Richard Wilton's _Programmer's Guide to
* PC and PS/2 Video Systems_ (Microsoft Press).
*
* $EXAMPLES$
*
* aCurInfo := getVCur( 1 ) // Get info on cursor pos in page 1
* QOut("Row: " + str( aCurInfo[3] ) + " Col: " + str( aCurInfo[4] ) )
*
*
* $END$
*/
FUNCTION FT_GETVCUR( nPage )
LOCAL aRegs[ INT86_MAX_REGS ]
nPage := iif( nPage == nil, FT_GETVPG(), nPage )
aRegs[ AX ] := MAKEHI( 3 )
aRegs[ BX ] := MAKEHI( nPage )
FT_INT86( VIDEO, aRegs )
RETURN ( { HIGHBYTE( aRegs[CX] ), LOWBYTE( aRegs[CX] ), HIGHBYTE( aRegs[DX] ), LOWBYTE( aRegs[DX] ) } )