Железо - Почему в некоторых программах не работает Kempston?

╔══════════════════════════════════════════════════════════════╗
│			     ЖЕЛЕЗО			       │
╚══════════════════════════════════════════════════════════════╝

		    И СНОВА О СОВМЕСТИМОСТИ

   Меня в последнее время часто спрашивают: "Почему у нас в  не-
которых программах не работает KEMPSTON JOYSTICK?".  Причин  тут
несколько, и я спешу их разьяснить. Для этого окунемся немного в
схемотехнику нашего обожаемого SPECCY.

   Первое, изначально в родном SPECCY все порты  дешифрировались
грубо, по одному разряду младшего байта шины данных. Это  станет
понятно из следующей таблицы:

Порт #FF 11111111 O-O-O-H,  MY  GOD!
Порт #FE 11111110 BORD,MAG,BEEPER,KEYB
Порт #FD 11111101 ! ЧИТАЙ НИЖЕ !
Порт #FB 11111011 ZX-PRINTER

   Порт #FF на самом деле читается не только по  своему  истори-
ческому адресу, а вообще по любому незадействованному. Порт  #FD
на самом деле нельзя использовать  напрямую,  так  как  возможен
"ответ" сразу нескольких устройств - порт конфигурации  ZX  128,
муз.сопроцессор. Хотя его очень часто используют для  переключе-
ния страниц памяти. На компьютерах, где он реализован как в фир-
менном SPECCY, эти номера проходят. Зато на горе-компьютерах ти-
па "АТМ" и так далее (вы меня поняли) это приводит  к  печальным
результатам.

   Это были основные порты, теперь далее.

Порт #F7 11110111 \
Порт #EF 11101111  } ZX LPRINT 3
Порт #E7 11100111 /

   Как видите, остались адреса с #1F до #DF. В двоичном виде это
выглядит так:

Порт #1F 00011111
Порт #3F 01011111
Порт #9F 10011111
Порт #DF 11011111

   Это адреса по которым можно обращаться, избегая конфликтов на
шине данных. Легко заметить, что во всех адресах разряд  A5  ра-
вен 0. Именно по принципу грубой дешифрации этот  разряд  "отве-
чает" за KEMPSTON JOYSTICK. То есть, значения джойстика теорети-
чески должны читаться по всем этим адресам. На деле же,  у  кого
KEMPSTON JOYSTICK выполнен на м/схеме КР580ВВ55, значения  джой-
стика будут читаться ТОЛЬКО по адресу #1F (31). Именно по этому,
в некоторых программах, где идет опрос по  маске  #DF,  джойстик
работать не будет. Решение проблемы видится в  замене  маски  на
#1F. Действительно, зачем городить лишнюю логику и  мучить  ком-
пьютер, когда адрес #1F стал фактически стандартом в нашей стра-
не. Я полагаю, что дал исчерпывающий ответ на данный вопрос.

   В заключение, хочется сказать, что все  кому  не  безразличны
вопросы железа, и у кого есть собственные  находки,  могут  зво-
нить ко мне на мою ZX, повторяю, именно ZX, а не PC (вонючая ма-
шина), BBS. Свои находки желательно оформить в виде файла  в  ZX
WORD и поместить мне на сервер. Это касается, правда, только жи-
телей Москвы и области. Остальные могут мне писать.

			  Громов Кирилл (C) CHUNG Software (FFC)