Системное программное обеспечение персональных ЭВМ


Пример 3



Пример 3

/*== ПРИМЕР 5.3 ==*/ /*========= Получение информации из CMOS-памяти AT =======*/ #include <dos.h>

#define byte unsigned char main() { byte f; /* Байт оборудования */ outportb(0x70,0x14); f=inportb(0x71); printf("Байт оборудования = %02x\n",f); /* Типы дискет */ outportb(0x70,0x10); f=inportb(0x71); floppy(1,f&0x0f); floppy(2,f>>4); /* Типы тв.дисков */ outportb(0x70,0x12); f=inportb(0x71); hard(1,f>>4); hard(2,f&0x0f); } /*==== Печать хаpактеpистик floppy-диска. ====*/ floppy(byte drive,byte type) { printf("ГМД дисковод %d - %d ",drive,type); switch (type) { case 0: printf("нет\n"); break; case 1: printf("DD\n"); break; case 2: printf("HD\n"); break; } } /*==== Печать хаpактеpистик твеpдого диска. ====*/ hard(byte drive,byte type) { byte f, cmos_reg; switch(type) { case 0: break; case 15: cmos_reg=0x19+drive-1; outportb(0x70,cmos_reg); f=inportb(0x71); printf("Твердый диск %d -> %d (расширенный тип)\n", drive,f); break; default: printf("Твердый диск %d -> %d\n",drive,type); break; } }

Заметим, что порт 0x71 двунаправленный, то есть, возможно также и записать информацию в CMOS-память, хотя и трудно представить ситуацию, в которой программе понадобится это сделать. Коррекцию содержимого CMOS-памяти (например, при его случайной порче или при изменении конфигурации) обеспечивает программа SETUP, которая может быть запущена во время POST.




- Начало -  - Назад -  - Вперед -