ROM Version
Print the systems' ROM BIOS version, date, and machine ID
The ROM BIOS release date is located at address: F000:FFF5h-F000:FFFCh (8 bytes)
The ROM BIOS model ID is located at address: F000:FFFEh (1 byte)
As far as I know, after the 286 this area was no longer used for the ROM BIOS version.
For instance. I owned a Gateway 2000 machine with an AMI BIOS from America Megatrends Inc.
My BIOS version is located at memory location 0F000:0C80h
BIOS VERSION 1.00.07.DQ0T
See a section in Undocumented DOS programming for an updated way of getting the BIOS version.
int main(int argc, char *argv[] ) {
unsigned int mID, i;
static unsigned char far *Rptr = (unsigned char far *) 0xF000FFF5;
static unsigned char far *IDptr = (unsigned char far *) 0xF000FFFE;
printf("\nRelease date: ");
for (i = 0; i < 8; i++)
printf("%c", *Rptr++);
mID = (int) *IDptr;
if (mID < 0xF8)
printf("\nNot an IBM compatible");
printf("\nModel: (0x%X) - ", mID);
switch (mID - 0xF7) {
case (1): printf("PS/2 Model 80");
break;
case (2): printf("PC convertible");
break;
case (3): printf("PS/2 Model 25 or 30");
break;
case (4): printf("PC/XT");
break;
case (5): printf("80-286 (PC/AT, PS/2 Model 50 or 60)");
break;
case (6): printf("PCjr");
break;
case (7): printf("PC/XT");
break;
case (8): printf("PC (IBM compatible)");
break;
}
return mID;
}