/***************************************************************************
 *                                                                         * 
 *                      sF's mouse routines                                *
 *                                                                         *
 *                  Copyright(C) 1997 Simon Howard                         *
 *                                                                         *
 ***************************************************************************/

 #include "sf_mouse.h"

int oldx, oldy;
int m_xlimit, m_ylimit, m_xsize, m_ysize;
union REGS regs;

/* Initialises the mouse ***************************************************/

int m_init_mouse()
{
        regs.x.ax=0;
        int86(0x33,&regs,&regs);
        if(regs.x.ax==0)
                return 0;
        if(regs.x.ax==-1)
                return regs.x.bx;
}


/* Show the mouse on screen ************************************************/

void m_show_mouse()
{
//        regs.x.ax=1;
//        int86(0x33,&regs,&regs);
}

/* Hide the mouse **********************************************************/

void m_hide_mouse()
{
        regs.x.ax=2;
        int86(0x33,&regs,&regs);
}

/* Get info ****************************************************************/

mouse_t m_get_info()
{
        mouse_t temp;

        regs.x.ax=3;
        int86(0x33,&regs,&regs);

        temp.buttons=regs.x.bx;
        temp.x=regs.x.cx/2;
        temp.y=regs.x.dx;

        return temp;
}

/* Wait until no mouse clicks **********************************************/

void m_noclicks()
{
        mouse_t temp;

        while(1)
        {
                temp=m_get_info();
                if(temp.buttons==0) break;
        }
}

/* Set the mouse pointer **************************************************/

void m_setmouse(int x,int y)
{
        regs.x.ax=4;
        regs.x.cx=x;
        regs.x.dx=y;
        int86(0x33,&regs,&regs);
}

/* find the distance moved in mickeys ************************************/

mouse_t m_mickeys()
{
         mouse_t return1;

         regs.x.ax=0xb;
         int86(0x33,&regs,&regs);

         return1.x=regs.x.cx;
         if(return1.x>32767) return1.x=-(65535-return1.x);
         return1.y=regs.x.dx;

         return return1;
}
