4. ДЖОЙСТИКИ.
Если Вы загружаете в компьютер игровые программы, то
Вы заметите, что почти все игры иогут управляться не только
с клавиатуры, но и с поиощью джойстика. Причеи на выбор
предлагается несколько видов джойстиков - KEMPSTON, SINCLAIR,
INTERFASE 2, KURSOR, PROTEK и т.д. Если указан джойстик без
названия, то зто, как правило, KEMPSTON.
Джойстик представляет собой рукоятку управления, неже-
стко закрепленную на подставке, внутри которой размещены
контакты. Подставка обычно крепится на столе присоскаин и
соединена кабелей длиной 1-1,5 и с интерфейсом джойстика,
т.е. приставкой компьютера, служащей для стыковки его с
джойстиком. Интерфейс джойстика, как и любой другой интер-
фейс, должен соединяться с компьютером проводниками мини-
мально возможной длины. При наклоне рукоятки джойстика, она
замыкает в подставке контакты соответственно "ВВЕРХ", "ВНИЗ",
"ВЛЕВО", "ВПРАВО", а также диагональные направления - "ВВЕРХ
И ВЛЕВО", "ВВЕРХ И ВПРАВО", "ВНИЗ И ВЛЕВО","ВНИЗ И ВПРАВО"
при одиовреиенно замкнутых 2-х соседних контактах. Отдельно
расположена еще одиа пара контактов, т.н. "ОГОНЬ", в виде
кнопки на подставке или на рукоятке. Все контакты замыкают-
ся не между собой, а с общим проводом, который, в зависимос-
ти от конструкции интерфейса, может быть соединен в нем либо
с +5 V, либо с землей.
В зависимости от Ваших возможностей конструкция джой-
стика может быть самой разнообразной. Например, можно просто
расположить 5 кнопок на подставке или прямо на клавиатуре
так, чтобы их было удобнее нажимать, или изготовить рукоятку,
как описано выше, или купить джойстик в магазине. В любом
случае Вы получаете преимущества - удобнее управлять объек-
тами игр, не изнашивается клавиатура компьютера. Наиболее
распространенным и чаще других встечающимся в играх является
KEMPSTON интерфейс. Варианты его построения на различной
злеиентной базе (в зависимости от её наличия) иы предлагаем
Вашему вниманию.
KEMPSTON интерфейс представляет собой параллельный порт
ввода информации от джойстика иа шину данных коипыотера.
Этот порт ииеет адрес 31, но чаще всего используется более
грубая дешифрация адреса, когда порт выбирается нулевыи со-
стоянием шины адреса А5 или А6, т.к. обычно не задействованы
несколько внешних устройств одновременно. Кроне адреса в вы-
боре порта участвуют сигналы никропроцессора - IORQ и RD,
что соответствует чтению из порта ввода/вывода. Из считанно-
го байта инфориации интерес представляют младшие 5 разрядов
D0-D4, которые отражают состояние контактов джойстика: DO -
"ВПРАВО", D1- "ВЛЕВО", D2- "ВНИЗ", D3- "ВВЕРХ", D4- "ОГОНЬ",
остальные 3 старших бита в фирменных програииах не анализи-
руются . При исходной положении джойстика с D0-D4 считывается
О, остальные положения джойстика дают числа 1, 2, 4, 8, 16 и
их коибинации, всего 17.
Схеиа интерфейса приведена на рис. 17. Справа указаны
сигналы иикропроцессоре, слева схематически изображен джой-
стик. Использована иикросхеиа с 3-ия состояниями и инверсией.
Возиожные заиеиы микросхемы DDI отражены на рис. 18, 19. Ес-
ли нет в наличии иикросхеи с инверсией, то можно использо-
вать неииверсные. В зтои случае общий провод джойстика дол-
жен быть соединен с плюсом источника питания, а входы имкро-
охеиы нужно подтянуть к эеиле. На рис. 20, 21, 22 представ-
лены варианты схеи без иивероии. Все модификации направлены
иа то, чтобы компьютер считывал из интерфейса нули на шинах
D0-D4 при нейтральной положении джойстика и единицы - при
соответствующих положениях рукоятки и кнопок. Как иы уже
указывали, выбор микросхены должен осуществляться одновре-
менный нулевыи состояниеи сигналов IORQ, RD и шииы AS. Этого
иожно достичь прииенеииеи иикросхеи ИЛИ или И-НЕ.
После того, как интерфейс собран, необходиио убедиться
в его работоспособности. Для этого достаточно запустить
простую програииу:
10 LET а = *IN 31 .- 224
20 CLS: PRINT AT 10,16; а
30 PAUSE 15: GO TO 10
В нейтральной положении рукоятки джойстика и при пра-
вильно собранной схеме интерфейса в центре зкраиа должен по-
явиться 0. При наклонах рукоятки будут получаться соответст-
вующие числа, как описано выше.
*) Если интерфейс собран по схеме на рис. 20, 22 или 32
(вариант подключения джойстика через интерфейс прин-
тера), исправьте строку 10:
10 LET а - IN 31
Это связано с тем, что со свободных линий шииы даииых
будут считываться нули.
Программа, приведенная ниже, более полно демонстрирует
возможности джойстика. Примечание *) относится и к этой про-
грамме .
JOYSTICK
10 LET a-IN 31
20 LET X-127: LET y-87
30 FOR h-0 TO 175: PLOT 0,h: NEXT h
40 FOR 1-0 TO 255: PLOT 1,175: NEXT 1
50 FOR h-175 TO 0 STEP -1: PLOT 255,h: NEXT h
60 FOR 1=255 TO 0 STEP -1: PLOT 1,0: NEXT 1
65 PRINT #l;" PLAY";n
70 PRINT X,y; IF X-0 OR x-255 THEN CLS: LET n-n+1: GO TO 20
71 IF X-0 OR y-175 THEN CLS: LET n-n+1: GO TO 20
73 PLOT x,y
75 LET a-TN 31
80 IF a»0 THEN GO TO 70
90 IF a-1 THEN LET X-X+l: GO TO 70
100 IF a-2 THEN LET X-X-l: GO TO 70
110 IF a-4 THEN LET y-y-1: GO TO 70
120 IF a-8 THEN LET y=y+l: GO TO 70
130 IF a-16 THEN BORDER (RND*7): GO TO 70
140 IF a=9 THEN LET x»x+l: LET y=y+l: GO TO 70
150 IF a»5 THEN LET x=x+l: LET y-y-1: GO TO 70
160 IF a-6 THEN LET x-x-1: LET y-y-1: GO TO 70
170 IF a-10 THEN LET x=x-l: LET y=y+l: GO TO 70
180 GO TO 70
190 SAVE "Joystick" LINE 10
Большой интерес представляет подключение двух джойсти-
ков одновременно, что несоиненно удобно в играх, рассчитан-
ных на двух участников. Саиый простой способ - это дублиро-
вание верхнего ряда кнопок клавиатуры с 1 по 0. 1 - огонь,
2, 3, 4, 5 - направления для первого участника; 0 - огонь,
б, 7, 8, 9 - направления для второго участника. Контакты
джойстика должны быть подключены параллельно кнопкаи клавиа-
туры. Можно также собрать схеиу, изображенную на рис. 23,
дублирующую клавиатуру. Порт джойстика для первого игрока
адресуется как F7FE'HEX'(А11=0), для второго - как EFFE'HEX'
(А12=0), а в остальной схеиа ие отличается от приведенных
выше, за исключением того, что их количество удваивается. То
есть. Вы берете любую схеиу из приведенных на рис. 17 - 22,
а для организации S3 используете сигнал АО виесто А5 и до-
бавляете дешифратор для адресов All и А12, поддерживающих по
половине верхнего ряда клавиатуры каждый.
Еще одни интересный класс джойстиков - програимируеиые
джойстики. Интерфейс програииируеиого джойстика выполняется
на никросхеиах статического ОЗУ и работает следующий образои
(рис. 24). Выбор иикросхеиы ОЗУ осуществляется точно также
как клавиатуры СПЕКТРУМа - с поиощью сигналов АО, Ш5 и IORQ,
то есть при чтении из порта с адресом FE. Так как при опросе
клавиатуры используется "блуждающий" по линиям адреса А8-А15
логический ноль (позиционный код), то его необходиио преоб-
разовать, «априиер, на шифраторе из 8 в 3 (иикросхеиа DDI).
Остальные адресные входы микросхены ОЗУ связаны с контактаии
джойстика. При неэаикиутои контакте "Запись" иикросхеиа ОЗУ
находится в режиие "Чтение" и непрерывно с частотой 50 Гц, с
которой опрашивается клавиатура, выдает на шииы D0-D4 дай-
ныв из адресов, определяемых "бегущим" кодой на А8-А15 и по-
ложениями рукоятки джойстика и кнопки "огонь". Для записи
зтих даииых в микросхеме ОЗУ нужио выбрать положение джой-
стика, нажеть требуемую кнопку клавиатуры компьютера и одно-
временно кратковреиеино нажать на кнопку "Запись", эту же
операцию проделать со всеии положениями джойстика. Всего их
18, включая нейтральное положение рукоятки. Поэтоиу Вы иоже-
те запрограииировать 18 кнопок клавиатуры для управления
процессои игры. В качестве кикроохеи ОЗУ иожно использовать
любые статичеокие ОЗУ, иаприиер:
132РУ11, 132РУ13, 537РУ8, 537РУ10, 581РУ5 - 2КХ8 - 1 шт;
537РУ17 - 8КХ8 - 1 шт;
132РУ8, 132РУ9, 131РУ14, 132РУ15, 541 РУ2 - 1Кх4 - 2 шт;
132РУ12 - 4КХ4 - 2 шт;
565РУ2 - 1КХ1 - 5 шт;
155РУ5, 176РУ2, 185РУ4, 561РУ2 - 256x1 - 5 шт.
Последние иикросхеиы 256x1 иожно использовать, если приме-
нить шифратор адресов К555ИВ1 - 8x3.
Многих пользователей СПЕКТРУМа может заинтересовать и
схема механически программируемого джойстика (рис. 25: DDI,
DD2 - К555ЛЛ1; R1-R5 2 ком; VD1-VD8 - КД512А), в которой нс-
пользуется память на перемычках - отрезках проводников или
многоканальных переключателях. Соединяя одни конец кнопки
джойстика с какой-нибудь шиной D0-D4, а другой конец кнопки
с любым нз адресов А8-А15, Вы можете запрограммировать любую
кнопку клавиатуры компьютера.