home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / listings / v_08_08 / 8n08086a < prev    next >
Text File  |  1990-07-18  |  3KB  |  90 lines

  1.  
  2.  
  3. /* MINFO.C Mouse information demo program*/
  4. /* Version 1.00 03-Mar-90 for Microsoft C 5.1 or QuickC 2.01 */
  5. /* by Bill Byrom = Applications Engineer = Tektronix Dallas TX */
  6.  
  7. /* MINFO displays information about the current mouse driver to 
  8. stdout, and returns an exit code corresponding to the COM port 
  9. number used.  The mouse_info() function is used to interrogate 
  10. the mouse driver via INT 33H Function 24H (Get Mouse 
  11. Information).  This function works with Microsoft MOUSE.COM 
  12. drivers currently available, but may fail with other drivers or 
  13. old versions of MOUSE.COM (tested with version 6.24).
  14.  
  15. int mouse_info( int *major_version, int *minor_version,
  16.                 int *mouse_type, int *mouse_irq );
  17.  
  18. RETURN VALUE: COM port number associated with interrupt vector 
  19. used by mouse driver.  IRQ4 gives COM1, while IRQ3 gives COM2.
  20. If interrupt is other than IRQ4 or IRQ3, 0 is returned.
  21.  
  22. The driver version number is returned in major_version (decimal) 
  23. and minor_version (hex).  The type of mouse is returned as an INT 
  24. in mouse_type (see example below for description of the five 
  25. types).  The IRQ number used by the driver is returned in 
  26. mouse_irq (the PS/2 mouse returns 0, while serial mice normally 
  27. return 3 or 4).  If the mouse driver is not loaded, all returned 
  28. values are 0. */
  29.  
  30. #include <dos.h>
  31. #include <stdio.h>
  32.  
  33. int main(void);
  34. int mouse_info( int *major_version, int *minor_version,
  35.                 int *mouse_type, int *mouse_irq );
  36.  
  37. int main()
  38.    {
  39.      int portnum, major, minor, type, irqnum;
  40.      char *TypeMsg;
  41.      
  42.      portnum = mouse_info( &major, &minor, &type, &irqnum );
  43.      switch( type ) 
  44.           {
  45.           case 1: TypeMsg = "Bus";      break;
  46.           case 2: TypeMsg = "Serial";   break;
  47.           case 3: TypeMsg = "InPort";   break;
  48.           case 4: TypeMsg = "PS/2";     break;
  49.           case 5: TypeMsg = "HP";       break;
  50.          default: TypeMsg = "Unknown"; 
  51.          }
  52.      if( type > 0 )
  53.           printf ( "Driver Version: %d.%x\n"
  54.                    "    Mouse Type: %s\n"
  55.                    "     Interrupt: IRQ%d\n"
  56.                    "          Port: COM%d\n",
  57.                    major, minor, TypeMsg, irqnum, portnum );
  58.      else 
  59.              printf( "Mouse driver is not installed or is an old version.\n" );
  60.     return( portnum ); 
  61.     }
  62.  
  63. int mouse_info( int *major_version, int *minor_version,
  64.                 int *mouse_type, int *mouse_irq )
  65.    {
  66.      union REGS inregs, outregs;
  67.      int com_port;  
  68.  
  69.      inregs.x.ax = 0x0024;
  70.      inregs.x.bx = 0x0000;
  71.  
  72.      inregs.x.cx = 0x0000;
  73.      int86( 0x33, &inregs, &outregs  );
  74.      *major_version = (int)outregs.h.bh;
  75.      *minor_version = (int)outregs.h.bl;
  76.      *mouse_type = (int)outregs.h.ch;
  77.      *mouse_irq = (int)outregs.h.cl;
  78.      switch( outregs.h.cl ) 
  79.           {
  80.           case 4: com_port = 1; break;
  81.           case 3: com_port = 2; break;
  82.          default: com_port = 0;
  83.           }
  84.      return( com_port  );
  85.      }   
  86.  
  87.  
  88. *********
  89.  
  90.