2.2.1. Примеры функций bios
Получение информации об оборудовании
INT 11H - Получить список оборудования компьютера. Прежде чем пытаться работать с каким-либо устройством ввода/вывода, следует убедиться в том, что оно есть в составе оборудования компьютера. Программа, вызывая это прерывание, получает в регистре AX 16-битовое слово, каждый бит которого несет информацию о соответствующем устройстве. Смысл отдельных битов при этом следующий:
0: 0 = нет дисковых устройств;
1: 1= присутствует сопроцессор;
2-3: объем ОЗУ:
00=16K; 11=64K (или больше);
4-5: начальный/активный режим видеоадаптера:
01=40-кол цветн; 10=80-кол цветн;
11=монохром;
6-7: +1 = число приводов дискет:
00=1; 01=2; 10=3; 11=4;
8: DMA присутствует;
9-11: RS232 порты:
000=нет; 001=1; 010=2; ... 111=7;
12: 1=присутствует дополнительный адаптер в/в;
13: 1=послед. принтер;
14-15: установлено принтеров:
00=нет; 01=1; 10=2; 11=3.
Анализируя слово конфигурации, программа может узнать, входят ли в состав оборудования компьютера дисководы для дискет и если входят, то сколько дисководов имеется в наличии, присутствует ли арифметический сопроцессор, какой начальный режим дисплейного адаптера используется, сколько в системе принтеров, адаптеров последовательного интерфейса RS-232 и т.д.
INT 12H - Получить размер основной памяти. Для работы некоторых программ требуется достаточное количество оперативной памяти. Это прерывание возвращает в регистре AX количество имеющихся блоков памяти размером в 1 Кбайт.
INT 10H - выполняет все многочисленные операции по обслуживанию дисплейного адаптера (видеоадаптера).
При вызове этого прерывания, как и при вызове многих других прерываний, регистр AH содержит номер функции, которую требуется выполнить. Остальные регистры при вызове прерывания содержат операнды. Программирование дисплейного адаптера - сложная задача. Функции, выполняемые прерыванием INT 10H, обширны, и по этой причине приведем только их краткий обзор. Сначала перечислим эти функции:
Ah Сервис
___ _________________________________
00H уст. видео режим
01H уст. Размер и форму курсора
02H уст. позицию курсора
03H читать позицию курсора
04H читать световое перо
05H выбрать активную страницу дисплея
06H листать окно вверх (или очистить)
07H листать окно вниз
08H читать символ/атрибут
09H писать символ/атрибут
0aH писать символ
0bH выбрать палитру/цвет бордюра
0cH писать графическую точку
0dH читать графическую точку
0eH писать символ в режиме TTY
0fH читать видео режим
10H (EGA) уст. палитру
11H (EGA) генератор символов
12H (EGA) специальные функции
13H писать строку (только PC AT + EGA)
Обслуживание клавиатуры
INT 16H - выполняет несколько функций, связанных с обслуживанием клавиатуры. Мы не будем перечислять эти функции, а только отметим, что с их помощью можно выполнить ввод кода нажатой клавиши как с ожиданием нажатия, так и без ожидания - в этом случае возвращается код последней нажатой клавиши. Кроме того, можно выполнить еще некоторые специальные функции.
Обслуживание дисковой подсистемы
INT 13H - предназначено для обслуживания гибких и жестких дисков. Многочисленные функции этого прерывания выполняют все операции по вводу/выводу на диски. Не вдаваясь подробно в детали, перечислим наиболее важные из них:
00H - Сброс дисковой системы. Эта функция выполняет установку в исходное состояние всей дисковой системы или выбранного дискового устройства. Используется обычно перед началом работы с устройством.
01H - Получить состояние дисковой системы. Эта функция позволяет проверить результат предыдущей операции. Если операция завершилась аварийно, при помощи этой функции можно определить код ошибки.
02H/03H - Чтение/запись секторов. Выполняется чтение секторов в оперативную память компьютера или запись информации из памяти в секторы диска. Сектор задается для выбранных устройств, дорожки и головки. Программа должна также задать количество читаемых/записываемых секторов.
04H - Проверка секторов. Функция проверяет секторы на правильность циклической контрольной суммы CRC; чтения содержимого секторов в память при этом не происходит.
Среди других функций прерывания INT 13H - форматирование дорожки, тестирование и предустановка диска, запуск диагностики контроллера дисковода и многое другое.
Другие периферийные устройства
Кроме перечисленных функций, BIOS подобным образом обеспечивает низкоуровневую поддержку и других периферийных устройств: принтера (INT 17H), последовательного порта связи (INT 14H), системных часов (INT 1AH), а также некоторые специальные функции и расширенный сервис для машин класса AT.
