Аппаратные интерфейсы ПК. Энциклопедия
Шрифт:
ASCII-коды буфера, соответствующие нажатию клавиш, приведены в [1, 7]. При русификации (или другой локализации) клавиатуры отслеживание переключения регистров (языков) ложится на обработчик аппаратного прерывания клавиатуры.
12.8.2. Int 10h — видеосервис
Int 10h — видеосервис — предназначен для работы с графическим адаптером. Его первичной задачей является управление видеорежимом (BIOS Video Mode), определяющим формат экрана. BIOS адаптера должна выполнять программирование всех стандартных и специфических управляющих регистров для установки (смены) требуемого видеорежима и выбранных параметров развертки — кроме нее о способах этих переключений остальное ПО может и не знать.
В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пиксела с указанными координатами. Однако видеосервисом
12.8.3. Int 13h — поддержка дисков
Функции дискового сервиса вызываются программным прерыванием
Традиционно дисковый сервис подразделяет физические диски на дискеты (diskette) и фиксированные диски (fixed disk). Набор функций (табл. 7.8) для этих классов устройств несколько различается как по составу, так и по реализации. Классы различаются по диапазонам номеров физических устройств: для дискет отводятся номера 0-7Fh (реально только 0–3), а для фиксированных дисков — 80h-FFh.
Контроллеры дисковых интерфейсов, имеющие в своем составе дополнительные модули BIOS, перехватывают вектор
Кроме функций дискового сервиса (
Стандартные драйверы дисковых функций BIOS (включая и расширенный сервис) имеют однозадачное происхождение. Во время выполнения функции значительное процессорное время может затрачиваться на ожидание завершения операции устройством. Драйверы многозадачного режима построены иначе: у них есть вызывающая часть, инициализирующая начало операции, и обработчик аппаратного прерывания от контроллера, сообщающий операционной системе о выполнении операции и результате.
Традиционный дисковый сервис работает в 16-разрядном режиме процессора, все параметры вызова передаются через регистры процессора. Адрес сектора задается в системе CHS и размещен весьма специфично. Сервис вызывается программным прерыванием
♦ номер функции задается в регистре
♦ логический номер диска задается в регистре
♦ номер цилиндра (0-1023) задается в регистре
♦ номер головки (0-255) задается в регистре
♦ номер начального сектора (1-63) задается в регистре
♦ количество секторов, участвующих в операции, 8 бит — в регистре
♦ указатель на начало буфера оперативной памяти для считываемых и записываемых данных (address of buffer) — в регистрах
♦ результат выполнения операции определяется по флагу переноса:
♦ таблица параметров диска для дискет (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-дисков) | + | – | – | + | – |