Руководство к ZX-Spectrum. Глава 6

Руководство к ZX-Spectrum. Глава 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 бит. Установлен при С-курсоре

Глава 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 бит. Установлен при С-курсоре