barry@gpu.utcs.utoronto.ca (Barry Lay) (03/25/91)
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, ®s, ®s, &sregs );
}
Any help would be much appreciated.
Barryrkl@cbnewsh.att.com (kevin.laux) (03/25/91)
In article <1991Mar25.081620.10977@gpu.utcs.utoronto.ca>, barry@gpu.utcs.utoronto.ca (Barry Lay) writes: [trying to change mouse cursor shape deleted] > struct POINTER_MASKS > { > char ScreenMask[8], CursorMask[8]; ^^^^ ^ ^ int 16 16 The masks are bit mapped blocks of 16 bit words > }; > > #define MOUSE 33 ^^ 0x0033 Must be HEX not decimal; you were calling Int 21h Function 09h (display string), which is why the mouse cursor never changed. [code deleted] > int86x( MOUSE, ®s, ®s, &sregs ); > } Anyway, once you make the above changes, the code should work ok. Your next possible problem will be getting the data values in the masks to work out right :-). -- ________________________________________________________________________________ R. Kevin Laux Email: rkl1@hound.att.com AT&T Bell Labs Voice: (908) 949-1160 Holmdel, NJ 07733 Fax: (908) 949-0959