Аппаратное обеспечение персонального компьютера


           

Вызываем функцию C0h для получения


  printf("\n\nBIOS data:        ");

  for(i=0; i<8; i++)

    putch(*((char far *)lp + i));

  // Вызываем функцию C0h для получения адреса

  // таблицы конфигурации компьютера.

  rg.h.ah = 0xc0;

  int86x(0x15, &rg, &rg, &srg);

  // Если в BIOS нет данной функции,

  // читаем код модели компьютера

  // из ПЗУ по адресу F000h:FFFEh

  if(rg.x.cflag == 1)  

  {

    printf("\nFunction C0h INT 15h not supported\n");

    // Конструируем указатель на код модели   

    _FP_SEG(lp) = 0xf000;   

    _FP_OFF(lp) = 0xfffe;

    // Выводим код модели компьютера на экран

    printf("\nModel:             %02.2X",

      (unsigned char)(*(char far *)lp));

    return(-1);

  }

    

  // Конструируем укзатель на таблицу

  // информации о BIOS

  _FP_SEG(lpbi) = srg.es;

  _FP_OFF(lpbi) = rg.x.bx;

  // Выводим на экран содержимое таблицы

  printf("\nBIOSINFO address: %Fp"

         "\nBIOSINFO Size:    %d"

         "\nModel:            %02.2X"

         "\nSubModel:         %d"

         "\nBIOS Revision:    %d"

         "\nHardvare Cfg:     %02.2X"

         "\nReserved1:        %02.2X"

         "\nReserved2:        %02.2X",

   lpbi, lpbi->nSize, lpbi->bModel, lpbi->bSubModel,

   lpbi->bBIOSRevision, lpbi->bHardwareCfg,

   lpbi->reserved1, lpbi->reserved2);

  

  // Определяем конфигурацию компьютера

  printf("\n\nHardware configuration"

           "\n----------------------");

  // Запоминаем байт конфигурации

  bHdwCfg = lpbi->bHardwareCfg;

  // Расшифровываем байт конфигурации

  if(bHdwCfg & 0x80)

    printf("\nDMA Channel 3");

 

  if(bHdwCfg & 0x40)

    printf("\nSecond IRQ Controller 8259");

  if(bHdwCfg & 0x20)

    printf("\nReal Time Clock");

  if(bHdwCfg & 0x10)

    printf("\nUsed function 4Fh INT 15h");

  if(bHdwCfg & 0x8)

    printf("\nBIOS event wait supported");

  if(bHdwCfg & 0x4)

    printf("\nExtended BIOS data used");

  if(bHdwCfg & 0x2)

    printf("\nMicro Channel Bus");

  if(!(bHdwCfg & 0x2))

    printf("\nISA Bus installed\n");

 

  getch();

  return 0;

}


Содержание  Назад  Вперед