home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 2 / 2872 / machine.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-28  |  2.1 KB  |  120 lines

  1. /* This program sniffs around to see what type of MSDOS computer
  2.     it is running in
  3. */
  4.  
  5. /* Checks what type of machine it is running in and returns
  6.         0 if unknown
  7.         1 if Wang PC
  8.         2 if Wang APC
  9.         3 if IBM PC/XT
  10.         4 if IBM PC/AT
  11.         5 if IBM PC Jr
  12.         6 if IBM PC
  13.         7 if Wang Laptop
  14.     8 if Wang PC200
  15.         9 if Wang PC300
  16.        10 if IBM PS/2
  17. */
  18. int host_mach()
  19. {
  20. unsigned char far *memptr;
  21. unsigned char    c;
  22. int i, match;
  23. static char wang_pc[]={"WANG PROFE"};
  24. static char wang_apc[]={"WANG ADVAN"};
  25. static char wang_lap[]={"WANG"};
  26.  
  27. /* test for Wang PC */
  28. memptr = (unsigned char far *)0xFC003FC2L;
  29. match = 1;
  30. for (i=0;(i<10 && match!=0);i++)
  31.     {
  32.     if(*memptr != wang_pc[i])
  33.         match=0;
  34.     memptr++;
  35.     }
  36. if(match ==1)
  37.     return(1);
  38.  
  39. /* test for Wang APC */
  40. memptr = (unsigned char far *)0xFC003FC2L;
  41. match = 1;
  42. for (i=0;(i<10 && match!=0);i++)
  43.     {
  44.     if(*memptr != wang_apc[i])
  45.     match=0;
  46.     memptr++;
  47.     }
  48. if(match ==1)
  49.     return(2);
  50.  
  51. /* test for Wang Laptop */
  52. memptr = (unsigned char far *)0xFC003FC2L;
  53. match = 1;
  54. for (i=0;(i<4 && match!=0);i++)
  55.     {
  56.     if(*memptr != wang_pc[i])
  57.     match=0;
  58.     memptr++;
  59.     }
  60. if(match ==1)
  61.     /* I should really do an INT 88h func 0 now to verify for sure
  62.        but I'm too lazy!
  63.     */
  64.     return(7);
  65.  
  66. /* Must be an IBM or clone */
  67. memptr = (unsigned char far *)0xF000FFFEL;
  68. c = *memptr;
  69.  
  70. switch(c)
  71.     {
  72. case 0xFC:  /* IBM AT or clone */
  73.         /* for the moment a PC200 is the same as an AT */
  74.             return(4);
  75.  
  76. case 0xFD:  /* IBM PC Jr */
  77.             return(5);
  78.  
  79. case 0xFE:  /* IBM XT or clone */
  80.             return(3);
  81.  
  82. case 0xFF:  /* IBM PC or clone */
  83.             return(6);
  84.  
  85.     }
  86.  
  87. return(0);
  88. }
  89.  
  90.  
  91.  
  92. main()
  93. {
  94. int machine;
  95.  
  96. machine = host_mach();
  97.  
  98. printf("This is a ");
  99. switch(machine)
  100.       {
  101. case 0: printf("unknown type of machine\n");
  102.         break;
  103. case 1: printf("Wang PC\n");
  104.         break;
  105. case 2: printf("Wang Advanced PC\n");
  106.         break;
  107. case 3: printf("IBM PC/XT\n");
  108.         break;
  109. case 4: printf("IBM PC/AT\n");
  110.         break;
  111. case 5: printf("IBM PC Jr\n");
  112.     break;
  113. case 6: printf("IBM PC \n");
  114.     break;
  115. case 7: printf("Wang LapTop\n");
  116.     break;
  117.       }
  118.  
  119. }
  120.