home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_08_08
/
8n08088a
< prev
next >
Wrap
Text File
|
1990-07-18
|
5KB
|
132 lines
#include <stdio.h>
#include <dos.h>
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
int mouse_status(void); /* Check for mouse driver */
void mouse_config(void); /* Get mouse information */
int which_port(void); /* Which serial port inuse */
char *mouse_type[] = { /* Mouse types */
"Not Defined",
"Bus MOuse",
"Serial Mouse",
"InPort Mouse",
"PS/2 Mouse",
"HP MOuse",
NULL
};
struct mouse_info { /* Mouse info structure */
int major; /* Driver major version */
int minor; /* Driver minor version */
int m_type; /* Mouse type */
int irq_num; /* Mouse type */
int n_buttons; /* Number of mouse buttons */
};
struct mouse_info m_info;
unsigned far *com1_vec = (unsigned far *) 0x00000030;
/* Addr of Com1 vector */
unsigned far *com2_vec = (unsigned far *) 0x0000002C;
/* Addr of Com2 vector */
unsigned far *mouse_vec = (unsigned far *) 0x000000CC;
/* Addr of Mouse vector
*/
main ()
{
if (mouse_status ())
{ /*Check for mouse driver */
mouse_config(); /* Get mouse information */
printf ("Microsoft or compatible mouse driver \
present...\n");
printf("Mouse driver version is %d.%d\n",
m_info.major,m_info.minor);
printf("Mouse type is %s\n",
mouse_type[m_info.m_type]);
printf("Mouse had %d buttons\n",m_info.n_buttons);
printf("Mouse IRQ Level is %d\n", m_info.irq_num);
if (m_info.m_type == 2)
printf("Mouse is using serial port \
COM%d:\n",which_port());
}
else
printf("No Microsoft or compatible mouse driver \
present...\n");
exit (0);
}
/****************************************************************
int mouse_status(void) - Check for the presence of a mouse
driver
Input arguments - None.
Returns _ TRUE (1) if Mouse driver present.
False (0) if no Mouse driver
available.
*****************************************************************/
int mouse_status(void)
{
union REGS regs;
regs.x.ax = 0; /*Function zero - Get mouse status */
int86(0x33, ®s, ®s); /* Call the mouse driver */
if (regs.x.ax == 0xFFFF)
{ /* If return -1 then mouse present */
m_info.n_buttons = regs.x.bx;
/* Store number of buttons on mouse */
return (TRUE); /* Report Mouse present */
}
return(FALSE); /* Mouse driver not available */
}
/*************************************************************
void mouse_config(void) - Get mouse configuration
Input arguments - None.
Returns - None.
*************************************************************/
void mouse_config(void)
{
union REGS regs;
regs.x.ax = 0x0024; /* Function 0x24 -get mouse config */
int86(0x33, ®s, ®s); /* Call the mouse driver */
m_info.major = regs.h.bh; /* Save major version of
driver */
m_info.minor = regs.h.bl; /* Save minor version of
driver */
m_info.m_type = ((regs.h.ch > 0 && regs.h.ch < 6) ?
regs.h.ch : 0);
m_info.irq_num = regs.h.cl; /* Save mouse IRQ level */
}
/*************************************************************
int which_port (void) - Check which serial port the mosue
is using.
Input arguments - None.
Returns - 1 - COM1 in use.
2 - COM2 in use.
0 - Neither COM1 nor COM2 in
use.
****************************************************************/
int which_port(void)
{
if (*(mouse_vec+1) == *(com1_vec+1))
return(1);
if (*(mouse_vec+1) == *(com2_vec+1))
return(2);
return (0);
}
********