home *** CD-ROM | disk | FTP | other *** search
- /* This program sniffs around to see what type of MSDOS computer
- it is running in
- */
-
- /* Checks what type of machine it is running in and returns
- 0 if unknown
- 1 if Wang PC
- 2 if Wang APC
- 3 if IBM PC/XT
- 4 if IBM PC/AT
- 5 if IBM PC Jr
- 6 if IBM PC
- 7 if Wang Laptop
- 8 if Wang PC200
- 9 if Wang PC300
- 10 if IBM PS/2
- */
- int host_mach()
- {
- unsigned char far *memptr;
- unsigned char c;
- int i, match;
- static char wang_pc[]={"WANG PROFE"};
- static char wang_apc[]={"WANG ADVAN"};
- static char wang_lap[]={"WANG"};
-
- /* test for Wang PC */
- memptr = (unsigned char far *)0xFC003FC2L;
- match = 1;
- for (i=0;(i<10 && match!=0);i++)
- {
- if(*memptr != wang_pc[i])
- match=0;
- memptr++;
- }
- if(match ==1)
- return(1);
-
- /* test for Wang APC */
- memptr = (unsigned char far *)0xFC003FC2L;
- match = 1;
- for (i=0;(i<10 && match!=0);i++)
- {
- if(*memptr != wang_apc[i])
- match=0;
- memptr++;
- }
- if(match ==1)
- return(2);
-
- /* test for Wang Laptop */
- memptr = (unsigned char far *)0xFC003FC2L;
- match = 1;
- for (i=0;(i<4 && match!=0);i++)
- {
- if(*memptr != wang_pc[i])
- match=0;
- memptr++;
- }
- if(match ==1)
- /* I should really do an INT 88h func 0 now to verify for sure
- but I'm too lazy!
- */
- return(7);
-
- /* Must be an IBM or clone */
- memptr = (unsigned char far *)0xF000FFFEL;
- c = *memptr;
-
- switch(c)
- {
- case 0xFC: /* IBM AT or clone */
- /* for the moment a PC200 is the same as an AT */
- return(4);
-
- case 0xFD: /* IBM PC Jr */
- return(5);
-
- case 0xFE: /* IBM XT or clone */
- return(3);
-
- case 0xFF: /* IBM PC or clone */
- return(6);
-
- }
-
- return(0);
- }
-
-
-
- main()
- {
- int machine;
-
- machine = host_mach();
-
- printf("This is a ");
- switch(machine)
- {
- case 0: printf("unknown type of machine\n");
- break;
- case 1: printf("Wang PC\n");
- break;
- case 2: printf("Wang Advanced PC\n");
- break;
- case 3: printf("IBM PC/XT\n");
- break;
- case 4: printf("IBM PC/AT\n");
- break;
- case 5: printf("IBM PC Jr\n");
- break;
- case 6: printf("IBM PC \n");
- break;
- case 7: printf("Wang LapTop\n");
- break;
- }
-
- }
-