home *** CD-ROM | disk | FTP | other *** search
- /*
- * 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] ) } )
-