Unsteady News #08
07 июля 1997

Kempston Mous - как запрограммировать драйвер мышки Kempstone Mouse.

<b>Kempston Mous</b> - как запрограммировать драйвер мышки Kempstone Mouse.
╔═════╦════════════════════════════════════════════════════════╗
║  4  ║                 Kempstone Mouse                        ║
╚═════╩════════════════════════════════════════════════════════╝
(c) CODEMAN.

 В  данной  статье  я  попытаюсь  разьяснить как программировать
                        Kempstone Mouse.

                      Для начала о портах:

#FADF-отображает состояние кнопок мыши. Роль играют только млад-
шие  три бита. Если бит сброшен-кнопка нажата. Если бит установ-
                     лен-кнопка не нажата.

                           Например:
LD BC,#FADF
IN A,(C)
RRA
JP NC,BUTTON1;переход если нажата первая кнопка.
RRA
JP NC,BUTTON2;переход если нажата вторая кнопка.
...

 #FBDF-перемещение по X-координате.
 #FFDF-перемещение по Y-координате.
:
При движении мышки вправо или вверх числа в соответствующих пор-
тах  увеличиваются  циклически,  т.е.  дойдя до 255 становится 0
т.д.  Аналогично  если  вы двигаете мышку влево или вниз, только
числа уменьшаются. Чем быстрее вы двините мышку тем больше изме-
нится число в порте. Понятней будет если вы разберетесь в следу-
щей проге.

KEY_SCAN
         LD BC,#FBDF; читаем порт
         IN A,(C)   ;
MK3      CP 00      ; сравниваем с предыдущим значением
         JR Z,MK    ; обходим вызов если числа равны
         CALL KOORX ; вызываем если не равны
MK
         LD BC,#FFDF; читаем порт
         IN A,(C)   ;
MK4      CP 00      ; сравниваем
         JR Z,MK2   ; обходим вызов
         CALL KOORY ;
MK2
         ...        ; дальнейшая прога

KOORX
         JP M,METKA  ; переходим если число уменьшилось
         PUSH AF     ; сохраняем число
         LD A,(MK3+1); берем старое значение
         LD B,A      ; заносим в B
         POP AF      ; восстанавливаем
         LD (MK3+1),A; заносим на место старого новое
         SUB B       ; отнимаем
         ADD A,A     ; складываем чтоб мыша двигалась быстрее
         LD (STEP),A ; заносим в ячейку изменение
         CALL RIGHT  ; вызываем прогу для вычисления новых коор.
         RET         ; возврат
METKA
         PUSH AF     ; все тоже самое
         LD A,(MK3+1);
         LD B,A      ;
         POP AF      ;
         LD (MK3+1),A;
         CALL CHANGE ; вызываем обмен
         SUB B       ;
         ADD A,A     ;
         LD (STEP),A ;
         CALL LEFT   ;
         RET         ;
CHANGE
         LD D,A      ;
         LD A,B      ;
         LD B,D      ;
         RET         ;
KOORY
         JP M,METKA2 ;
         PUSH AF     ; тоже только для Y координат
         LD A,(MK4+1);
         LD B,A      ;
         POP AF      ;
         LD (MK4+1),A;
         SUB B       ;
         ADD A,A     ;
         LD (STEP),A ;
         CALL UP     ;
         RET         ;
METKA2
         PUSH AF     ;
         LD A,(MK4+1);
         LD B,A      ;
         POP AF      ;
         LD (MK4+1),A;
         CALL BOL    ;
         SUB B       ;
         ADD A,A     ;
         LD (STEP),A ;
         CALL DOWN   ;
         RET         ;

STEP     DB #00      ; шаг стрелки

                    Теперь общие пояснения:

Разница  между старым и новым значением и есть шаг и с ним можно
делать  все  что  хотите, я умножаю его на два (ADD A,A) чтоб за
один шаг стрелка сдвигалась на два пиксела. Как понятно отнимать
надо  меньшее  из большего и при движении мышки вправо или вверх
так и происходит старое значение всегда меньше нового.А вот ког-
да  мышу  двигали  в  обратном направлении то старое число будет
больше  нового  и  поэтому мы вызываем прогу CHANGE.Вычислив шаг
вызывается подпрограмма для вычисления новых координат стрелки.

        Надеюсь данная статья хоть немного поможет вам.

 ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄



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

Байки из Бобруйска - "Нож в руке Rasskazovа снова сверкнул в воздухе, нанося телефону последний смертельный удар"...

Вампир наносит ответный удар - "Наступала ночь, время стpаха, мести и смертей"...

Светская беседа - интервью с кодером из Бубруйска "CODEMAN".

Kempston Mous - как запрограммировать драйвер мышки Kempstone Mouse.

Знание-сила - доработка C-DOS модема.

Ищу работу! - Пpинимаем заявки на доставку из Минска модемов, контpоллеpв мышы и самих мышек, контроллеров дисководов и дисководов.

С молотка! - продается компьютеp "SCORPION - ZS 256" + ч/б модулятоp + 2 джойстика.


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

Похожие статьи:
Новье !? - O программах Death Zone, Tremor.
Demo Party - CC999.999 information (eng).
Реклама - Рекламу в наш журнал вы можете подавать в любом количестве совершенно бесплатно!
Система - описание мощного упаковщика данных "ASC-LZSSPack Game Compressor v4.5".
Short Story - Жили-были стаpый шаpманщик и маленькая девочка.

В этот день...   20 апреля