Абзац
:: Поиск
:: Поддержка проекта
Webmoney:
  • Z610389805629
  • R427996570517
  • E023541002978
  • :: №4 (17.03.2001) Просмотров: 4957

    Автор: Сергей Гуляев / Macros.

    Рубрика: Читатель читателю.

    Номер: №4 (17.03.2001).



    Кемпстон крыска

    Данный девайс, свободно подключаемый к любому Спектрум-совместимому компьютеру, позволяет подключить любую писишную мышь. Часто задают вопрос - учитывает ли этот интерфейс скорость передвижения мыши или же просто эмулируется Кемпстон джойстик? Отвечаю: это полноценный мышиный интерфейс, определяющий скорость, направление движения и нажатия на кнопки мыши. Опрос Кемпстон мыши осуществляется через программу-драйвер. В упрощенном варианте достаточно считать данные из портов и присвоить эти значения координатам, но тогда курсор будет летать по экрану с бешеной скоростью. Поэтому я рекомендую использовать следующий драйвер:


    MOUSE   LD HL,(CRDS)
            LD BC,#FBDF
            IN A,(C)
    
    MOUSE11 LD D,0:LD (MOUSE11+1),A
            SUB D:CALL NZ,MOUSE30
            LD B,#FF:IN A,(C)
    
    MOUSE12 LD D,0:LD (MOUSE12+1),A
            SUB D:CALL NZ,MOUSE40
            LD (CRDS),HL:RET
    
    MOUSE30 JP M,MOUSE35
            ADD A,H:LD H,A:RET NC
            LD H,#FF:RET
    
    MOUSE35 XOR #FF:INC A:LD D,A
            LD A,H:SUB D:LD H,A
            RET NC
            LD H,0:RET
    
    MOUSE40 JP M,MOUSE45
            LD E,A:LD A,L:SUB E
            LD L,A:RET NC
            LD L,#00:RET
    
    MOUSE45 XOR #FF:INC A:ADD A,L
            LD L,A:CP 191:RET C
            LD L,191:RET
    
    CRDS    DW #0000; координаты курсора

    Как видно из листинга, данные для расчета X-координаты берутся из порта #FBDF, а для Y-координаты - из #FFDF. Нажатие кнопок можно определить, прочитав содержимое порта #FADF. Состояние битов D0, D1 и D2 определяет нажатие кнопок. Кнопка считается нажатой, если соответствующий бит равен нулю. При этом D0 считается левой кнопкой, D1 - правой. D2 лучше не опрашивать, потому что большинство выпускаемых сейчас мышей - двухкнопочные.

    Определить наличие мыши поможет следующая программа:


    CONF    LD B,250
    A_C3    LD A,#FA:IN A,(#DF):XOR #FF
            JR NZ,A_C4:DJNZ A_C3
    ;мышь есть
            RET
    A_C4
    ;мыши нет
            RET

    Правда, на некоторых компьютерах, не имеющих интерфейса Кempston mouse, этот тест ошибается и неверно определяет наличие мыши. Почему это происходит? Все дело в том, что порты дешифрируются не по всем 16-ти адресным линиям, а всего лишь по нескольким. И на адрес с младшим битом #DF «отзывается» какой-нибудь другой порт. При установке контроллера такие конфликтные ситуации исключаются путем подачи на сигнал IORQGE компьютера логической единицы. На самой же плате компьютера порты дешифрируются как раз с использованием этого сигнала, и если он в лог. 1, выбора не происходит.

    Контроллер Кempston mouse выпускается фирмой «Скорпион» в несколько усовершенствованном варианте. Дополнительно на плате установлен контроллер IBM клавиатуры, а мышь дополнительно может эмулировать любой из существующих на Спектруме джойстиков (это можно использовать, например, в старых программах, в которых мышь не опрашивается). Впечатления от работы с этим контроллером самые лучшие, никаких проблем с подключением и с работой. И еще один ультра-плюс данного девайса - он может работать как с пассивной мышкой (которые сейчас не так-то просто найти), так и с активной. Клавиатура - XT или AT, определяется автоматически.

    В общем, Кempston mouse - штука хорошая. Подключив ее, через некоторое время вы будете удивленно вспоминать: «...и как же это я раньше без мыши работал?»


    Ссылки по теме:

    Кемпстон-мышь [№15]
    Дополнения [№16]


    © 2004-2013 Perspective group