Конфигурация системы и типы составляющих ее устройств
В развитие идеи, изложенной выше, рассмотрим способ, при котором КЧЗП в качестве параметра использует всю конфигурацию системы. Конечно надо учитывать, что этот способ будет давать ошибки и отказывать в выполнении законной копии программы, если какие либо составляющие вычислительной системы будут изменены (например, отключен принтер), либо наоборот законная и незаконная копии программы будут работать на системах с одинаковой конфигурацией.
Рассмотрим способы определения параметров системы, которые используются затем в КЧЗП.
Для IBM AT параметры системы хранятся в так называемой CMOS памяти. Она имеет 64 однобайтовых регистра, пронумерованных от 00 до 3Fh. Назначения некоторых регистров представлены в табл. 1.
| Таблица 1Назначение некоторых регистров CMOS памяти |
| РЕГИСТР | НАЗНАЧЕНИЕ |
| 00h | Секунды |
| 01h | Second Alarm |
| 02h | Минуты |
| 03h | Minute Alarm |
| 04h | Часы |
| 05h | Hour Alarm |
| 06h | День недели |
| 07h | День месяца |
| 08h | Месяц |
| 09h | Год |
| 10h | Типы НГМД A: и B: (0000 — не установлен; 0001 — 360Кб; 0010 — 1.2Мб; 0011 — 1.44Мб) |
| 12h | Типы НЖМД C: и D: — для AT; D: — для PS/2 |
| 14h | Байт установленной периферии |
| 15h-16h | Размер памяти на основной системной плате (0100h — 256Кб; 0200h — 512Кб; 0280h — 640Кб) |
| 17h-18h | Размер памяти канала ввода/вывода |
| 30h-31h | Размер дополнительной памяти сверх 1Мбайта |
Регистр 10h содержит информацию о НГМД: его биты 7-4 описывают накопитель A, а биты 3-0 — накопитель B. Аналогично сведения о НЖМД помещаются в регистр 12h.
Информация о периферии хранится в байте 14h CMOS памяти. Для ее получения надо сначала записать номер регистра (в данном случае 14h) в порт с адресом 70h, а затем прочитать содержимое регистра через порт 71h. (Для записи какого-то значения в регистр CMOS памяти надо занести адрес регистра в порт с адресом 70h, а значение — в порт 71h.). Значения битов регистра 14h представлены в табл. 2.
| Таблица 2Назначение битов 14h-го регистра CMOS памяти |
| БИТ | СОДЕРЖИМОЕ | ЗНАЧЕНИЕ |
| 7-6 | 00/01 | Один/два НГМД |
| 5-4 | 11/01/10 | Видеорежим (монохромный/цветной 40*25/цветной 80*25) |
| 3-2 | Не используется | |
| Имеется математический сопроцессор | ||
| 0/1 | Нет/имеется НГМД |
Компьютер может быть снабжен различными типами дисководов для гибких дисков и винчестеров. Рассмотрим с помощью каких средств можно получить информацию об их характеристиках кроме доступа к CMOS памяти.
Прерывание 21h DOS компьютера AT имеет функции 32h и 36h, связанные с определением характеристик установленных накопителей. Функция 36h сообщает текущие сведения о доступном пространстве на диске, номер которого загружается в регистр DL. Она возвращает:
- число секторов на один кластер в регистре AX;
- число незанятых кластеров — в BX;
- число байтов в одном секторе — в CX;
- число кластеров на диске — в DX.
Теперь легко узнать, каков объем диска, номер которого помещался в регистр DL. Для этого достаточно вычислить произведение значений регистров AX,CX,DX.
Функция 32h, позволяет получить таблицу с параметрами накопителя, номер которого загружен в регистр DL. Ее адрес будет содержаться в регистрах DX:BX. Подробное описание байтов этой таблицы можно найти в любом справочнике по прерываниям.
Состав установленного оборудования проверяется при загрузке, и результат проверки помещается в регистр статуса. Этот регистр занимает два байта, начиная с адреса 0040:0010, и в табл. 3 представлены значения его битов.
Для доступа к этому регистру кроме прямого обращения по адресу можно воспользоваться прерыванием 11h BIOS, которое возвращает два байта его значений в регистре AX.
В языке Turbo C имеется специальная функция BIOSEQUIP из библиотеки стандартных функций , которая возвращает целое число, описывающее оборудование, входящее в систему. Возвращаемое значение интерпретируется набором битовых полей, как представлено в табл. 4.
| Таблица 3Регистр состава установленного оборудования |
| БИТ | СОДЕРЖИМОЕ | ЗНАЧЕНИЕ |
| 0/1 | Нет/есть НГМД | |
| 0/1 | Нет/есть математический сопроцессор 80×87 | |
| 2-3 | Оперативная память 64 Кбайта (в AT не используется и всегда равна 11) | |
| 4-5 | 11/01/10 | Начальный видеорежим (монохромный/цветной 40*25/ цветной 80*25) |
| 6-7 | 00/01/10/11 | Число НГМД, если бит 0 =1 (соответственно 1,2,3,4) |
| XT/AT не используется (наличие микросхемы DMA) | ||
| 9-11 | Число адаптеров коммуникации RS232 | |
| Есть игровой адаптер (в AT не используется) | ||
| XT/AT не используется | ||
| 14-15 | Число присоединенных принтеров |
Еще одно прерывание BIOS — 15h через функцию C0h позволяет получить адрес в ПЗУ, определяемый регистрами ЕS:BX, по которому находится табл. 4.
| Таблица 4 |
| БАЙТЫ | ЗНАЧЕНИЕ |
| 0-1 | Число байтов в таблице |
| Код модели компьютера (см. выше) | |
| Различие между AT и XT/286 (подмодель) | |
| Номер ревизии BIOS | |
| 80h — 3-й канал DMA, используется BIOS 40h — второй контроллер прерываний i8259 установлен 20h — таймер реального времени установлен 10h — int15h/AH=4Fh вызывается перед int 9h 8h — допустимо ожидание внешнего события 4h — расширение BIOS размещено в 640 Кбайтах 2h — шиной является Micro Channel вместо шины ISA 1h — резерв Замечание: 1/10/86 XT BIOS возвращает некорректное значение 5-го байта |
Для определения типа дисплея надо проверить бит номер 1 байта, находящегося по адресу 0040:0087. Когда этот бит равен 1 — подсоединяется монохромный дисплей, а когда он равен 0 — цветной.
Статьи к прочтению:
3.3.11 — Win7 — Конфигурация системы MsConfig и Диспетчер Задач
Похожие статьи:
-
Управляющее устройство, системы команд и типы команд.
Процессор. Центральным блоком, занимающимся обработкой информации в компьютере, является процессор. Он выполняет операции над данными — операндами….
-
Автоматическая конфигурация устройства plug- and –play
Несложно догадаться, что необходимость присвоения верных значений параметров для прерываний, портов ввода/вывода и базовых адресов может сделать…
