#include <stdio.h>
#include <conio.h>
#include <dos.h>

typedef struct _BIOSINFO_
{
  unsigned size;
  unsigned char model;
  unsigned char submodel;
  unsigned char version;
  unsigned char hardcfg;
  unsigned reserved1;
  unsigned reserved2;
} BIOSINFO;

void main(void)
{
  void far *biosdate;
  BIOSINFO far *binfo;
  int i;
  union REGS rg;
  struct SREGS srg;

  biosdate = (void far*)MK_FP(0xf000, 0xfff5);

  printf("\n\nДата изготовления BIOS:    ");

  for(i = 0; i < 8; i++)
    putch(*((char far*)biosdate + i));

  rg.h.ah = 0xc0;
  int86x(0x15, &rg, &rg, &srg);
  binfo = (BIOSINFO far*)MK_FP(srg.es, rg.x.bx);

  printf("\nКод модели:                %02.2X"
         "\nДополнительный код модели: %d"
         "\nВерсия изменений BIOS:     %d"
         "\nКонфигурация оборудования: %02.2X\n",
         binfo->model, binfo->submodel,
         binfo->version, binfo->hardcfg);
}

