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;   /* send model id to DOS's ERRORLEVEL */
}