Newsgroups: comp.sys.ibm.pc.misc
Path: utzoo!utgpu!barry
From: barry@gpu.utcs.utoronto.ca (Barry Lay)
Subject: Controlling mouse cursor
Message-ID: <1991Mar25.081620.10977@gpu.utcs.utoronto.ca>
Summary: INT 33 func 9 doesn't do anything
Organization: UTCS Public Access
Date: Mon, 25 Mar 1991 08:16:20 GMT

Hello,
  I am trying to change the mouse cursor in graphics mode with the code 
included below.  I have created a structure which contains what I understand
is needed by INT 33/9, and have written a routine to put the necessary values
into the appropriate registers to get the job done.  I can understand that if
I have the pointer to the screen and cursor masks confused I will get garbage,
but this routine does nothing at all.  That is, the cursor remains as an arrow
and all of my other mouse routines (like button press, etc) continue to work
as if nothing happened.

I am programming using MSC 6.00a, under DOS 4.01.  Eventually I will break
down and get a Windows development package, but for now I would like this
to work in DOS.  If there is a more appropriate news group for this, please
let me know.


struct POINTER_MASKS
{
    char ScreenMask[8], CursorMask[8];
};

typedef struct
{
    int HotX, HotY;
    struct POINTER_MASKS far * Masks;
} CURSOR;

#define MOUSE 33

void mouseCursor( CURSOR Cursor )
{
    union REGS regs;
    struct SREGS sregs;

    regs.x.ax=9;
    regs.x.bx=Cursor.HotX;
    regs.x.cx=Cursor.HotY;
    segread( &sregs );
    sregs.es=FP_SEG( Cursor.Masks );
    regs.x.dx=FP_OFF( Cursor.Masks );
    int86x( MOUSE, &regs, &regs, &sregs );
}

Any help would be much appreciated.
Barry
