Программисткое руководство к ZX-Spectrum`y 1969 г.

Глава 6 - основы работы с клавиатурой. Клавиши регистров и клавиши-переключатели. Клавиши связи. Повторение действия клавиши. Порты клавиатуры. Хранимые данные.


                          Глава 6.
                Основы работы с клавиатурой

    В этой  главе речь идет в основном о стандартной клавиа-
туре,  хотя в тексте и будут встречаться некоторые коммента-
рии, касающиеся клавиатуры Спектрум+. Мы не будем рассматри-
вать специальные модели клавиатуры,  такие  как  МС  5007  с
контроллером.  В  большинстве  случаев  всякие нестандартные
клавиатуры достаточно точно эмулируют стандартную  клавиату-
ру.
    В первой части этой  главы  объясняется,  как  присходит
взаимодействие  с  клавиатурой  на  аппаратном и программном
уровнях. Во второй чати этой главы объясняется, как BIOS об-
рабатывает информацию,  получаемую с клавиатуры, и делает ее
доступной для наших программ.  Если вы намерены подробно уз-
нать  о  работе клавиатуры,  то рекомендую сначала прочитать
эту главу. Один из достойных примеров использования этой ин-
формации - это написание своего драйвера клавиатуры, который
бы модифицировал работу клавиатуры,  подобно тому,  как  это
сделано в моей программе Q-DOS.

                   6.1 Работа клавиатуры

    Клавиатура Спектрума  не содержит специальных микросхем,
которые выполняли бы часть рутинной работы. Когда клавиш на-
жата,  соответствующий бит соответствующего порта сбрсывает-
ся. Всего существует 8 портов, которые контроллируют 40 кла-
виш. Один порт контроллирует, таким образом, 5 клавиш.
    Когда мы нажимаем на клавиши, клавиатура ничего не знает
о значении нажимаемых клавиш, она просто отмечает о происхо-
дящих действиях.

                  6.2 Связь с компьютером

    Каждый раз,  когда нажимается или отпускается  какая-ни-
будь   клавиша  на  клавиатуре,  изменяется  соответствующий
бит.Каждые 1/50 секунды компьютер сканирует клавиатуру,  вы-
рабатывая  с помощью программ ASCII-код соответствующей кла-
виши.
    Сначала с    помощью   сканирования   клавиши   получает
скен-код,  потом с помощью таблиц, происходит декодирование,
транслирование,  архивирование, скроллирование с целью полу-
чения ASCII-кода.  Работа по переводу скен-кода  усложняется
тем,  что  клавиатура имеет несколько операций по усложнению
регистров, меняющих значение нажатых клавиш. Например, нажав
клавишу CAPS SHIFT и одновременно клавишу С, по получим про-
писную С.

         Клавиши регистров и клавиши-переключатели.

    В дополнение  к  основным клавишам SHIFT и CAPS есть еще
клавиши-переключатели,  которые также влияют на механизм пе-
реклюхения  регистров клавиатуры - клавиши GRAPHICS,  EXTERN
CAPS LOCK.
    Информация о состоянии  регистров  храниться  в  области
системных переменных

23617/#5C41   0 - K, L, C режимы
              1 - Е режим
              2 и более - G режим
23658/#5С6А   бит 3 установлен - C режим
                    сброшен    - L режим

    Всякий раз, когда BIOS получает скэн-код нажатия обычной
клавиши,  проверяется  состояние  этих режимов и после этого
вырабатывается окончательный код.

                       Клавиши связи

    Когда подпрограммы BIOS транслируют коды,  она постоянно
проверяет   их   на   определенные   комбинации,  такие  как
CAPS+SPACE (BREAK).  Эти командыы застявляют немедленно  вы-
полнить определенные действия, а иногда даже не помещать код
в память

                Повторение действия клавиши

    На клавиатуре компьютера действия клавиши может  автома-
тически повторяться.  С помощью специальных подпрограмм, оп-
ределяется, как долго остается клавиша в нажатом состоянии и
если это необоходимо, с заданной частотой будет генерировать
код  этой  клавиши.  За  эту  функцию  отвечают  2   ячейки:
23561/#5С09 Время задержки между автоповтором и наатием кла-
виши 23562/#5С0А Частота автоповтора

                   Повторяющиеся клавиши

    На клавиатуре Spectrum'а+  есть  повторяющиеся  клавиши.
Например,  "  можно набрать нажатием одной клавиши,  а можно
нажав SYMBOL SHIFT и Р. Но нет возможность определить, какая
из комбинаций все-таки нажата.

                   6.3 Порты клавиатуры.

    Ранее мы  вскольз упоминали о портах клавиатуры.  Узнать
нажата ли какая-нибудь клавиша можно  прочитав  значение  из
порта #FE (254).  Вся клавиатура Спектрума разбита на восемь
рядов по пять клавиш в каждом. При нажатии на клавишу сбрсы-
вается  один из младших битов (D0-D4) порта в зависимости от
клавиши. На практике необходимо знать точно, какая из клавиш
нажата.  Для этого следует читать данные из порта, индувиду-
ального для каждого ряда.
    Адреса портов представлены ниже.  Биты D0-D4 в считанном
значении указывают какая клавиша полуряда нажата - соответс-
твующий бит будет сброшен.
    Внимательные заметят, что адрес можно формировать и дру-
гим способом: младший байт всегда равен #FE (254), а в стар-
шем сбрасывается соответствующий бит.

                      Хранимые данные

    С работой клавиатуры явно или нет связано большое  число
ячеек. Приведем основные:

23556/5С04 Код  нажатой  клавиши  без учета клавиш изменения
           состояния регистра.  Символьные  клавиши   всегда
           прописные.

23560/5С08 Код последней нажатой клавиши
23658/5С6А 3 бит. Установлен при С-курсоре




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Лодырь - Пароли к игре Бегство на Хархан.
Оттяг - "Дык, оттянемся!"
Игры - новелла и описание к игру Narcopolice.
Дебют - очередная игра фирмы Level 9 - "Emerald Isle", в которой вам предстоит преодолеть все невзгоды и препятствия и стать королем загадочного острова.
Фенечки - говорят дети.

В этот день...   24 ноября