31 октября 1998

                                          
(С) SERGIUS PUZZLER / PROXIMA             
    special for ZX-Club magazine          
                                          
            - KEMPSTON MOUSE -            
                                          
   Или  попросту мышь. Это очень удобное в
использовании     устройство    управления
курсором, в отличии от джойстиков и просто
клавиш.  Может  в  будущем чей-то пытливый
ум    и    придумает   более   совершенный
манипулятор,     но     сейчас     давайте
довольствоваться тем что есть.            
   Данное    изделие   позволяет   простым
движением  руки, держащей мышь, перемещать
курсор  по  экрану  так  скоро,  как этого
требует   ситуация,   одновременно  щелкая
двумя  или  тремя кнопками (у кого сколько
есть).                                    
   Немного  так называемой теории. Имеются
три порта. Это:                           
     64223 (#FADF) - состояние кнопок;    
     64479 (#FBDF) - координата X;        
     65503 (#FFDF) - координата У.        
   Кнопки   имеют  следующую  раскладку  и
назначение: левая - FIRE, главная кнопка -
за  ее  состояние отвечает 0-й бит; правая
кнопка  - CANCEL, SELECT или MARK, 1-й бит
порта   кнопок;   средняя   -  для  прочих
дополнительных функций, соответственно 3-й
бит.                                      
   Значения координат лежат в диапазоне от
0 до 255. При этом перемещение мыши вправо
увеличивает  координату  X,  а  вперед (от
себя  или  вверх,  как  вам  привычней)  -
координату    У.    Естественно   обратные
движения  приводят  к  уменьшению значений
координат.                                
   Есть  вариант иного подключения левой и
правой кнопок - наоборот. Левая - 1-й бит,
а  правая  -  0-й.  Лично  у меня за левую
кнопку отвечает 0-й бит, т.к. по логике он
первый,  а  значит  более  главный (хотя и
самый младший). Но большинство программ, с
которыми   я   имел   дело,   поддерживают
вариант,   где  за  главную  левую  кнопку
отвечает   1-й  бит  (по  порядку  второй,
следовательно  он  просто  не  может  быть
главным).                                 
   Вот,  например,  Вячеслав  Медноногов в
своих  последних программах UFO-2 и ЧЕРНЫЙ
ВОРОН  поддерживает  вариант с главным 0-м
битом,   что   я  и  считаю  более  верным
решением.  Более  же  совремменые драйверы
kemston   mouse   имеют  автоконфигурацию.
Первая  нажатая кнопка после начала работы
данной  программы становится главной. Если
Вам  требуется  этот  драйвер,  то  Вы его
найдете в конце этой статьи.              
   Теперь перейдем к схеме самого контрол-
лера. Привожу список необходимых деталей: 
     DD1-DD2 - К 561 ИЕ 11 (4 шт.);       
     DDЗ     - К 555 АП 5  (2 шт.);       
     DDЧ,DD7 - К 155 ЛП 8  (1 шт.);       
     DDS     - К 555 ИД 7  (1 шт.);       
     DDб     - К 561 ТЛ 1  (1 шт.);       
     R1-R3   - 1 кОм, 0.125 Вт (3 шт.);   
     R4*     - 150 Ом,0.125 Вт (1 шт.);   
     R5-R8   - 6 кОм, 0.125 Вт (4 шт.).   
   Здесь   мы  имеем  два  основных  узла.
Первый  -  триггеры,  находится  в корпусе
мыши,  а  второй  и  более  главный  - сам
непосредственно  контроллер,  состоящий из
двух  счетчиков  координат  и  дешифратора
вышеуказанных портов.                     
   Для  тех  у  кого  есть  желание и хоть
немного  опыта  без  труда  по приведенной
схеме  соберут этот девайс. Иначе придется
кого-то просить об этом.                  
   Немного  коментариев по схеме и сборке.
Микросхемы   серий   155,   555   и   1355
взаимозаменяемы, отличаются они в основном
только  быстродействием  и  еще может быть
потребляемой        мощностью.       Более
предпочтительна  серия 1355. Все резисторы
0.125  Вт,  но  можно  поставить  и  более
мощные,   хотя  они  по размерам несколько
крупнее.                                  
   Модуль   А   изготавливается   в   двух
экземплярах.  Сигналы  "Ха", "ХЬ" и "/XCS"
на втором экземпляре называются "Уа", "УЬ"
и   "/YCS"   и   все  они  подключаются  к
соответствующим  на  модуле  В. Оставшиеся
сигналы  подключаются  к  системной  шине.
Питание  микросхем подводится так: к ножке
с  наибольшим  номером - плюс, а с номером
вдвое  меньшим  - минус ("земля"). Все это
размещается на одной плате.               
   Теперь  сделайте  следующее. Из BASIC'а
опросите  в  цикле,  например, порт 64223.
Если Вы получаете устойчивое значение 255,
то   все   нормально,   можете  пропустить
несколько  абзацев. Иначе, вам потребуется
сделать   блокировку   внутренних   портов
вашего    компьютера.    Для    владельцев
SCORPION'ов она просто обязательна.       
   Для  этого  нужно собрать модуль D, все
на  той  же плате. И соединить одноименные
сигналы  модулей  D  и В. А именно "/BCS",
"/XCS"  и "/YCS". Зетем сигнал "/IORQGE" с
одноименным   на   плате   компьютера  (на
SCORP'е   он   есть).   Если  такового  не
нашлось,  то  его необходимо организовать.
Берем   резистор  сопротивлением  560  Ом,
подсоединяем  его одной стороной к сигналу
"/IORQGE"  от модуля D, а другой к "/IORQ"
от модуля В или же с платы компьютера. Вот
и все.                                    
                                          
Конечно не совсем все. Надо еще адаптировать саму мышь. Открываем ее. Смотрим, что же нам из нее можно выкинуть, а что и оставить. Шнур понадобится другой, девятипроводный, а этот отложите, может апосля в хозяйстве сгодится. Вынимаем платочку из мышки. Демонтируем с нее колодку шнура, микросхему, резисторы, конденсатор и, если есть, диод (может и не один). Но пока, оставьте те из резисторов, которые подходят к светодиодам, может и с ними будет работать, проверим позже. Теперь по обозначению на платочке (ударение на первый слог) плюса электролитического конденсатора, который мы удалили, определяем плюс светодиодов. Или, если умеете, определите это с помощью тестора. Это необходимо для правильной подводки питания к светодиодам. Впаиваем микросхему DDб согласно схеме модуля С. Анализируем разводку дорожек на платочке. Полезные оставляем, ненужные перерезаем или вообще удаляем, чтоб не смущали. Добавляем недостающие соединения с помощью тонких проводков, навешиваем резисторы R5-8 прямо на м/схему. Заводим их на "землю". Подпаиваем средние контакты мк/переключателей к сигналам В1-3 модуля В. В1 - левый, В2 - правый, В3 - средний. Нормальноразомкнутые контакты заводим на "землю". Еще раз как следует проверяем правильность соединений. И не только на платочке мышки. Потому что схема будет работать сразу, если монтаж верен. Откажется только в двух случаях. Первый - неправильная сборка. Второй - неверно подобранный резистор питания светодиодов. Но мы его и не подбирали. По этому, снача- ла проверьте, может у вас уже все работа- ет. Для этого запустите, например, ZX-FORMAT, один из последних. Если все о'кей, то я только рад за Вас. Иначе надо подобрать резистор R4 модуля С. Ставим вместо него переменник в 5 кОм. И, двигая мышь, уменьшаем его сопротивле- ние, ловя момент уверенного перемещения курсора. Затем замеряем текущее сопротивление переменника, предварительно выпаяв его. И ставим R4 соответствующего значения. Может оказаться, что курсор движется не в том направлении, а в обратном. Просто берете и меняете местами сигналы "Ха" и "ХЬ" для горизонтального перемещения или "Уа" и "УЬ" для вертикального. Если курсор хаотично скачет по экрану, то, возможно, помогут конденсаторы емкостью по 10 нФ, припаянные параллельно с питанием микро- схем ИЕ11 модуля A. Наверное, это и все. Возможно, я что- нибудь и забыл написать, сейчас уже не помню всего того, с чем столкнулся в процессе изготовления этого устройства. Так что если с чем есть трудности, не поленитесь, напишите мне, и я в свою очередь не поленюсь ответить вам. 601909, Владимирская одл., г. Ковров, ул. Куйбышева, д. 4/1, кв. 43, Горелкин Сергей. До встречи в межсекторном пространстве. SP 15.09.98 ;MOUSE DRIVER WITH FIRE*BUTTON AUTOCONFIG ;(С) Andrey Rachkin'95 ORG 30000 JR MDRV DIRECTZ DEFB 0 ;FIRE DEFB 0 ;UP DEFB 0 ;DOWN DEFB 0 ;RIGHT DEFB 0 ;LEFT DEFB 0 ;CANCEL MCOORD DEFW 0 ;LAST CURSOR COORDS ;IN PIXELZ MPORTS DEFW 0 ;LAST READED MAUSY COORDS NONDEF AND 3 ;HERE COMEZ BUTTONZ ;CONTROL IF FIRE BUTON ;NOT DEFINED JR Z,MDRVЧ ;IF NONE BUTTON ;PUSHED СР 1 JR Z,NONDEF_ XOR A LD (MDRVЗ+2),A LD A,5 LD (MDRV2+2),A NONDEF_ LD HL,0 LD (MDRV1),HL POP IX ; *****MAIN PROC OF MOUSEDRIVER ***** MDRV PUSH IX LD HL,DIRECTZ PUSH HL POP IX XOR A LD (HL),A ;CLEARING INC HL ;OF LD (HL),A ;DIRECTZ INC HL ;BUFER LD (HL),A INC HL LD (HL),A INC HL LD (HL),A INC HL LD (HL),A INC HL LD ВС,#FADF ;BUTTONZ CONTROL IN A,(С) ;READING FROM PORT ;OF BUTTONS CPL MDRV1 JR NONDEF ;JR UNTIL FIRE ;BUTTON NOT DEFINED RRA MDRV2 RL (IX+0) ;FIRE RRA MDRVЗ RL (IX+5) ;CANCEL ; *****COORDS CONTROL ***** MDRVЧ LD HL,(MCOORD) ;FORM LAST ;CURSOR COORDS LD DE,(MPORTS) ;FROM LAST ;READED MOUSE ;COORDS LD ВС,#FBDF IN A,(С) ;READING FROM ;PORT X-COORD (0-#FF) LD (MPORTS),A SUB E JR Z,MDRV9 JP Р,MDRVб LD (IX+4),1 ;MOVE LEFT ADD A,L JR С,MDRVS XOR A ;MIN X-COORD MDRVS LD L,A JR MDRV9 MDRVб ADD A,L LD (IX+3),1 ;MOVE RIGHT JR С,MDRV7 СР #FE ;MAX X-COORD JR С,MDRV8 MDRV7 LD A,#FE ;MAX X-COORD MDRV8 LD L,A MDRV9 LD В,#FF IN A,(С) ;READING FROM ;PORT У-COORD (0-#FF) LD (MPORTS+1),A SUB D JR Z,MDRV14 NEG JP Р,MDRV11 LD (IX+1),1 ;MOVE UP ADD A,Н JR С,MDRV10 XOR A ;MIN У-COORD MDRV10 LD Н,A JR MDRV14 MDRV11 ADD A,Н LD (IX+2),1 ;MOVE DOWN JR С,MDRV12 СР #BF ;MAX У-COORD JR С,MDRV13 MDRV12 LD A,#BF ;MAX У-COORD MDRV13 LD Н,A MDRV14 LD (MCOORD),HL ;NEW CURSOR ;POSITION ;IN PIXELZ POP IX RET ; *****DRIVER END *****



Other articles:


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

Similar articles:
B.B.S. News - new station - Empire-3.
Search - search for game programs.
Story - make a bomb.

В этот день...   21 November