[NTOS/CM]
[reactos.git] / reactos / subsystems / ntvdm / bios / bios32 / moubios32.h
1 /*
2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: moubios32.h
5 * PURPOSE: VDM Mouse 32-bit BIOS
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 */
8
9 #ifndef _MOUBIOS32_H_
10 #define _MOUBIOS32_H_
11
12 /* INCLUDES *******************************************************************/
13
14 #include "ntvdm.h"
15
16 /* DEFINES ********************************************************************/
17
18 #define BIOS_MOUSE_INTERRUPT 0x33
19
20 enum
21 {
22 MOUSE_BUTTON_LEFT,
23 MOUSE_BUTTON_RIGHT,
24 MOUSE_BUTTON_MIDDLE,
25 NUM_MOUSE_BUTTONS
26 };
27
28 typedef struct _MOUSE_USER_HANDLER
29 {
30 /*
31 * CallMask format: see table: http://www.ctyme.com/intr/rb-5968.htm#Table3171
32 * Alternatively, see table: http://www.ctyme.com/intr/rb-5981.htm#Table3174
33 */
34 USHORT CallMask;
35 ULONG Callback; // Far pointer to the callback
36 } MOUSE_USER_HANDLER, *PMOUSE_USER_HANDLER;
37
38 typedef struct _MOUSE_DRIVER_STATE
39 {
40 SHORT ShowCount;
41 COORD Position;
42 WORD Character;
43 WORD ButtonState;
44 WORD PressCount[NUM_MOUSE_BUTTONS];
45 COORD LastPress[NUM_MOUSE_BUTTONS];
46 WORD ReleaseCount[NUM_MOUSE_BUTTONS];
47 COORD LastRelease[NUM_MOUSE_BUTTONS];
48 SHORT HorizCount;
49 SHORT VertCount;
50 WORD MickeysPerCellHoriz;
51 WORD MickeysPerCellVert;
52
53 /*
54 * User Subroutine Handlers called on mouse events
55 */
56 MOUSE_USER_HANDLER Handler0; // Handler compatible MS MOUSE v1.0+
57 MOUSE_USER_HANDLER Handlers[3]; // Handlers compatible MS MOUSE v6.0+
58
59 struct
60 {
61 WORD ScreenMask;
62 WORD CursorMask;
63 } TextCursor;
64
65 struct
66 {
67 COORD HotSpot;
68 WORD ScreenMask[16];
69 WORD CursorMask[16];
70 } GraphicsCursor;
71 } MOUSE_DRIVER_STATE, *PMOUSE_DRIVER_STATE;
72
73 /* FUNCTIONS ******************************************************************/
74
75 VOID MouseBiosUpdatePosition(PCOORD NewPosition);
76 VOID MouseBiosUpdateButtons(WORD ButtonStatus);
77 BOOLEAN MouseBios32Initialize(VOID);
78 VOID MouseBios32Cleanup(VOID);
79
80 #endif // _MOUBIOS32_H_
81
82 /* EOF */