Beispiel #1
0
 private void HandleInterrupt(ref INTs.IRQContext context)
 {
     try
     {
         byte status = commandPort.Byte;
         if ((byte)(status & 20) == 0)
         {
             return;
         }
         buffer[offset] = dataPort.Byte;
         offset         = (byte)((offset + 1) % 3);
         if (offset == 0)
         {
             for (byte i = 0; i < 3; i++)
             {
                 if ((buffer[0] & (0x1 << i)) != (buttons & (0x1 << i)))
                 {
                     if ((byte)(buttons & (0x1 << i)) != 0)
                     {
                         MouseManager.MouseState = MouseState.None;
                     }
                     else
                     {
                         MouseManager.MouseState = MouseState.Left;
                     }
                 }
             }
             if (buffer[1] != 0 || buffer[2] != 0)
             {
                 MouseManager.HandleMouse((sbyte)buffer[1], (sbyte)-buffer[2], (int)MouseManager.MouseState, 0);
             }
             buttons = buffer[0];
         }
     }
     catch (sys.Exception ex)
     {
     }
 }