Virtual Worlds #01
31 декабря 1999
  Железо  

Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.


Аппаратное обеспечениеПериферийное оборудованиеВвод-выводКлавиатуры

 ┌────────────────────────────┐
░▒▓ Ошибки клавиатуры. ▓▒░ └────────────────────────────┘

           (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-
клавиатуры.  Технику подключения
и  схему  я  приводить  не буду,
т.к.  это зависит от конкретного
примера,  а рассмотреть все при-
меры,  я  думаю, вряд-ли удастся
т.  к. их очень много. Себе я не
стал устанавливать буферные эле-
менты на каждую клавишу, я всего
лишь поставил два буфера на пор-
ты  Синклер-джойстиков т. к. сам
я  играю  очень  мало, а младшие
братья  предпочитают  в основном
джойстик...




Другие статьи номера:

От редакции - история создания журнала.

Путеводитель - подробное содержание номера.

Описание оболочки - описание оболочки и методов ее правильной эксплуатации.

Авторы - об авторах.

Ассемблер - Z80 Flags: недокументированные комманды процессора Z80.

Ассемблер - Оверлеи для JC: Описание методов создания утилит работающих под управлением Jemmini_Commander 4.0T.

Ассемблер - Секреты TR-DOS: о методах пределения наличия дисководов.

Ассемблер - Круги на воде: Алгоритмы имитации эффекта известного на других платформах, под названием "круги на воде".

Ассемблер - Поиск пути. Решение задачи "статического" поиска наикратчайшего маршрута между двумя точками.

Отдохни - Механический эффект. История о том, что бывает, если использовать презервативы сомнительного происхождения.

Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.

Железо - Прерывания: Кое-что непонятное о прерываниях второго рода.

Техпомощь - Мысли вслух. Интересно письмо из конференции fido7.zx.spectrum на тему "К вопросу о стандартизации".

Техпомощь - File FAQ. Полный разбор форматов файлов, наиболее часто встечающихся в Интернет, и не только; а также способы их конвертации в "нормальный" вид.

Техпомощь - Dos Review: материал по формату дисковой операционной системы IS-DOS.

Техпомощь - Dos Review 2: материал по формату дисковых операционных систем ПК "АГАТ", Радио-86РК, SP-DOS, БК-0011М.

Техпомощь - Dos Review 3: материал по формату дисковых операционных систем CP/M, ASC SOUND MASTER, RT11, СМ ЭВМ РАФОС.

Техпомощь - Dos Review 4: материал по формату дисковой операционной системы от неизвестного автора.

DI:HALT:99 - Анализ DH:99. Наконец-то вся правда о прошедшей летом, в г.Дзержинске пати, от самих организаторов.

DI:HALT:99 - Hidden Parts. Жизнь дзержинских (и не только) спектрумистов в период проведения DI:HALT:99.

DI:HALT:99 - Результаты. После прошествия DH:99, чуть ли не каждая вторая газета, считала своим долгом придумать новый вариант результатов. Данная статья направле- на на то, чтобы окончательно поставить все точки над "И".

Программы - Alien: описание и прохождение игры по фильму "Чужой".

Программы - описание Universal AntiProtector 0.01 (программа для автоматического раскалывания ряда популярных защитных систем).

Программы - редактор игровых экранов "Белые Пятна".

Программы - Exhumator: программа для "эксгумации дисков".

Программы - чанковый графический редактор: Hard Core ver 3.01

Программы - Глаз Вопиющего: програмка позволяющая смотреть картинки, спрайты, слушая при этоммузыку.

Отдохни - Стих о Sysop'e. Поэзия однако...

Отдохни - Секс в Фидо. Юмористический расказ о том, как же на самом деле занимаются любовью заядлые фидошники.

Отдохни - Анекдоты. Подборка анекдотов с компьютерной тематикой.


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

Похожие статьи:
Scorpion Club - Контроллер мыши и клавиатуры, подключение к различным видам Spectrum-совместимых компьютеров.
Железо - Глюки клавиатуры: почему в играх для двух игроков, при игре вдвоем, компьютер не слушается вашего управления и информация о том, как этого избежать.
Org 3000 - и вновь о клавиатуре для ZX Spectrum: ЙЦУКЕН vs QWERTY.

В этот день...   26 июня