Assembler - язык неограниченных возможностей


Мультиплексорное прерывание - часть 4


/p>


INT 2Dh AL = 04h: Функция AMIS — получить список перехваченных прерываний

Ввод: АН = идентификатор программы
AL = 04h
Вывод: AL = 04h
DX:BX = адрес списка прерываний, состоящего из 3-байтных структур:
    байт 1: номер прерывания (2Dh должен быть последним)
    байты 2,3: смещение относительно сегмента, возвращенного в DX обработчика прерывания (по этому смещению должен находиться стандартный заголовок ISP)


INT 2Dh AL = 05h: Функция AMIS — получить список перехваченных клавиш

Ввод: АН = идентификатор программы
AL = 05h
Вывод: AL = 0FFh — функция поддерживается

DX:BX = адрес списка клавиш:

    +00h: 1 байт: тип проверки клавиши:

    бит 0: проверка до обработчика INT 9

    бит 1: проверка после обработчика INT 9

    бит 2: проверка до обработчика INT 15h/AH = 4Fh

    бит 3: проверка после обработчика INT 15h/AH = 4Fh

    бит 4: проверка при вызове INT 16h/AH = 0, 1, 2

    бит 5: проверка при вызове INT 16h/AH = 10h, llh, 12h

    бит 6: проверка при вызове INT 16h/AH = 20h, 21h, 22h

    бит 7: 0

+01h: 1 байт: количество перехваченных клавиш

+02h: массив структур по 6 байт:

    байт 1: скан-код клавиши (старший бит — отпускание клавиши, 00/80h — если срабатывание только по состоянию Shift-Ctrl-Alt и т.д.)

    байты 2, 3: необходимое состояние клавиатуры (формат тот же, что и в слове состояния клавиатуры, только бит 7 соответствует нажатию любой клавиши Shift)

    байты 4, 5: запрещенное состояние клавиатуры (формат тот же)

    байт 6: способ обработки клавиши

    бит 0: клавиша перехватывается после обработчиков

    бит 1: клавиша перехватывается до обработчиков

    бит 2: другие обработчики не должны «проглатывать» клавишу

    бит 3: клавиша не сработает, если, пока она была нажата, нажимали или отпускали другие клавиши

    бит 4: клавиша преобразовывается в другую

    бит 5: клавиша иногда «проглатывается», а иногда передается дальше

    биты 6, 7: 0

<


Начало  Назад  Вперед