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)
          ──────────────────────────────────────────────────────────────────
 Returns: none
          ──────────────────────────────────────────────────────────────────
    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
          attribute bytes.

          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='√'
            mov  AX,000aH
            int  33H

          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
          adapter type:

            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
                                    -♦-