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 >
Text File  |  1990-07-18  |  5KB  |  132 lines

  1.  
  2.  
  3. #include  <stdio.h>
  4. #include  <dos.h>
  5.  
  6. #ifndef TRUE
  7. #define TRUE  1
  8. #define FALSE 0
  9. #endif
  10.  
  11. int mouse_status(void);       /* Check for mouse driver */
  12. void mouse_config(void);      /* Get mouse information */
  13. int which_port(void);         /* Which serial port inuse */
  14.  
  15. char *mouse_type[] = {        /* Mouse types */
  16.      "Not Defined",
  17.      "Bus MOuse",
  18.      "Serial Mouse",
  19.      "InPort Mouse",
  20.      "PS/2 Mouse",
  21.      "HP MOuse",
  22.      NULL
  23.    };
  24.  
  25. struct mouse_info {           /* Mouse info structure */
  26.      int major;               /* Driver major version */
  27.      int minor;               /* Driver minor version */
  28.      int m_type;              /* Mouse type */
  29.      int irq_num;             /* Mouse type */
  30.      int n_buttons;           /* Number of mouse buttons */
  31.    };
  32.  
  33. struct mouse_info m_info;
  34.  
  35. unsigned far *com1_vec = (unsigned far *) 0x00000030; 
  36.                                         /* Addr of Com1 vector */                   
  37. unsigned far *com2_vec = (unsigned far *) 0x0000002C; 
  38.                                         /* Addr of Com2 vector */
  39. unsigned far *mouse_vec = (unsigned far *) 0x000000CC; 
  40.                                         /* Addr of Mouse vector 
  41. */
  42. main ()
  43.    {
  44.      if  (mouse_status ())  
  45.           {      /*Check for mouse driver */
  46.           mouse_config();          /* Get mouse information */
  47.               printf ("Microsoft or compatible mouse driver \
  48. present...\n");
  49.               printf("Mouse driver version is %d.%d\n",
  50.                       m_info.major,m_info.minor);
  51.               printf("Mouse type is %s\n",
  52.                      mouse_type[m_info.m_type]);
  53.           printf("Mouse had %d buttons\n",m_info.n_buttons);
  54.               printf("Mouse IRQ Level is %d\n", m_info.irq_num);
  55.           if (m_info.m_type == 2)
  56.                   printf("Mouse is using serial port \
  57. COM%d:\n",which_port());
  58.          }
  59.      else
  60.              printf("No Microsoft or compatible mouse driver \
  61. present...\n");
  62.      exit (0); 
  63.      }
  64. /****************************************************************
  65.      int mouse_status(void) - Check for the presence of a mouse 
  66.                                         driver
  67.           Input arguments   - None.
  68.           Returns           _ TRUE (1) if Mouse driver present.
  69.                               False (0) if no Mouse driver 
  70.                               available.
  71. *****************************************************************/
  72.  
  73. int mouse_status(void)
  74.    {
  75.    union REGS regs;
  76.  
  77.      regs.x.ax = 0;      /*Function zero - Get mouse status */
  78.      int86(0x33, ®s, ®s);    /* Call the mouse driver */
  79.      if (regs.x.ax == 0xFFFF) 
  80.           {    /* If return -1 then mouse present */
  81.           m_info.n_buttons = regs.x.bx;
  82.                         /* Store number of buttons on mouse */
  83.           return (TRUE);            /* Report Mouse present */
  84.           }
  85.      return(FALSE);           /* Mouse driver not available */
  86.      }
  87. /*************************************************************
  88.  
  89.      void mouse_config(void) - Get mouse configuration
  90.  
  91.           Input arguments - None.
  92.           Returns         - None.
  93.  
  94. *************************************************************/    
  95.  
  96. void mouse_config(void)
  97.      {
  98.      union REGS regs;
  99.  
  100.      regs.x.ax = 0x0024; /* Function 0x24 -get mouse config */
  101.      int86(0x33, ®s, ®s);    /* Call the mouse driver */
  102.      m_info.major = regs.h.bh;     /* Save major version of 
  103.                                       driver */
  104.      m_info.minor = regs.h.bl;     /* Save minor version of 
  105.                                       driver */
  106.      m_info.m_type = ((regs.h.ch > 0 && regs.h.ch < 6) ? 
  107.                                                regs.h.ch : 0);
  108.      m_info.irq_num = regs.h.cl;   /* Save mouse IRQ level */
  109.  
  110.      }
  111. /*************************************************************
  112.      int which_port (void)    - Check which serial port the mosue 
  113.                                    is using.
  114.           Input arguments     - None.
  115.           Returns             - 1  - COM1 in use.
  116.                                 2  - COM2 in use.
  117.                                 0  - Neither COM1 nor COM2 in 
  118.                                                         use.
  119. ****************************************************************/
  120.  
  121. int which_port(void)
  122.     {
  123.      if (*(mouse_vec+1) == *(com1_vec+1))
  124.           return(1);
  125.      if (*(mouse_vec+1) == *(com2_vec+1))
  126.           return(2);
  127.      return (0);
  128.      }
  129.  
  130. ********
  131.  
  132.