Проверка состава оборудования



В программе, предназначенной для тиражирования, очень важной характеристикой является переносимость. Поскольку ПЭВМ разных пользователей могут иметь существенные отличия в конфигурации оборудования, важно, чтобы программа при ее запуске могла "произвести рекогносцировку" - проанализировать состав оборудования и выбрать ту ветвь своего алгоритма, которая обеспечивает функционирование на данном составе, или выдать отказ, если конфигурация не соответствует спецификациям.
К действиям по рекогносцировке относятся:

  • определение типа ПЭВМ;
  • определение конфигурации подключенных внешних устройств;
  • определение объема ОЗУ;
  • определение версии DOS (хотя последняя проверка и не связана с оборудованием, логически ее место здесь).

Тип ПЭВМ

В конце ПЗУ BIOS по адресу FF00:0FFE записан байт типа ПЭВМ. Специфицированы следующие 4 значения этого байта для машин фирмы IBM: 0xFF - IBM PC; 0xFE - XT; 0xFD - PCjr; 0xFC - AT. Для ПЭВМ других производителей все наши эксперименты давали один из этих кодов в соответствии с классом компьютера, однако, стопроцентной гарантии этого дать нельзя.

Кроме того, 8 байт ПЗУ начиная с адреса 0xFF00:0x0FF5, содержат дату выпуска данной версии BIOS в символьном виде, например: 01/01/84. Эта информация может быть полезна только для пользователей продукции IBM, в условиях же калейдоскопа фирм-производителей пользу из этих данных извлечь трудно (мы встречали даже ПЭВМ, в которых дата выпуска BIOS отсутствовала вообще). Приведенная ниже программа извлекает из ПЗУ тип ПЭВМ и дату выпуска BIOS (пример 2.).

/*==           ПРИМЕР 1                    ==*/ /*======== Чтение типа ПЭВМ и даты издания BIOS =========*/ #include <dos.h> main() { unsigned char pc; /* Код типа PC */ char *PT[]= { "AT", "PCjr", "XT", "IBM PC", "???" }; unsigned int t; /* Текущее смещение */ printf("\n Тип ПЭВМ = %x = ",pc=peekb(0xf000,0xfffe)); if ((pc-=0xfc)>4) pc=4; printf("%s\n",PT[pc]); printf(" Дата издания BIOS = "); for (t=0xfff5;t<0xfffd;t++) printf("%c",peekb(0xf000,t)); printf("\n"); }

Состав оборудования

Опеределять состав оборудования следует только после того, как мы определили тип ПЭВМ. Это обусловлено тем, что способы получения информации о составе оборудования различны для XT и для AT. Рассмотрим сначала машины класса XT.

Состав оборудования XT (и PC) определяется положением переключателей на специальных колодках. Состояние этих переключателей может быть прочитано из программы обращением к порту 0x60. Но необходимости в этом нет - эту операцию выполняет BIOS при инициализации системы. На основании этой информации BIOS формирует так называемый список оборудования - 2-байтное слово по адресу 0040:0010. Прочитать это слово можно либо обратившись по указанному адресу, либо обратившись к BIOS через прерывание 0x11. Назначения разрядов списка оборудования следующие:

0 - установлен в 1, если есть НГМД (см.разряды 6, 7);
1 - установлен в 1, если есть сопроцессор;
2,3 - число 16-Кбайтных блоков ОЗУ на системной плате;
4,5 - код видеоадаптера: 11 - MDA, 10 - CGA, 80 колонок, 01 - CGA, 40 колонок, 00 - другой;
6,7 - число НГМД-1 (если в разряде 0 единица);
8 - 0, если установлен канал ПДП;
9,10,11 - число последовательных портов RS-232;
12 - 1, если установлен джойстик;
13 - 1, если установлен последовательный принтер;
14,15 - число параллельных принтеров.

Для XT и AT биты 8 и 13 всегда будут нулевыми.

Ниже приведен пример получения и интерпретации списка оборудования.


Дата добавления: 2019-09-13; просмотров: 222; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!