Ноутбуки   
   Софт   
   Компьютеры   
   Компьютерные фирмы   
  Меню сайта

BIOS

SSD-накопители

Акустика для ПК

Видеокарты

Видеокарты - История

Джойстики, клавиатуры и мыши

Дигитайзеры

Жесткие диски

Жесткие диски - история

Звуковые карты

Именитые люди компьютерной индустрии

История компьютеров

Карманные компьютеры

Компьютер десктоп - готовая сборка

Компьютерные фирмы

Компьютеры в теории и практике

Копировальные аппараты

Корпуса, вентиляторы, блоки питания

Маршрутизаторы, коммутаторы, хабы

Материнские платы

Модемы

Модули памяти

Мониторы

Мониторы и видеокарты - история

Новости

Ноутбуки и субноутбуки

Оборудование беспроводной связи, bluetooth, wi-fi

Оптические накопители CD, DVD, Blueray

Оргтехника

Память - история

Плоттеры

Принтеры

Процессоры

Процессоры - история

Сетевые карты

Сетевые фильтры, ИБП

Сети

Сканеры

Сменные жесткие диски

Советские ПК

ТВ-тюнеры

Типы компьютеров

Устройства архивации данных и стримеры

Факс

Флоппи-дисководы

Флэшки и всяко-разно

Шины и чипсеты - история




Главная страница Прайс-лист Интернет-магазин

Дополнительные процедуры системы BIOS

Помимо тех процедур, которые мы уже рассмотрели, система BIOS включает еще ряд интересных и полезных служебных процедур. Программы 11-101 и 11-102, входящие в дисковый пакет, прилагаемый к этой книге, включают интерфейсные подпрограммы на ассемблере и вспомогательные процедуры на Паскале, позволяющие наиболее полно использовать эти служебные процедуры системы BIOS.
Первая из этих процедур - это процедура распечатки содержимого экрана. Она обычно вызывается процедурой обслуживания клавиатуры системы BIOS-ПЗУ, когда та обнаруживает нажатие клавиши "PrtSc". Распечатка экрана выполняется программой обслуживания прерывания номер 5 и это позволяет программно вызывать ту же операцию, запрашивая прерывание номер 5. Процедура обслуживания клавиатуры, обнаружив нажатие клавиши "PrtSc", просто вызывает прерывание 5.
Пользующиеся интерпретатором Бейсика замечали, что при работе с Бейсиком клавиша "PrtSc" не действует. Однако, имеется простой способ вызова программы распечатки экрана из программ на Бейсике. Сам интерпретатор изменяет способ обслуживания клавиатуры и здесь ничего изменить нельзя, но можно просто запросить из программы на Бейсике прерывание 5, описанное выше.
Для программ на Бейсике необходима интерфейсная процедура на машинном языке, позволяющая обратиться к операции распечатки экрана, Это очень простая процедура, состоящая всего из двух команд, занимающих три байта. На языке ассемблера эти команды записываются так:
INT; вызов прерывания номер 5 (распечатка экрана)
; (2-х байтная команда)
RET; возврат в программу на Бейсике (1 байт)
Такую простую подпрограмму можно просто записать в память командами POKE и, поскольку длина ее всего три байта, можно использовать числа обычной точности, Следующая короткая программа показывает, как это делается:
100 REM Простая программа, позволяющая организовать
110 REM вызов операции распечатки экрана из Бейсика
120 REM Трехбайтная программа на машинном языке
125 REM формируется внутри переменной.
130 HOLD.THE.CODE = 0 'выделяется 4-байтная переменная
140 REM обычной точности
150 PRINT.SCREEN = VARPTR(HOLD.THE.CODE) 'установка указателя
160 REM на область памяти
170 POKE PRINT.SCREEN + 0,205 '1-й байт подпрограммы -
175 REM команда прерывания (INT)
180 POKE PRINT.SCREEN + 1,5 '2-й байт - номер прерывания 5
190 POKE PRINT.SCREEN + 2,203 '3-й байт - команда возврата
200 REM
210 REM Теперь подпрограмма в машинных кодах
220 REM храниться в переменной "hold.the.code"
230 REM и ее адрес храниться в "print.screen"
240 REM
250 CALL PRINT.SCREEN
В этой простой программе строки 120-170 записывают подпрограмму в машинных кодах. Эту процедуру достаточно выполнить один раз. Оператор CALL в строке 250 может выполняться тогда, когда необходимо распечатать содержимое экрана. (Интерфейсные подпрограммы для всех процедур системы BIOS и ДОС включены в дисковый пакет, прилагаемый к этой книге, но такой простой интерфейс, как тот, который описан выше, можно оформить непосредственно на Бейсике. Для более сложных процедур обычно требуются законченные интерфейсные подпрограммы на ассемблере, которые могут загружаться из Бейсика процедурой BLOAD).
Следующая из дополнительных процедур системы BIOS - процедура вывода списка оборудования, которая вызывается с помощью прерывания номер 17, шестнадцатеричное значение 11. При первом включении IBM/PC процедуры запуска и самопроверки проверяют, какое оборудование подключено к IBM/PC (в основном, проверка сводится к считыванию позиций переключателей, установленных на системной плате IBM/PC; эти переключатели должны выставляться определенным образом в зависимости от состава подключенного оборудования. Такой метод не слишком точен, поскольку переключатели могут быть выставлены неправильно).
Ваши программы могут выяснить конфигурацию системы, запрашивая прерывание 17. При выполнении процедуры обслуживания этого прерывания не производится ни новая проверка состава оборудования, ни повторное считывание положений переключателей. Происходит всего лишь пересылка двух байтов, содержащих код конфигурации системы, вызывающей программы в регистрах AH и AL.
Ниже приведена таблица кодов оборудования:
Регистр Бит Значение
_______ ___ ________
AH 1-2 число адаптеров устройства печати
(от 0 до 3)
AH 3 не используется
AH 4 игровой адаптер подключен или нет
AH 5-7 число адаптеров связи (от 0 до 7)
AH 8 не используется
AL 1-2 число дисководов без единицы
(если установлен 8-ой бит)
AL 3-4 начальный видеорежим (см.таблицу
ниже)
AL 5-6 объем памяти на системной плате
(см.таблицу ниже)
AL 7 не используется
AL 8 дисководы подключены (если да, см.
1 и 2 биты)
Заметим, что число дисководов, задаваемое первыми двумя битами AL, копируется числом, на единицу меньше действительного числа, так что значение 00 соответствует одному дисководу, 01 - двум и так далее. С помощью такой схемы кодирования указывается наличие до 4-х дисководов. Восьмой бит указывает, имеются ли вообще дисководы в системе. Если этот бит установлен, то используются два бита счетчика. Проще было бы использовать три бита для кодирования числа дисководов, что позволило бы задавать числа от 0 до 7.
Следующая таблица поясняет значения битов для начального видеорежима:
Биты Значение
____ _____________________________________________
00 (не используется)
01 графический режим, 40 столбцов, черно-белое
изображение
10 графический режим, 80 столбцов, черно-белое
изображение
11 монохромный режим
Следующая таблица поясняет установку битов для кода объема памяти на системной плате:
Бит Значение
___ ______________________
00 16К
01 32К
10 48К
11 64К
Ваши программы могут использовать эту информацию для настройки своей работы на конфигурацию системы.
Следующая процедура сообщает, какой объем памяти подключен к компьютеру. Имеется ввиду объем рабочей памяти, включающий объем памяти на системной плате (сообщаемый предыдущей процедурой) и дополнительные платы памяти. Для вызова этой процедуры служит прерывание 18, шестнадцатиричное значение 12, а значение, возвращаемое в регистре AX, равняется числу блоков памяти размером 1К. Такой способ позволяет определить полный объем памяти в один мегабайт.
Значение объема памяти не устанавливается прямой проверкой, а берется из стандартной ячейки памяти. Это позволяет программно изменять объем используемой памяти.
Одно из самых полезных средств для работы с IBM/PC с большим объемом памяти (например, 512К) включает системную программу, которая использует часть памяти как некий очень быстрый накопитель на гибком диске, т.е. так называемый электронный диск. Такой тип модификации системы может быть очень полезен и начинает использоваться все шире. Для того чтобы иметь возможность выделения физической памяти для какого-нибуть специфического использования, IBM/PC хранит рабочее значение объема доступной памяти в ячейке оперативной памяти, содержимое которой можно изменить. И при любом использовании памяти, например, при ее выделении программам, объем памяти всегда сравнивается с этим значением.
Еще одна интересная особенность ПЗУ не связана с системой BIOS, а относится к способу вызова кассетной системы Бейсика, которая также хранится в ПЗУ. Если значение 18, тогда управление компьютером передается интерпретатору Бейсика. Следует иметь в виду, что такая операция уже не позволит снова получить управление Вашей программе и даже операционной системе ДОС.
Еще одна процедура, которая удаляет Вашу программу и ДОС из системы, - это процедура начальной загрузки, вызывающаяся прерыванием 25, шестнадцатиричное значение 19. Эта процедура перезагружает операционную систему с диска, так же как это происходит после нажатия клавиши Ctrl-Alt-Del. Единственное отличие заключается в том, что при нажатии клавиши Ctrl-Alt-Del выполняется диагностика системы, такая же как при включении питания, а при запросе прерывания 25 сразу производится загрузка системы. Это один из самых радикальных способов завершения программы, гарантирующий наличие в памяти новой копии операционной системы.
Следующая процедура - это процедура обслуживания таймера. Она используется для считывания и изменения внутреннего счетчика таймера. Хотя эту процедуру и называют процедурой текущих даты/времени, на самом деле это всего лишь счетчик прерываний таймера. Счетчик увеличивается на единицу при каждом прерывании, которое происходит примерно 18-21 раз в секунду. Вычисление и обновление времени дня и даты - это операция ДОС, которая использует результаты счетчика.
Имеется две процедуры обслуживания таймера, вызывающиеся по прерыванию 26, шестнадцатиричное значение 1А, одна, с кодом 0, для считывания показаний таймера, а вторая, с кодом 1, для их установки. Значение счетчика таймера хранится в виде пары двухбайтовых чисел, использующихся, фактически, как одно четырехбайтовое. Эта процедура вносит лишь одно добавление в примитивную процедуру подсчета часов. Когда это происходит, счетчик сбрасывается и факт запоминается. При очередном запросе на считывание значения счетчика передается сообщение о том, что таймер сбрасывался.
Это позволяет ДОС следить за временем дня и сменой дат не вычисляя их постоянно. Когда ДОС необходимо установить время дня, используется описанная процедура для получения значения счетчика и по нему вычисляется время; если будет получено сообщение о сбросе таймера, то ДОС изменит также и дату. Таким образом, ДОС выполняет все эти вычисления только тогда,когда требуется указать время, что упрощает функции процедуры обслуживания прерываний от таймера, которая должна выполняться 18 раз в секунду. Если к ДОС будет хотя бы один запрос времени за день, то проверить это, оставив Ваш компьютер включенным на 24 часа. К концу Вашей проверки время дня будет по прежнему правильным, а дата ошибочной).
Если Вы будете сами считывать или устанавливать показания таймера с помощью этих процедур системы BIOS, это может помешать правильному отсчету времени и даты в ДОС. ДОС устанавливает значение счетчика таймера таким образом, как будто он был запущен в полночь, после чего ДОС полностью полагается на значение признака сброса таймера. Любая установка или считывание показаний таймера Вашими программами естественно окажет влияние на отсчет времени в ДОС. Если Ваши программы будут только считывать показания таймера, это может привести к перехвату сообщения о сбросе таймера, что нарушит порядок отсчета даты в ДОС.
Теперь мы рассмотрели все процедуры системы BIOS-ПЗУ.
Вы могли обратить внимание на два упущения в составе этих процедур. В то время как все устройства, подключаемые стандартным образом, имеют поддерживающие их служебные процедуры,совершенно не поддерживается игровой адаптер. Это происходит потому, что такая поддержка просто не нужна. Я могу только предполагать почему это произошло; одна из возможных причин может заключаться в том, что форма "ИБМ" не сочла этот адаптер достаточно важной составной частью системы, которой требуется какая-либо поддержка на уровне системы BIOS. Возможно, также что игровой адаптер был доставлен к системе на достаточно поздней стадии ее разработки и его поддержка не могла быть включена в систему BIOS, размещенную в ПЗУ.
Еще одна недостающая часть системы BIOS - это набор процедур для обслуживания встроенного динамика. Почему они не были включены в систему - это для меня загадка. В следующем разделе мы рассмотрим работу динамика и то, как извлекать из него звуки под управлением программы.


Анализ содержимого ПЗУ - метод деассемблирования

Анализ содержимого ПЗУ - реконструкция интерпретатора

Анализ содержимого ПЗУ средствами программы DEBUG

Две версии BIOSа

Дополнительные процедуры системы BIOS

Механизм выборки информации из ПЗУ

Описание специальных прерываний

Организация ПЗУ и его использование

Процедура обслуживания клавиатуры в системе BIOS

Система BIOS в ПЗУ

Служебные процедуры обслуживания дискет системы BIOS в ПЗУ

Средства управления видеотерминалом уровня BIOS-ПЗУ




Немного рекламы:


















































































Rambler's Top100