Аппаратные интерфейсы ПК

         

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


Клавиатура имеет системную поддержку на уровне BIOS — обработку фактов нажатия и отпускания клавиш и обеспечение сервисов ввода символов с клавиату­ры, а также управления ее параметрами (задержка и частота автоповтора) и инди­каторами. Коды, принятые от клавиатуры ее контроллером, считываются и обра-

316_________ Глава 8. Специализированные интерфейсы периферийных устройств

батываются обработчиком аппаратного прерывания 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:041 А— указатель головы буфера (Buffer Head),2байта (модифицируется

при помещении символа в буфер);

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

извлечении символа из буфера);

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



Содержание раздела