• биты 7:6 — число обнаруженных НГМД: 00 — 1, …, 11 — 4;
• биты 5:4 — активный видеорежим: 00 — резерв, 10 — 80-колоночный цветной, 01 — 40-колоночный цветной, 11 — монохромный;
• биты 3:2 — размер ОЗУ на системной плате (теперь обычно 00);
• бит 1 — присутствие математического сопроцессора;
• бит 0 — присутствие дисководов;
♦ Int 12h
♦ Int 13h
♦ Int 14h
♦ Int 15h
АН
/АХ
):• 00-03h — управление и обмен данными с кассетным магнитофоном (были когда-то и такие «стриммеры»!) на старых PC;
• 4fh — перехват клавиатуры;
• 53xxh — сервисы управления потреблением АРМ (Advanced Power Management);
• 8300h — запуск таймера, устанавливающего флаг в заданной ячейке;
• 8301h — сброс того же таймера;
• 84h — джойстик (см. п. 8.6);
• 86h — программируемая задержка;
• 87h — перемещение блока расширенной памяти;
• 88h — получение размера расширенной памяти;
• 89h — переключение в режим V86;
• C0h — получение системной конфигурации, при успешном выполнении (CF
AH
=0) ES:BX
указывает на таблицу данных конфигурации;• 80-82h, 85h, 90h, 91h — функции многозадачных ОС (BIOS устанавливает заглушки);
♦ Int 16h
♦ Int 17h
♦ Int 18h
♦ Int 19h
♦ Int 1Ah
♦ Int 1Bh
Ctrl+Break
;♦ Int 1Ch
Int 08h
каждые 55 мс; BIOS устанавливает простую заглушку (IRET
), но программы могут перехватывать это прерывание; на время отработки этой процедуры ♦ Int 33h
♦ Int 4Ah
Int 1Ah
(6); прерывание вызывается асинхронно, так что при возврате из процедуры все регистры и флаги должны быть в том же состоянии, что и при входе; BIOS ставит заглушку (IRET
);♦ Int 67h
♦ Int 1Dh
♦ Int 1Eh
♦ Int 1Fh
♦ Int 41h
♦ Int 46h
♦ Int 43h
12.8.1. Int 09h, Int 16h — поддержка клавиатуры
Поддержка клавиатуры заключается в обработке прерываний от устройства ввода и предоставлении сервисов ввода прикладным программам.
Int 9h
. Каждый принятый скан-код (или цепочка) обрабатывается с учетом состояния Ctrl
, Shift
, Alt
и некоторых комбинаций в буфере не отмечается, но приводит к модификации бит ячеек флагов клавиатуры. Нажатие «системной» комбинации Ctrl+Alt+Del
, клавиши PrintScreen
(SysRq
) и некоторых других к записи в клавиатурный буфер не приводит, а вызывает специальные процедуры.Для обслуживания клавиатуры используются ячейки ОЗУ из области данных 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 слов).
Обработчик аппаратного прерывания до обработки принятого скан-кода вызывает прерывание BIOS Int 15h
AH
=4Fh, а в AL
находится принятый скан-код. Стандартный обработчик Int 15h
(4Fh) просто выполняет возврат с CF
=0, но его можно заменить специальным обработчиком, который будет при необходимости подменять принятые скан-коды на какие-либо иные (оставляя их в AL
), что должно отмечаться установкой CF
=1. В старых версиях BIOS такой возможности перехвата не было, ее наличие можно определить вызовом Int 15h
(C0h).