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

8.1.3. Системная поддержка и программный интерфейс

8.1.3. Системная поддержка и программный интерфейс

Клавиатура имеет системную поддержку на уровне BIOS — обработку фактов нажатия и отпускания клавиш и обеспечение сервисов ввода символов с клавиатуры, а также управления ее параметрами (задержка и частота автоповтора) и индикаторами. Коды, принятые от клавиатуры ее контроллером, считываются и обрабатываются обработчиком аппаратного прерывания IRQ1 (вектор 09h). Результат обработки помещается в клавиатурный буфер, из которого по программному прерыванию Int 16h этот результат для дальнейшей обработки может быть извлечен значительно позже. Нажатие «системной» комбинации Ctrl+Alt+Del, клавиши PrintScreen(SysRq) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры. Прикладной программе, для которой требуется нестандартное использование клавиатуры (например, в качестве музыкальной), придется самой заниматься обработкой аппаратного прерывания IRQ1, перехватывая вектор Int 09h. Перехват этого вектора требуется и для вызова каких-либо функций резидентных программ по «горячим» клавишам.

При начальном тестировании процедура POST инициализирует клавиатуру (и ее контроллер) и запускает диагностический тест. Во время этого теста клавиатура мигнет всеми индикаторами, после чего может остаться включенным только индикатор NumLock (зависит от установки в BIOS Setup). В случае обнаружения ошибки клавиатуры на консоль выводится сообщение с возможным указанием скан-кода залипшей клавиши и обычно предлагается нажать клавишу F1 для продолжения. То же самое произойдет, если тест не обнаружит клавиатуру (например, из-за вывалившегося разъема или перегоревшего предохранителя), но в этом случае нажатия клавиши F1 будет уже недостаточно. Ошибку диагностики даст и подключение к компьютеру AT клавиатуры от XT, обратное «скрещивание» тоже неработоспособно. Чтобы начальная загрузка не останавливалась по ошибке (отсутствию) клавиатуры (POST будет дожидаться получения кода клавиши F1), тестирование клавиатуры может быть отменено настройкой CMOS Setup.

Для обслуживания клавиатуры используются ячейки ОЗУ из области данных BIOS (BIOS Data Area):

? 0:0417, 0:418 — флаги клавиатуры;

? 0:0419 — аккумулятор кода Alt-набора;

? 0:041A — указатель головы буфера (Buffer Head), 2 байта (модифицируется при помещении символа в буфер);

? 0:041C — указатель хвоста буфера (Buffer Tail), 2 байта (модифицируется при извлечении символа из буфера);

? 0:041E-0:042D — область кольцевого буфера (16 слов).

Оглавление книги


Генерация: 1.190. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз