#include #include #include #include #include "vesa.h" char *header0 = "VESAINFO v2.0\n"; char *header1 = "The following VESA modes are supported: "; void main(void) { void far *farptr; int i, lines; union REGS regs; struct SREGS sregs; char ts[2]; printf("%s%s",header0,header1); /* Check if VESA BIOS is present */ if (isVESA() == 0) { printf("\n...Error: Cannot locate VESA BIOS\n"); exit(1); } /* Loop over modes, displaying info for each */ for (i = 0; Vinfo.modeptr[i] != EOF; i++) { /* Display mode number */ printf("\n %4Xh",Vinfo.modeptr[i]); printf(" (%s):", Vinfo.modeptr[i] & 0x0100 ? "VESA" : " OEM"); if (getVESAinfo(Vinfo.modeptr[i]) == NULL) { printf("\nOops. Couldn't retrieve mode info.\n"); exit(2); } /* Display mode type (text or graphics) */ printf(" %s ",(Vminfo.modeattr & 0x0010) ? "Graph":"Text "); switch (Vminfo.WindowAattr) { case 0 : strcpy(ts,"NA"); break; case 3 : strcpy(ts,"RO"); break; case 5 : strcpy(ts,"WO"); break; case 7 : strcpy(ts,"RW"); break; default: strcpy(ts,"??"); break; } printf("WA:%s ",ts); switch (Vminfo.WindowBattr) { case 0 : strcpy(ts,"NA"); break; case 3 : strcpy(ts,"RO"); break; case 5 : strcpy(ts,"WO"); break; case 7 : strcpy(ts,"RW"); break; default: strcpy(ts,"??"); break; } printf("WB:%s ",ts); printf("Gran: %ik Size: %ik", Vminfo.granularity, Vminfo.size); /* Display mode resolution */ if (Vminfo.modeattr & 0x0002) { printf(" %4d x%4d ", Vminfo.XPixels, Vminfo.YPixels); /* Display number of colors */ if (Vminfo.modeattr & 0x0008) printf(" %3d Colors", 0x0001 << (Vminfo.bits)); else printf(" Mono"); } else printf(" N/A\n"); } exit(0); }