Чтение онлайн

на главную - закладки

Жанры

Аппаратные интерфейсы ПК. Энциклопедия

Гук Михаил Юрьевич

Шрифт:

ASCII-коды буфера, соответствующие нажатию клавиш, приведены в [1, 7]. При русификации (или другой локализации) клавиатуры отслеживание переключения регистров (языков) ложится на обработчик аппаратного прерывания клавиатуры.

12.8.2. Int 10h — видеосервис

Int 10h — видеосервис — предназначен для работы с графическим адаптером. Его первичной задачей является управление видеорежимом (BIOS Video Mode), определяющим формат экрана. BIOS адаптера должна выполнять программирование всех стандартных и специфических управляющих регистров для установки (смены) требуемого видеорежима и выбранных параметров развертки — кроме нее о способах этих переключений остальное ПО может и не знать.

В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пиксела с указанными координатами. Однако видеосервисом

Int 10h
программисты пользуются далеко не всегда, поскольку работает он довольно медленно. Подробно рассматривать функции видеосервиса не будем (этому посвящены отдельные книги), отметим особо лишь функцию телетайпного вывода
Int 10h
(0Eh). При вызове
AH
=0Eh, в
AL
— код выводимого символа, в
BL
— цвет (только для графического режима). Символ выводится в текущую позицию курсора, и курсор сдвигается на следующую, переходя на новую строку после конца предыдущей и прокручивая экран при его заполнении. Специальные символы вызывают возврат на начало строки (
CR
, код 0Dh), перевод строки (
LF
, 0Ah) и короткий гудок (
BEL
, 07h). Этой функцией часто пользуются для вывода сообщений программами, работающими на нижнем уровне (например, модули инициализации ПЗУ расширений BIOS, загрузчики и другие, не имеющие еще доступа к сервисам операционных систем). Программа вывода получается простейшей, работает на всех адаптерах и во всех режимах, но довольно медленно.

12.8.3. Int 13h — поддержка дисков

Функции дискового сервиса вызываются программным прерыванием

Int 13h
.

Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные диски (fixed disk). Набор функций (табл. 7.8) для этих классов устройств несколько различается как по составу, так и по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся номера 0-7Fh (реально только 0–3), а для фиксированных дисков — 80h-FFh.

Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS, перехватывают вектор

Int 13h
, беря на себя обслуживание своих устройств. Когда в IBM PC/XT появились жесткие диски со своим контроллером, модуль BIOS этого контроллера, инициализирующийся во время теста POST, вставал на место
Int 13h
, а указатель на исходный обработчик дискового сервиса (драйвер НГМД из системной BIOS) сохранялся на месте
Int 40h
. Хотя поддержка жестких дисков давно уже включена в системную BIOS, ради совместимости возможность использования прерывания
Int 40h
для вызова драйвера гибких дисков сохраняется. Интерфейс этого вызова совпадает с
Int 13h
, но номер устройства (в регистре
DL
) не должен превышать 7Fh.

Кроме функций дискового сервиса (

Int 13h
) c дисковыми устройствами связаны еще и векторы, обслуживающие аппаратные прерывания от контроллера НГМД —
Int 0Eh
(линия
IRQ 6
) и от контроллера жестких дисков —
Int 76h
(линия
IRQ 14
). При наличии двухканального порта ATA второй канал обычно задействует линию
IRQ 15
(вектор 77h). В XT контроллер жестких дисков занимал линию
IRQ 5
(вектор 0Dh). Дополнительные контроллеры дисков могут использовать и другие прерывания. Аппаратные прерывания вырабатываются контроллерами по завершении (нормальному и аварийному) внутренних операций. На эти прерывания BIOS не реагирует, а при инициализации их векторы направляются на программную заглушку (инструкцию
IRET
).

Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное происхождение. Во время выполнения функции значительное процессорное время может затрачиваться на ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от контроллера, сообщающий операционной системе о выполнении операции и результате.

Традиционный сервис BIOS

Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма специфично. Сервис вызывается программным прерыванием

Int 13h
, при вызове принимаются следующие соглашения:

♦ номер функции задается в регистре

АН
и не должен превышать 3Fh;

♦ логический номер диска задается в регистре

DL
(бит 7 = 0 — признак обращения к НГМД);

♦ номер цилиндра (0-1023) задается в регистре

СН
(младшие 8 бит) и
CL[7:6]
(старшие 2 бита);

♦ номер головки (0-255) задается в регистре

DH
;

♦ номер начального сектора (1-63) задается в регистре

CL[5:0]
;

♦ количество секторов, участвующих в операции, 8 бит — в регистре

AL
(0-255);

♦ указатель на начало буфера оперативной памяти для считываемых и записываемых данных (address of buffer) — в регистрах

ЕS:BX
;

♦ результат выполнения операции определяется по флагу переноса:

СF
= 0 — успешное выполнение операции,
CF
= 1 — обнаружены ошибки (код состояния возвращается в регистре
АН
, код завершения последней операции с дискетами хранится по адресу 40:41h, с жесткими дисками — 40:74h);

♦ таблица параметров диска для дискет (DPT) задана указателем в памяти по адресу 0:78h, для жестких дисков (HDPT) — 0:104h или 0:118h.

Список функций традиционного сервиса приведен в табл. 12.7, подробнее они описаны в [4, 9]. Устройства могут не поддерживать некоторые функции, о чем драйверы должны «честно сообщить» кодом возврата 01h.

Таблица 12.7.

Функции традиционного дискового сервиса

Номер функции АН Назначение параметров Использование регистров указателей и таблиц
DL DH, CL, CH AL ES: BX DPT/HDPT
00h Reset Disk System — сброс дисковой системы (всех контроллеров и устройств), позиционирование на нулевой цилиндр
01h Read Status of Last Operation — чтение состояния последней операции +
02h Read Sectors into Memory — чтение секторов с диска в память + + + + +
03h Write Sectors from Memory — запись секторов из памяти на диск   + + + +
04h Verify Sectors — верификация секторов (холостое чтение без записи в память и проверка CRC/ECC) + + + +
05h Format Desired Track — форматирование трека + + + + +
08h Get Drive Parameters — получение параметров диска
09h¹ Initialize Drive Parameters — инициализация таблиц параметров диска + +
0Ah¹ Read Long — «длинное» чтение (сектор и поле ЕСС) + + + + +
0Bh¹ Write Long — «длинная» запись (сектор и поле ЕСС) + + + + +
0Ch¹ Seek — поиск цилиндра + +
0Dh¹ Alternative Disk Reset — альтернативный сброс (не затрагивая контроллера дискет) +
10h¹ Test Drive Ready — проверка готовности +
11h¹ Recalibrate — рекалибровка (позиционирование на нулевой цилиндр) +
14h¹ Controller Internal Diagnostics — диагностика контроллера жестких дисков
15h Read DASD Туре — получение типа диска: АН=0 — нет диска; АН=1 — дискета, без датчика смены диска; АН=2 — дискета, с датчиком смены диска; АН=3 — жесткий диск; иные значения — код ошибки. CX: DX содержат число 512-байтных секторов на диске +
16h² Diskette Change Line Status — проверка статуса смены дискеты: CF=0: АН=0 — смены носителя не было; CF=1: AH=1 — недопустимый номер диска; АН=6 — была смена диска или определение смены не поддерживается; AH=80h — дисковод не готов или не установлен; иные значения — код ошибки +
17h² Set Diskette Type for Format — установка типа дискеты для форматирования (перед форматированием) +      
18h² Set Media Type for Format — установка типа носителя (для форматирования) +
20h² Get Media Type — получение типа установленного носителя +
24h¹ Set Multiple Mode — установка параметров режима многосекторного обращения (в AL — число секторов за операцию) + +
25h¹ Identify Drive ATA — идентификация накопителя (только для ATA-дисков) + +
Поделиться:
Популярные книги

Начальник милиции. Книга 4

Дамиров Рафаэль
4. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 4

#Бояръ-Аниме. Газлайтер. Том 11

Володин Григорий Григорьевич
11. История Телепата
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 11

Тисса горит

Иллеш Бела
Проза:
историческая проза
советская классическая проза
5.00
рейтинг книги
Тисса горит

Система Возвышения. (цикл 1-8) - Николай Раздоров

Раздоров Николай
Система Возвышения
Фантастика:
боевая фантастика
4.65
рейтинг книги
Система Возвышения. (цикл 1-8) - Николай Раздоров

Пышка и Герцог

Ордина Ирина
Фантастика:
юмористическое фэнтези
историческое фэнтези
фэнтези
5.00
рейтинг книги
Пышка и Герцог

Идеальный мир для Лекаря 6

Сапфир Олег
6. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 6

Случайная свадьба (+ Бонус)

Тоцка Тала
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Случайная свадьба (+ Бонус)

Ученик

Губарев Алексей
1. Тай Фун
Фантастика:
фэнтези
5.00
рейтинг книги
Ученик

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Бастард Императора. Том 8

Орлов Андрей Юрьевич
8. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 8

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Страж Тысячемирья

Земляной Андрей Борисович
5. Страж
Фантастика:
боевая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Страж Тысячемирья

Полное собрание сочинений. Том 24

Л.Н. Толстой
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Полное собрание сочинений. Том 24

Идеальный мир для Лекаря 4

Сапфир Олег
4. Лекарь
Фантастика:
фэнтези
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 4