ZX Hard #00
31 августа 1998
  Железо  

Тонкости опроса кемпстон-крыс - о глюках Kepston Mouse.

<b>Тонкости опроса кемпстон-крыс</b> - о глюках Kepston Mouse.
┌──────────────────────────────────────┐
│   Тонкости опроса кемпстон-крыс ;)   │
└──────────────────────────────────────┘

(c)VTS'98

                 mouse включен - хорошо,
                 а не включен - плохо.

                 (c)В.Маяковский,
                 Demon, VTS.


                 WELCOME TO THE HELL,
                 DEAR USER without
                 KeMpStOnE-mouse.

                 (c)Demon(ZX-Element#1),
                    VTS.


Хочу  вам  поведать  об  одном печальном
факте - у меня нет kempstone-joystick'а.

-Ну и что, а у меня нет kempstone-mouse,
 -отвечу я (VTS)...

Примерно так началась поучительная стат-
ья  в ZX-Elemement #1 о том, как опраши-
вать   кемпстон-джойстик.  Видимо,  мыши
встречаются  намного  чаще  джойстиков и
должны быть у каждого, т.к. именно из-за
отсутствия  мыши  (на  любой  тачке, где
k.joys. дешифрован по #FD) журнал немно-
го (мягко говоря) глючил.

Только,  plzzz, не принимайте это за на-
езд!  Просто мне очень хотелось почитать
журнал  (каково,  вам, например ехать за
20км  в город до друга, чтобы читать его
половину  'мельком', а вторую с нажатыми
на  джойстике 'влево' и 'вправо' [позже,
правда, при помощи паяльника ;-) ]).

Я также уверен, что этот глюк уже пойман
и пишу этот бред для устранения дальней-
ших недоразумений.
Справедливости  ради,  надо сказать, что
этим грешили не только вы.

Итак, перейдем к делу.

На машинах с 'фирменной' неполной дешиф-
рацией  по  #DF, а не #1F при отсутствии
мыши (ее порты имеют в младшем байте ад-
реса  #DF)  вместо  'мышиной' инфы будет
прочитан  джойстик.  Ну, если при чтении
координат  глюков  не происходит (sorry,
из-за  отсутствия ентого девайса не зна-
ком с его подробным опросом, да разговор
не  об этом вовсе), то при чтении кнопок
начинается самое интересное.
А  именно: у мыши кнопки пассивны в 1, а
активны  в  0; у джойстика же все наобо-
рот!!!  Посему при валяющемся под столом
джойстике прога слежения за несуществую-
щей  крысой  ловит  идиотское  намерение
юзера  найти 'any key' методом пианиста,
то бишь нажатием всего нажимающегося :-)

В  результате  получаем  навечно нажатые
'огонь' и 'отмену' (благо, средняя кноп-
ка не используется для 'смертельных' ;-)
функций).   Эффект,   конечно,   занима-
тельный, однако я журнал взял, а не дему
какую-ньдь.
После того, как до меня дошло все это, я
сразу понял метод лечения: нажать кнопки
'влево'  и 'вправо' на джойстике (благо,
он у меня не рычажковый ;) ); после чего
я  довесил  пару перемычек и пересмотрел
все глючные проги ;). Невъехавшим об'яс-
няю: влево и вправо - биты 0,1 джойстика
-  соответствуют  левой и правой кнопкам
мыши (вниз - бит 2 - средней).
Только  не забудьте потом убрать эти пе-
ремычки :-).

Железячный метод решения - добавить пару
элементов ЛЛ1 либо диодов для дешифрации
по  #1F - не рекомендую, т.к. таких про-
гов  не так уж и много, да и вообще, это
проблема кодеров, а не юзеров.

Кстати сказать, эта проблема проявляется
на KAY'е и Scorp'е. Посему основная мас-
са мышиных прогов - из Питера - работает
корректно.

Ну  а  теперь перейдем к десерту - тому,
ради  чего  вы и читали весь этот калам-
бур,  то бишь _КАК_правильно_избавиться_
_от_этого_принеприятнейшего_известия_.

Возьмем  какой-ньдь  питерский мышининый
прог и запустим его (напр., ZX-Format).
Теперь обратим внимание на вроде бы бес-
полезный  прибамбас  -  тест джойстика и
мыши.  Хотя давно следовало спросить се-
бя: а где же тесты ОЗУ, турб и тормозов,
псевдо-ПЗУ  и теневых мониторов ;-). Со-
поставим    этот    факт    с   наличием
кемпстон-теста, например, и в MMD. ВСЕ!
Теперь можете кричать "эврика!"
Если же вы не Архимед, читайте дальше.

Короче, НУЖНО ТЕСТИРОВАТЬ наличие мыши !

И если мыши нет, то ОТКЛЮЧАТЬ ее опрос.

А сделать это не просто, а очень просто.

Может  быть два варианта: простой и неп-
равильный.
Для начала разберем неправильный.

         LD   A,#FA       ;читаем
         IN   A,(#DF)     ;   кнопки.
         AND  %00000111   ;маскируем их.
         INC  A           ; #FF+1=0
         JP   NZ,mouse_off;     ...
mouse_on ...

Принцип:  если это мышь, то ее порт кно-
пок будет содержать 1 в разрядах 3...7;
после   установки   младших  битов  в  1
(AND  %00000111)  в  акк. получим #FF, а
после INC A - 0 и установленный флаг Z.
Если джойстик, то биты 3...7 сброшены !

Почему неправильный ?

а).Есть мышь, нестабильная шина данных и
в  результате где-ньдь в битах 3...7 на-
поремся хотя бы на один 0.
Результат - мышь отдыхает.

б).Нет  мыши, кемпстон (джойстик) непра-
вильный  (установлены  биты 5...7), юзер
давит  на  все  (или  хотя  б  'огонь' и
'вверх') кнопки джойстика (назло...:*) )
Результат - наличие мыши (+глюки...).

Во втором способе надо прочитать 3 мыши-
ных байта и если все они равны, то с ве-
роятностью 99.(9)% мыши нет:

а).Читали все 3 байта из джойстика.
б).Читали нестабильную шину.
в).Читали стабильную шину.

Остальная  (мизерная) вероятность непра-
вильного определения:

а).Нестабильная  шина  успела измениться
между чтениями.
б).Шустрый юзер успел изменить состояние
джойстика между чтениями :-О.
в).Юзер  умудрился  :*))  поставить мышу
так, что x=y=keys !!!...

Ну а вот и асм:

          LD   BC,#FADF
          IN   A,(C)
          INC  B         ;B=#FA+1=#FB
          IN   D,(C)
          LD   B,#FF
          IN   E,(C)
;прочитали все 3 байта.

          CP   D
          JP   NZ,mouse_on
          CP   E
          JP   NZ,mouse_on
mouse_off ...


Ну вот и все :-).

P.S.: Хотя не помешает добавить ручную
коррекцию теста - как в том же ZF.

12.08.98  22:19msk  is-dos




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

Introduction - вступление: цель газеты - помочь межрегиональному объединению железячников.

Krasnodar Hard Corp - группа Краснодарских железячников.

Железо - начинающим: уроки пайки.

Советы мастера - о том, как обpащаться с печатнoй платой и её элементами.

Измерения - очень полезная схемка для проверки печатных плат.

Тонкости опроса кемпстон-крыс - о глюках Kepston Mouse.

Прерывания в Spectrum'е - схема для использования IM2 прерываний.

Тонкости работы с IORQGE/ - что это за сигнал и с чем его вообще едят.

ZX+Dendy - возвращение к напечатанному.

Авора - об авторах газеты.


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

Похожие статьи:
News - новости от: Survivor, Flying/Digital Reality, Кирилл Фролов, Nik-O, Voodoo/Delirium Tremens, Stanley "Virt" Ivanenko, Pawel/Real Software, Vitamin/CAIG, Евгений Илясов, Sam Style, Kristoph.
Книга - Тайники ZX-Spectrum: Каналы и Потоки.
Проходилка - Drunk Dizzy (demo)
Связист - Обратная связь по письмам читателей.
Тест - Тест "Может быть вы - новый белорус?"

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3