home *** CD-ROM | disk | FTP | other *** search
- /**
- *
- * Name mogate -- Gateway to Microsoft mouse functions
- *
- * Synopsis ercode = mogate(pinregs,poutregs);
- *
- * int ercode Error return code:
- * MO_OK if successful;
- * MO_ABSENT if mouse driver not installed.
- * const DOSREG *pinregs
- * Register values to pass.
- * DOSREG *poutregs Register values to return.
- *
- * Description This function is the gateway to all Microsoft mouse
- * functions.
- *
- * Use MOEQUIP or the global variable b_mouse to test for
- * presence of the mouse and mouse driver software.
- *
- * Returns ercode Error return code:
- * MO_OK if successful;
- * MO_ABSENT if mouse driver not installed.
- * b_mouse Number of mouse buttons (0 if no driver).
- *
- * Version 6.00 (C)Copyright Blaise Computing Inc. 1989
- *
- **/
-
- #include <dos.h> /* For int86x(), REGS, SREGS. */
-
- #include <bmouse.h>
-
- int mogate(pinregs,poutregs)
- const DOSREG *pinregs;
- DOSREG *poutregs;
- {
- int result;
- union REGS inregs,outregs;
- struct SREGS sregs;
-
- if (b_mouse == MO_UNKNOWN)
- moequip();
-
- if (b_mouse <= 0)
- result = MO_ABSENT;
- else
- {
- inregs.x.ax = pinregs->ax;
- inregs.x.bx = pinregs->bx;
- inregs.x.cx = pinregs->cx;
- inregs.x.dx = pinregs->dx;
- inregs.x.si = pinregs->si;
- inregs.x.di = pinregs->di;
- sregs.ds = pinregs->ds;
- sregs.es = pinregs->es;
-
- int86x(0x33,&inregs,&outregs,&sregs);
-
- poutregs->ax = outregs.x.ax;
- poutregs->bx = outregs.x.bx;
- poutregs->cx = outregs.x.cx;
- poutregs->dx = outregs.x.dx;
- poutregs->si = outregs.x.si;
- poutregs->di = outregs.x.di;
- poutregs->ds = sregs.ds;
- poutregs->es = sregs.es;
-
- result = MO_OK;
- }
-
- return result;
- }