/***************************************************************************** This is a simple example of how to use INT 31h/AX=EEFFh to get information about the DOS extender and the protected mode system. DOS extender developers are encouraged to support this call as a standard detection method. *****************************************************************************/ #include #include main (void) { union REGS r; struct SREGS sr; char far *copyright; char *systems[] = {"Raw", "XMS", "VCPI", "DPMI"}; char *processor[] = {"80386", "80486", "80586","Unknown"}; r.x.eax = 3; int386 (0x10, &r, &r); segread (&sr); r.w.ax = 0xEEFF; int386x (0x31, &r, &r, &sr); if (r.x.cflag) { printf ("Extender Info Function Not Present!\n"); exit (1); } copyright = MK_FP (sr.es, r.x.ebx); printf ("Copyright String:\n"); printf ("-----------------\n"); printf ("%s\n\n", copyright); printf ("System Information:\n"); printf ("-------------------\n"); printf ("Extender Code : %.6Xh ", r.x.eax); printf ("(%c%c%c%c)\n", r.x.eax >> 24, r.x.eax >> 16, r.x.eax >> 8, r.x.eax); printf ("Extender Version : v%d.%d\n", r.h.dh, r.h.dl); printf ("System Type : %s\n", systems[r.h.ch]); if (r.h.cl > 5) r.h.cl = 6; printf ("Processor : %s\n", processor[r.h.cl-3]); return 0; }