КОМПЬЮТЕРНОЕ ЖЕЛЕЗО
HARDWARE FOR PC

Архитектурные компоненты IBM PC-совместимого компьютера


Для клавиатуры USB или иного устройства ввода, заменяющего клавиатуру в каче¬стве консоли, прерывание Int 9h должно вызываться программно при обработке каждого клавиатурного события. Обработчик этого прерывания должен выпол¬нять те же действия: скан-код пропускать через Int 15h(4Fh) и помещать в кла¬виатурный буфер, а также модифицировать флаги клавиатуры.
Интерфейс прикладного уровня для клавиатуры представляет BIOS Int 16h. Его основное назначение — извлечение слов из клавиатурного буфера. Функция зада¬ется в регистре АН при вызове, результат помещается в регистр АХ.

АН = OOh — чтение (с ожиданием готовности) и выборка слова из буфера
(меняется указатель хвоста). Индикаторы клавиатуры обновляются в соответ¬
ствии с состоянием флагов. Если буфер пуст, то на AT выполняется прерыва¬ние Int 15h (подфункция 90), что может использоваться ОС, например, для переключения задач. Чтобы программа не «зависала» на ожидании символа, предварительно стоит проверить готовность функцией Olh. Символы расши¬ренной клавиатуры фильтруются — преобразуются в их аналоги 83-клавишной клавиатуры.

АН = Olh — проверка готовности, чтение без выборки (указатели не изменяют¬ся). Признак наличия символа в буфере — установленный флаг ZF.

АН = 02h — чтение состояния флагов (в AL — байт 0:417h, см. выше).

АН = 03h — установка задержки и частоты автоповтора: BL — код задержки (00=250, 01=500,02=750,03=1000 мс), ВН - код частоты (см. п. 9.2.1).

АН = 05h — запись слова из регистра СХ в буфер (меняется указатель головы). Признак успешной записи — AL=Q, если в буфере нет места, то AL=1.

АН = 10h и AH=*llh — функции, аналогичные ООН и Olh, но предназначены специально для 101/102-клавишных клавиатур — в них не выполняется филь¬трация символов расширенной клавиатуры. Для ряда клавиш, отсутству¬ющих в клавиатуре АТ-84, эти функции дадут результаты, отличающиеся от вызовов OOh и Olh.

12.8. Сервисы и прерывания BIOS
485
♦ AH=12h .

Hosted by uCoz