/* Last modified DATE= 05/30/93 at TIME= 00:11:44 */ /* Title vga18.c */ #include #define MINT __int__(0x33) int vga_mouse_modifier = 2; /*doc*/ /**************************************************************************** ** Returns a -1 if mouse IS installed ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ int mouse_installed(void) { _AX = 0; MINT; return(_AX); } /*doc*/ /**************************************************************************** ** Shows the mouse cursor ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_show_cursor(void) { _AX = 1; MINT; } /*doc*/ /**************************************************************************** ** Turns mouse cursor off ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_hide_cursor(void) { _AX = 2; MINT; } /*doc*/ /**************************************************************************** ** Returns button status, mouse row and column (passed by &mrow,&mcol) ** ** 640 x 200 even if in text mode. ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_read_cursor(int *bstatus,int *mrow,int *mcol) { _AX = 3; MINT; _AX = _BX; *bstatus = _AX; *mcol = _CX; *mrow = _DX; *mcol /= vga_mouse_modifier; /* Modify according to video mode */ } /*doc*/ /**************************************************************************** ** Sets mouse cursor to desired row, column ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_cursor(int mrow,int mcol) { mcol *= vga_mouse_modifier; _CX = mcol; _DX = mrow; _AX = 4; MINT; } /*doc*/ /**************************************************************************** ** Returns button status for desired button (in bstatus) ** ** column is modified for current vga video mode ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_press_info(int *bstatus,int *bcount,int *mrow,int *mcol) { int temp; _BX = *bstatus; _AX = 5; MINT; temp = _BX; *bstatus = _AX; *bcount = temp; *mcol = _CX; *mrow = _DX; *mcol /= vga_mouse_modifier; /* Modify according to video mode */ } /*doc*/ /**************************************************************************** ** Returns button release status for desired button (in bstatus) ** ** column is modified for current vga video mode ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_release_info(int *bstatus,int *bcount,int *mrow,int *mcol) { int temp; _BX = *bstatus; _AX = 6; MINT; temp = _BX; *bstatus = _AX; *bcount = temp; *mcol = _CX; *mrow = _DX; *mcol /= vga_mouse_modifier; /* Modify according to video mode */ } /*doc*/ /**************************************************************************** ** Defines left and right columns for mouse to travel in. ** ** Uses mouse coordinates 0-639 ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_minmax_columns(int mincol,int maxcol) { _CX = mincol; _DX = maxcol; _AX = 7; MINT; } /*doc*/ /**************************************************************************** ** Defines top and bottom rows for mouse to travel in. ** ** Uses mouse coordinates 0-349 ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_minmax_rows(int minrow,int maxrow) { _CX = minrow; _DX = maxrow; _AX = 8; MINT; } /*doc*/ /**************************************************************************** ** Set shape of graphics mouse cursor. 8 byte mask, Hot Spot row, col. ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_graphics_cursor(int hsrow,int hscol,char far *mask) { _DX = FP_OFF(mask); _ES = FP_SEG(mask); _CX = hsrow; _BX = hscol; _AX = 9; MINT; } /*doc*/ /**************************************************************************** ** Setup function to be called by mouse interrupt (** NEAR model only **) ** ** ** ** mflag contains the following bit pattern ** ** ** ** BIT CALL SUBROUTINE ON ** ** 0 CURSOR POSN CHANGED ** ** 1 LEFT BUTTON PRESSED ** ** 2 LEFT BUTTON RELEASED ** ** 3 RIGHT BUTTON PRESSED ** ** 4 RIGHT BUTTON RELEASED ** ** 5-15 NOT USED ** ** ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_subroutine(int mflag,void far *func) { _CX = mflag; /* bit pattern to call subroutine */ _ES = FP_SEG(func); _DX = FP_OFF(func); /* ES:DX -> function to call with mask */ _AX = 12; MINT; } /*doc*/ /**************************************************************************** ** Set mickey to pixel ratio. Default ratio is 8 mickeys to 8 pixels for ** ** columns and 16 mickeys to 8 pixels for rows. ** ** ratcol = ratio for columns (8/8 = 1) ** ** ratrow = ratio for rows (16/8 = 2) ** ** This routine controls speed at which cursor moves per mouse movement. ** ** ** ** ** ****************************************************************************/ /*enddoc*/ /*header cpmouse.hh */ /*funct*/ void mouse_set_mickey_pixel_ratio(int ratrow,int ratcol) { _CX = ratcol; _DX = ratrow; _AX = 15; MINT; }