These functions provide support for a graphics cursor in Video Mode 6. The graphics cursor must be defined using the maximum sized cells (16x32), but effectively can be any rectangular size from 1x1 to 16x32. The blink rate is variable, and there is masking capability to handle situations where the desired cursor data needs to be XORed (instead of overwriting) into existing display data. Cursor "HotSpot" coordinates allows for flexible cursor positioning. Cursor clipping at the display boundaries is provided. These services are supported by software as part of the Int 08h (TIMER 0) Service.
Graphics Cursor Services
AH AL Description
===============================================
DCh Cursor Services for Graphics Mode
-----------------------------------------------
00h Define Graphics Cursor Data
-----------------------------------------------
01h Get Graphics Cursor Data
-----------------------------------------------
02h Define Graphics Cursor Blink Rate
-----------------------------------------------
03h Move Graphics Cursor
-----------------------------------------------
04h Enable Graphics Cursor Blink
-----------------------------------------------
05h Disable Graphics Cursor Blink
-----------------------------------------------
06h Turn On Graphics Cursor
-----------------------------------------------
07h Turn Off Graphics Cursor
-----------------------------------------------
08h Get Graphics Cursor Status
-----------------------------------------------
Name Length Description
(Bytes)
===========================================================================
HotSpotX 1 Cursor origin x-coordinate (normally 0)
---------------------------------------------------------------------------
HotSpotY 1 Cursor origin y-coordinate (normally 0)
---------------------------------------------------------------------------
GC_AND 64 16x32 bitmap that is ANDed into the cursor destination
---------------------------------------------------------------------------
GC_XOR 64 16x32 bitmap that is XORed into the cursor destination
---------------------------------------------------------------------------
If the data in the 16x32 area of the display memory that is the cursor destination is designated as "GC_Save", then the cursor image is defined by the following formula:
Cursor = [(GC_Save) AND (GC_And)] XOR GC_Xor
Example 1: If all bits in GC_And are zero, then the cursor image will be a full 16x32 copy of GC_Xor.
Example 2: For a simple 8x8 cursor, defined in the upper left corner of the 16x32 cell, the first 8 words of GC_And should be 0FF00h and the remaining 24 words should be 0FFFFh. The first 8 words of GC_Xor should be 00xxh (xx = cursor data), and the remaining 24 words should be 0000h.
DC01h: Get Cursor Data
This function is designed to return the current data that defines the graphics cursor. A typical application would be to save the existing cursor definition so that it could later be restored with the AX=DC00h function.
Name Length Description
(Bytes)
=============================================================================
GC_HotSpotX 1 Cursor origin x-coordinate (normally 0)
-----------------------------------------------------------------------------
GC_HotSpotY 1 Cursor origin y-coordinate (normally 0)
-----------------------------------------------------------------------------
GC_And 64 16x32 bitmap that is ANDed into the cursor destination
-----------------------------------------------------------------------------
GC_Xor 64 16x32 bitmap that is XORed into the cursor destination
-----------------------------------------------------------------------------