┌────────────────────────────┐
│ ░▒▓ Ошибки клавиатуры. ▓▒░ │
└────────────────────────────┘
(C) Time Keeper/MHCG
Здравствуйте, уважаемые поль-
зователи величайшего компьютера
всех времен и народов - SINCLAIR
ZX SPECTRUM'а. ( я думаю, что не
очень громко сказал )...
Сегодняшний наш с вами разго-
вор мы начнем с одного из самых
важных устройств, входящих в лю-
бой компьютер любой марки. Мы
поговорим о клавиатуре...
Ведь ни на одном компьютере
нельзя работать без клавиатуры
т. к. клавиатура является основ-
ным устройством передачи данных
от пользователя к компьютеру.
Оказывается, в Спектруме не все
так идеально, как может пока-
заться на первый взгляд...
У клавиатуры Спектрума есть
один очень серьезный недостаток.
Я называю его "перекрыванием
клавиатуры".
Наверное многие из вас начина-
ли свой творческий путь на
Спектруме с того, что по полдня,
а то и весь день, с утра и до
позднего вечера играли в игруш-
ки. Уже тогда существовало много
занимательных игр, рассчитанных
на двух игроков. Мне всегда нра-
вилось посидеть часок другой
вместе с другом за компьютером и
поиграть в Double Dragon, Golden
Axe и др. Но у всех подобных игр
есть один большой недостаток: вы,
наверное, замечали, что иногда
при игре вдвоем, ваш игрок сов-
сем вас не слушался. Например вы
нажимали влево, а он ни с того,
ни с сего вдруг начинал прыгать.
Причем подобные казусы случались
чаще всего когда в игру играли
двое игроков. Это и есть "перек-
рывание клавиатуры".
Раньше, как и любой другой
неопытный user, я думал, что
этот трабл возникает в результа-
те того, что програмисты непра-
вильно опрашивают клавиатуру, но
как я был разочарован, когда
научившись программировать на
ассемблере и написав свою первую
несложную программу, я обнаружил
в ней все тот же проклятый
глюк...
В то время я уже довольно неп-
лохо разбирался в схемотехнике
Спектрума, и, найдя у друга схе-
му Зоновского "Ленинграда-1", я
начал упорно искать причину это-
го странного явления. Оказалось,
что все очень просто. Клайв
Синклер при разработке схемы де-
лал основную ставку на дешевизну
будущего компьютера и старался
делать ее как можно более прос-
той и недорогостоящей. Именно
из-за этого мы сейчас и страдаем
и это касается не только кла-
виатуры, но и многого другого:
неточная дешифрация внутренних
портов, из-за чего сейчас возни-
кает немало проблем с подключе-
нием дополнительной периферии,
невозможность загрузки собствен-
ной операционной системы,
невозможность прямого программи-
рованния портов контроллера
НГМД, закрытая архитектура... Но
это темы отдельных разговоров и
об этом мы еще поднимем вопрос
на страницах нашего журнала.
Чтобы понять истоки такого
странного поведения клавиатуры,
нужно повнимательнее присмот-
реться к схеме компьютера. Как
известно, клавиатура Спектрума
представляет собой прямоугольную
матрицу размером 5*8, т. е. на
нее идут пять проводов данных и
восемь проводов адресов:
│ │
│ │
│ │
Q┌/ ─┤ W┌/ ─┤
│ │ │ │
A10 <──┴───────┴─────────- - - -
(к) │ │
A┌/ ─┤ S┌/ ─┤
│ │ │ │
A9 <──┴───────┴─────────- - - -
(к) │ │
Z┌/ ─┤ X┌/ ─┤
│ │ │ │
A8 <──┴───────┴─────────- - - -
(к) │ │
│ │
V V
D0(к) D1(к)
На рисунке изображена только
часть схемы клавиатуры. Осталь-
ные кнопки сделаны аналогично.
Предположим, что пользователь
нажал одновременно клавиши
"Q", "W" и "A". Посмотрим, что
же произошло на самом деле: Как
видно из схемы клавиатуры, при
нажатии клавиши "Q", замкнутся
провода A10(к) и D0(к), при на-
жатии клавиши "W", замкнутся
A10(к) и D1(к), и, наконец, при
нажатии клавиши "A", замкнутся
A9(к) и D0(к)... Ну что, уже до-
гадались? При нажатии вышепере-
численных клавишь соединились:
A10(к) с D0(к), A9(к) с D0(к),
но это означает, что фактически
соединились A10(к) и A9(к), но
A10(к) соединен в свою очередь с
D1(к), значит соединились прово-
да D1(к) и A9(к), откуда можно
сделать вывод, что автоматически
вместе с "Q","W" и "A", нажалась
еще и клавиша "S"!!! Вот так-то
вот! И незачем было все валить
на программистов и думать что
они неправильно опрашивают кла-
виатуру. Насколько я знаю схемы
наших отечественных компьютеров,
все они имеют подобный дефект.
Исключение, наверное, составляют
компьютеры оснащенные IBM-
клавиатурой, но я не могу точно
за это поручиться т. к. у меня
не было шанса это проверить.
Конечно, этот дефект не столь
опасен при эксплуатации систем-
ных программ и при игре в оди-
ночку, но все же неприятно. Пу-
тей для решения этой проблемы
существует несколько, но мы рас-
смотрим лишь один из них:
На мой взгляд, проще всего ус-
тановить буферные элементы на
каждую клавишу ( по крайней мере
я не нашел более разумного реше-
ния ). Можно например установить
пять регистров К555ИР23/К555АП5
на шину адреса клавиатуры или на
шину данных. Или, что мне кажет-
ся более предпочтительным, -
приобрести контроллер IBM-
клавиатуры. Технику подключения
и схему я приводить не буду,
т.к. это зависит от конкретного
примера, а рассмотреть все при-
меры, я думаю, вряд-ли удастся
т. к. их очень много. Себе я не
стал устанавливать буферные эле-
менты на каждую клавишу, я всего
лишь поставил два буфера на пор-
ты Синклер-джойстиков т. к. сам
я играю очень мало, а младшие
братья предпочитают в основном
джойстик...