INT 33H 000aH: Set Text Pointer Mask
Expects: AX 000aH
BX pointer type: 0=software ptr; 1=hardware ptr
CX AND mask (if BX=0) or cursor start line (if BX=1)
DX XOR mask (if BX=0) or cursor end line (if BX=1)
Info: This lets you modify the appearance of the mouse pointer on the
text-mode display. It also lets you use the standard blinking
"hardware cursor" as the mouse pointer. By default, the pointer
is a "software cursor" displayed as the pointed-to character,
with an "inverted" color attribute.
To modify the pointer for graphics screens, see INT 33H 0009H.
BX 0000H = Software Pointer
Use this to specify the desired colors for the pointer or to set
the pointer to be displayed as a specific character (e.g., a
checkmark, (√), or other character). This latter option is handy
for signaling when a button has been pressed over selectable
field, such as a menu item or hyperlink.
The mouse support works by ANDing the value of the char/attr at
the pointer with your AND mask (i.e., it removes bits from the
screen char/attr which are 0s in your AND mask). It then applies
the XOR mask to the result (i.e., it toggles bits of the result
which are 1s in the XOR mask). It then stores the result of the
two operations into the char/attr on the screen.
CX and DX: The low byte of each mask affects the character code
and the high byte affects the color-and-blink attribute. See
Video Attributes for information on the bit-encoding of text-mode
The default values are: CX=ffffH and DX=7700H. The effect is
that no information is masked by the AND mask, and that the
foreground color is inverted (all three bits toggled) and the
background color is inverted.
This example makes the pointer into a red-on-blue check mark:
mov BX,0 ;software pointer
mov CX,0000H ;mask all current information
mov DX,14fbH ;1xxx=blue bkgd, x4xx=red frgd, xxfb='√'
To set the pointer to an arbitrary color without changing the
character, use CX=00ffH to mask (clear) the attribute and BX=xx00
to set the color to xx (see Screen Attributes).
BX 0001H = Hardware Pointer
This selects to ignore all of the above options and rely on the
familiar blinking text cursor. In this case, the values for CX
and DX identify the shape of the mouse cursor, as used in of
INT 10H 10H.
CX is the starting scan line (0 means the topmost line of the
character cell) and DX is the ending scan line. The maximum
valid value for DX depends upon the current screen mode and video
CGA scan line range is 0 to 7
MDPA scan line range is 0 to 13
EGA scan line range is 0 to 13
VGA scan line range is 0 to 15
Note that EGA and VGA may be in a mode which has fewer (or even
more) scan lines per character cell (e.g., in 43-line mode,
characters have 8 scan lines).
Also note that it is valid to set DX to a larger value than CX.
In that case, the cursor may be shown in two parts with a gap in
the middle. The cursor blinks, regardless of what your do.
See Also: INT 33H: Mouse Support
Interrupts and BIOS Services