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) { } }