Программа BIOSINFO получает и отображает на консоли дату изготовления версии BIOS, а также содержимое таблицы конфигурации, адрес которой определяется с помощью функции C0h прерывания BIOS INT15h:
BIOSINFO (C)A. Frolov, 1997
BIOS data: 04/18/97
BIOSINFO address: 0212:0190
BIOSINFO Size: 8
Model: FC
SubModel: 1
BIOS Revision: 0
Hardvare Cfg: 70
Reserved1: 00
Reserved2: 00
Hardware configuration
----------------------
Second IRQ Controller 8259
Real Time Clock
Used function 4Fh INT 15h
ISA Bus installed
Исходный текст программы представлен в листинге 1.2.
Листинг 1.2. Файл biosinfo\biosinfo.c
// =====================================================
// Получение информации о BIOS
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW: http://www.glasnet.ru/~frolov
// или// http://www.dials.ccas.ru/frolov
// =====================================================
#include <stdio.h>
#include <conio.h>
#include <dos.h>
// Структура области данных с информацией о BIOS
typedef struct _BIOSINFO
{
int nSize; // размер структуры
unsigned char bModel; // код модели компьютера
unsigned char bSubModel; // дополнительный код модели
unsigned char bBIOSRevision; // номер изменений
// версии BIOS
unsigned char bHardwareCfg; // конфигурация аппаратуры
int reserved1; // зарезервировано
int reserved2; // зарезервировано
} BIOSINFO;
int main(void)
{
union REGS rg;
struct SREGS srg;
int i;
BIOSINFO far *lpbi;
void far* lp;
unsigned char bHdwCfg;
printf("\nBIOSINFO (C)A. Frolov, 1997");
// Конструируем указатель на дату изготовления
// BIOS. Эта дата записана в ПЗУ по адресу F000h:FFF5h
_FP_SEG(lp) = 0xf000;
_FP_OFF(lp) = 0xfff5;
// Выводим дату на экран