+++ /dev/null
-#include "mouse.h"
-
-typedef unsigned short uint16_t;
-
-#define INTR 0x33
-
-#define QUERY 0
-#define SHOW 1
-#define HIDE 2
-#define READ 3
-#define WRITE 4
-#define PIXRATE 0xf
-
-#define XLIM 7
-#define YLIM 8
-
-int have_mouse(void)
-{
- uint16_t res = 0;
-#ifdef __WATCOMC__
- _asm {
- mov eax, QUERY
- int INTR
- mov res, ax
- }
-#endif
- return res;
-}
-
-void show_mouse(int show)
-{
- uint16_t cmd = show ? SHOW : HIDE;
-#ifdef __WATCOMC__
- _asm {
- mov ax, cmd
- int INTR
- }
-#endif
-}
-
-int read_mouse(int *xp, int *yp)
-{
- uint16_t x, y, state;
-#ifdef __WATCOMC__
- _asm {
- mov eax, READ
- int INTR
- mov state, bx
- mov x, cx
- mov y, dx
- }
-#endif
-#ifdef __DJGPP__
- x = y = state = 0;
-#endif
-
- if(xp) *xp = x;
- if(yp) *yp = y;
- return state;
-}
-
-void set_mouse(int x, int y)
-{
-#ifdef __WATCOMC__
- _asm {
- mov eax, WRITE
- mov ecx, x
- mov edx, y
- int INTR
- }
-#endif
-}
-
-void set_mouse_limits(int xmin, int ymin, int xmax, int ymax)
-{
-#ifdef __WATCOMC__
- _asm {
- mov eax, XLIM
- mov ecx, xmin
- mov edx, xmax
- int INTR
- mov eax, YLIM
- mov ecx, ymin
- mov edx, ymax
- int INTR
- }
-#endif
-}
-
-void set_mouse_rate(int xrate, int yrate)
-{
-#ifdef __WATCOMC__
- _asm {
- mov ax, PIXRATE
- mov ecx, xrate
- mov edx, yrate
- int INTR
- }
-#endif
-}
-
-void set_mouse_mode(enum mouse_mode mode)
-{
- if(mode == MOUSE_GFX) {
- set_mouse_rate(1, 1);
- } else {
- set_mouse_rate(8, 16);
- }
-}