В развитие идеи, изложенной выше, рассмотрим способ, при котором КЧЗП в качестве параметра использует всю конфигурацию системы. Конечно надо учитывать, что этот способ будет давать ошибки и отказывать в выполнении законной копии программы, если какие либо составляющие вычислительной системы будут изменены (например, отключен принтер), либо наоборот законная и незаконная копии программы будут работать на системах с одинаковой конфигурацией.
Рассмотрим способы определения параметров системы, которые используются затем в КЧЗП.
Для 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
Несложно догадаться, что необходимость присвоения верных значений параметров для прерываний, портов ввода/вывода и базовых адресов может сделать…