в IBM PC любые символы,
оператору вводить в IBM PC любые символы, даже если их нет на
клавиатуре. Например, нажмите клавишу ALT, затем напечатайте с
помощью цифровой клавиатуры 1, 1, 1 и отпустите клавишу ALT.
Появится символ "o". Этот символ имеет код со значением 111 в коде
ASCII.
Переменная ALT_INPUT хранит текущее значение кода, который
вводится в альтернативном регистре. Когда на цифровой клавиатуре
печатается цифра, и состояние клавиатуры показывает, что включен
альтернативный регистр, программа BIOS умножает текущее значение
переменной ALT_INPUT на 10, и прибавляет к нему новое число. Когда
клавиша альтернативного регистра отпускается, в переменной
ALT_INPUT содержится введенный символ. Обычно переменная ALT_INPUT
устанавливается равной нулю, и программа BIOS не считает нулевое
значение правильным результатом ввода в альтернативном регистре.
Это позволяет оператору использовать клавишу альтернативного
регистра вместе с другими клавишами, нажимая и отпуская ее (как это
делается в интерпретаторе языка Бейсик, где ALT-A порождает строку
символов AUTO и не вводя при этом кода 0 в момент отпускания этой
клавиши.
Остальные переменные поддерживают буфер клавиатуры. По мере
того, как на клавиатуре печатаются символы, возникают прерывания.
Программа KB_INT, входящая в BIOS принимает прерывание от
клавиатуры, читает код сканирования из порта 60H, и определяет код
ASCII этой клавиши. Затем программа BIOS записывает это значение в
буфер клавиатуры KB_BUFFER. В этом буфере есть 16 слов - каждая
клавиша записывается в виде слова. Первый байт - это код ASCII
клавиши, второй байт - код сканирования или расширенный код
сканирования клавиши. Использование расширенного кода сканирования
позволяет передавать в прикладную программу символы, которые не
имеют кода ASCII.
У буфера есть два указателя. Переменная BUFFER_HEAD содержит
смещение первого символа в буфере в сегменте DATA, соответствующего
Содержание Назад Вперед