Ok, here goes.
Code:
struct tagMouse
{
int x;
int y;
int btndwn;
}Mouse;
void mousereset(void)
{
//Reset driver
union REGS regs;
regs.x.ax=0x00;
int86(0x33,& regs,& regs);
}
void showcursor(void)
{
//Show mouse hw cursor
union REGS regs;
regs.x.ax=0x0001;
int86(0x33,& regs, ®s);
}
void hidecursor(void)
{
//Hide mouse hw cursor
union REGS regs;
regs.x.ax=0x0002;
int86(0x33,& regs,& regs);
}
void GetMousePos(void)
{
//Get mouse pos and button status
union REGS regs;
regs.x.ax=0x0003;
int86(0x33,& regs,& regs);
if (screenres==320)
{
Mouse.x=regs.x.cx>>1;
} else Mouse.x=regs.x.cx;
Mouse.y=regs.x.dx;
Mouse.btndwn=regs.x.bx;
}
void SetMousePos(int x,int y)
{
//Set mouse cursor pos
union REGS regs;
regs.x.ax=0x0004;
regs.x.cx=x;
regs.x.dx=y;
int86(0x33,& regs, & regs);
}
void GetMouseButtonData(int buttonnum)
{
//Get mouse button data
union REGS regs;
regs.x.ax=0x0005;
regs.x.bx=buttonnum;
int86(0x33,& regs,& regs);
int buttonstate=regs.x.ax;
int numberofpresses=regs.x.bx;
int lastcolwhenpressed=regs.x.cx;
int lastrowwhenpressed=regs.x.dx;
}
void GetMouseButtonReleaseData(int buttonnum)
{
//Get mouse button release data
union REGS regs;
regs.x.ax=0x0006;
regs.x.bx=buttonnum;
int86(0x33,& regs,& regs);
int buttonstate=regs.x.ax;
int numberofreleases=regs.x.bx;
int lastcolwhenreleased=regs.x.cx; //x
int lastrowwhenreleased=regs.x.dx; //y
}
void DefineHoriz(int minx,int maxx)
{
//Set horiz range for cursor
union REGS regs;
regs.x.ax=0x0007;
regs.x.cx=minx;
regs.x.dx=maxx;
int86(0x33,& regs, & regs);
}
void DefineVert(int miny,int maxy)
{
//Set vert range for cursor
union REGS regs;
regs.x.ax=0x0008;
regs.x.cx=miny;
regs.x.dx=maxy;
int86(0x33,& regs, & regs);
}
void SetMouseCursor(int hotpointx,int hotpointy,unsigned int cursoroffset,unsigned int cursorsegment)
{
//Change mouse cursor to diff image
union REGS regs;
SREGS sregs;
regs.x.ax=0x0009;
regs.x.bx=hotpointx;
regs.x.cx=hotpointy;
regs.x.dx=cursoroffset;
sregs.es=cursorsegment;
int86x(0x33,& regs, & regs, & sregs);
}
void ConditionalHide(int left,int top,int right,int bottom)
{
//Set cond hide box
//Logitech and compats only - may not on EGA/VGA
union REGS regs;
regs.x.ax=000A;
regs.x.cx=left;
regs.x.dx=top;
regs.x.si=right;
regs.x.di=bottom;
int86(0x33,& regs, & regs);
}
void SetMickeys(int mickeyx,int mickeyy)
{
//Set mickeys ratio
union REGS regs;
regs.x.ax=0x000F;
regs.x.cx=mickeyx;
regs.x.dx=mickeyy;
int 86(0x33,& regs, & regs);
}
void SetAccel(int threshold)
{
//Set mouse accel
union REGS regs;
regs.x.ax=0x0013;
regs.x.dx=threshold;
int86(0x33,& regs,& regs);
}
For an example of screen mask and cursor mask.
Code:
int Arrow[]= {0x3fff,0x1fff,0x0fff,0x07ff,0x03ff,0x01ff,0x00ff,0x007f,0x003f,0x001f,0x01ff,0x10ff,0x30ff,0xf87f,0xf87f,0xfc3f,0x0000,0x4000,0x6000,0x7000,0x7800,0x7c00,0x7e00,0x7f00,0x7f80,0x7c00,0x4c00,0000,0x0600,0x0300,0x0300,0x0000};
int ArrowOffset=FP_OFF(Arrow);
int ArrowSegment=FP_SEG(Arrow);
SetCursor(0,0,ArrowOffset,ArrowSegment);
Your welcome.