Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Для начинающих (http://zx-pk.ru/forumdisplay.php?f=43)
-   -   Как быстро добраться до мыши? (http://zx-pk.ru/showthread.php?t=12196)

Destr 1st March 2010 17:03

Quote:

Originally Posted by psb (Post 261276)
ты не понял ТЕ, старые мышки НЕ глючили!!! глючить могут конвертеры ps/2 в кемпстон маус, а они уже сделаны в наши дни! так что не надо гнать на саму мышку.

Тогда сорри!
Готов извинится перед теми старыми мышками!
А счас-то что делать?
Как юзать софт, да ещё на эмуле (реального-то железа уже фиг найдёш) писаный под-знает-что?
Я собственно ратую за то, чтоб ЛЮБОЙ ТИП МАНИПУЛЯТОРА однозначно распознавался программой.
То-же самое относится и к памяти, и к накопителю, и даже к тактам(раз уж нашлись такие сволочи которые pentagon придумали)

psb 1st March 2010 17:34

Quote:

Originally Posted by Destr (Post 261281)
Я собственно ратую за то, чтоб ЛЮБОЙ ТИП МАНИПУЛЯТОРА однозначно распознавался программой.

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

VELESOFT 1st March 2010 19:03

INFO ABOUT MOUSE FOR ZX
 
http://velesoft.speccy.cz/kempstonmouse-cz.htm

http://velesoft.speccy.cz/othermouse-cz.htm

TomCaT 1st March 2010 20:46

Ну, ребята, почти оффтопный почти флейм в теме раздела "для начинающих"...
Я просто удивляюсь, но пишите все равно - почти в тему и интересно, а, может, и польза выйдет.

Я-то заглянул про Sinclair Mouse почитать...

Destr 1st March 2010 22:34

MS_DET LD HL,#27FF
LD E,L
LD BC,#FADF
MT_D0 IN A,(C)
CPL
AND 7
JR Z,MT_D1
LD E,0
MT_D1 DEC HL
LD A,L
OR H
JR NZ,MT_D0
RET

MOUSE LD BC,#FADF:IN A,(C):AND 7:XOR 7
LD (MBUTT),A
LD HL,(MCOOR),B,#FF:IN A,(C)
MOS11 LD D,0,(MOS11+1),A:SUB D
CALL NZ,MOS30:LD B,#FB:IN A,(C)
MOS12 LD D,0,(MOS12+1),A:SUB D
CALL NZ,MOS40:LD (MCOOR),HL:RET
MOS30 JP P,MOS35:XOR #FF:INC A:ADD A,H
LD H,A:CP VMAX+1:RET C
LD H,VMAX:RET
MOS35 LD D,A:LD A,H:SUB D:JP C,MOS37
LD H,A:CP VMIN:RET NC
MOS37 LD H,VMIN:RET
MOS40 JP P,MOS45:XOR #FF:INC A:LD E,A
LD A,L:SUB E:JP C,MOS43
LD L,A:CP HMIN:RET NC
MOS43 LD L,HMIN:RET
MOS45 ADD A,L:JP C,MOS46
LD L,A:CP HMAX:RET C
MOS46 LD L,HMAX:RET
MINIT LD B,250
MINI1 LD A,#FB:IN A,(#DF):XOR #FF
JR NZ,MINI2:DJNZ MINI1
SCF:RET
MINI2 CALL MOUSE
XOR A:LD (MBUTT),A
LD HL,#6080,(MCOOR),HL
RET

---------- Post added at 21:34 ---------- Previous post was at 21:33 ----------

Не правда-ли похоже на репортаж из дурдома?
А ведь тем не менее это рабочий мышкин код!

null_device 1st March 2010 22:37

На чем написаны листинги? В, смысле, какого ассемблера мнемоники?

Vitamin 1st March 2010 22:46

Quote:

Originally Posted by Destr (Post 261402)
Не правда-ли похоже на репортаж из дурдома?
А ведь тем не менее это рабочий мышкин код!

Дык любой код, если так криво сформатирован, похож на бред умалишенного... Это же не obfuscated programming contest в конце концов...

Вот мой древний вариант:
Code:

        LD HL,(X_C)
        LD DE,(X_M)
        LD BC,#FBDF

        IN A,(C)
        LD B,A
        SUB E
        CP 128
        JR NC,TOLEFT
        ADD A,L
        JR C,ERX
OI1    LD L,A
        LD E,B
        JR PO_Y
ERX    LD A,255
        JR OI1
TOLEFT  NEG
        LD C,A
        LD A,L
        LD L,C
        LD C,#DF
        SUB L
        JR NC,OI1
        XOR A
        JR OI1

PO_Y    LD B,#FF
        IN A,(C)
        CPL
        LD B,A
        SUB D
        CP 128
        JR NC,TOUP
        ADD A,H
        CP 192
        JR NC,ERY
OI2    LD H,A
        LD D,B
        JR FIRM
ERY    LD A,191
        JR OI2
TOUP    NEG
        LD C,A
        LD A,H
        LD H,C
        LD C,#DF
        SUB H
        JR NC,OI2
        XOR A
        JR OI2

FIRM    LD B,#FA
        IN A,(C)
        CPL
        LD B,A
        AND A
        JR Z,NO_KLICK
        LD A,(KEYMSK)
        AND A
        JR NZ,NOT_FIRST
        LD A,B
        LD (KEYMSK),A
NOT_FIRST
        AND B
        JR Z,NO_KLICK
        LD A,128
NO_KLICK
        LD (FIRE),A

COORDS  LD (X_C),HL
        LD (X_M),DE
        RET


TomCaT 2nd March 2010 00:50

Я нашел у Znahar в макросах вариант, который немного оптимизировал:

Code:

MOUSEB DB 0 ; состояние кнопок
MOUSOB DB 0 ; прежнее состояние кнопок
MOUSEX DW 0 ; положение курсора
MOUSOX DW 0 ; прежнее положение курсора
MOUSEP DW 0 ; прежнее положение мыши

MOUUPD
; кнопки
      LD HL,MOUSEB
      LD D,(HL)          ; временно текущее состояние кнопок
      LD BC,#FADF
      IN A,(C)            ; считывается новое состояние кнопок
      CPL
      AND 7
      LD (HL),A          ; новое состояние - в текущее
      INC HL
      LD (HL),D          ; а бывшее текущее - в старое, лежат подряд
; координаты
      LD HL,(MOUSEX)      ; текущее положение курсора
      LD (MOUSOX),HL      ; - в старое положение курсора
      LD DE ,(MOUSEP)    ; положение мыши - для вычисления движения курсора
; горизонтальная координата X
      LD B,#FB
      LD A,E              ; забирается старая X-коорд. для вычислений
      IN E,(C)            ; считывается новая X-коорд. мыши
;      SLA E              ; у Znahar - для удвоения скорости, но при этом точность установки курсора по X - пиксел через пиксел
      SUB E              ; вычисляется смещение координаты
      NEG
      JR Z,MOUPD4        ; если мышь ушла на 0 по X - не двигать курсор
      JP P,MOUPD1        ; обход, если мышь сдвинулась вправо
      ADD A,L            ; вычисление X курсора, если влево
      JR C,MOUPD3
      XOR A              ; если вышел за экран влево - координата X остается у левой кромки
      JR MOUPD3
MOUPD1 ADD A,L            ;  вычисление X курсора, если вправо
      JR C,MOUPD2
      CP 253
      JR C,MOUPD3
MOUPD2 LD A,253            ;  если почти вышел за экран вправо - не выпускать дальше
MOUPD3 LD L,A              ; новая координата X
; вертикальная координата Y - аналогично X, но другие регистры и расстояние 189 до нижней кромки экрана
MOUPD4 LD B,#FF
      LD A,D
      IN D,(C)
;      SLA D
      SUB D
      JR Z,MOUPD8
      JP P,MOUPD5
      ADD A,H
      JR C,MOUPD7
      XOR A
      JR MOUPD7
MOUPD5 ADD A,H
      JR C,MOUPD6
      CP 189
      JR C,MOUPD7
MOUPD6 LD A,189
MOUPD7 LD H,A
MOUPD8 LD (MOUSEP),DE      ; новое положение мыши
      LD (MOUSEX),HL      ; новое положение курсора
      RET


Destr 2nd March 2010 12:00

В программе Camerton юзается вот такой драйвер:

MOUSE
LD BC,#FADF
IN A,(c)
CPL
AND 7
LD B,A
LD A,(MBUTT)
CP B
LD A,1
JR NZ,MSTRT
XOR A
MSTRT
LD (MSTATUS),A
LD A,B
LD (MBUTT),A
LD HL,(MCOOR)
LD BC,#FBDF
IN A,(C)
MOUS0
LD D,0
LD (MOUS0+1),A
SUB D
LD D,A
LD A,(MSENS)
LD B,A
OR A
JR Z,$+6
SRA D
DJNZ $-2
LD BC,(XMNMX)
LD A,D
RLA
JR NC,MOUS1
LD A,L
ADD A,D
JR NC,$+5
CP B
JR NC,MOUS2
LD A,B
JR MOUS2
MOUS1
LD A,L
ADD A,D
JR C,$+5
CP C
JR C,MOUS2
LD A,C
MOUS2
LD L,A,BC,#FFDF
IN A,(C)
MOUS3
LD D,0,(MOUS3+1),A
SUB D
NEG
LD D,A
LD A,(MSENS)
LD B,A
OR A
JR Z,$+6
SRA D
DJNZ $-2
LD A,D
LD BC,(YMNMX)
RLA
JR NC,MOUS4
LD A,H
ADD A,D
JR NC,$+5
CP B
JR NC,MOUS5
LD A,B
JR MOUS5
MOUS4
LD A,H
ADD A,D
JR C,$+5
CP C
JR C,MOUS5
LD A,C
MOUS5
LD H,A
LD BC,(MCOOR)
LD (MCOOR),HL
OR A
SBC HL,BC
RET Z
LD A,(MSTATUS)
OR 2
LD (MSTATUS),A
RET
MINIT
LD BC,#FADF
LD DE,#F000
MINI1
IN A,(C)
CPL
AND 7
OR E
LD E,A
DEC D
JR NZ,MINI1
LD A,E
OR A
JR Z,MINI2
LD A,201
LD (MOUSE),A
RET
MINI2
CALL MOUSE
XOR A
LD (MBUTT),A
LD HL,#6080
LD (MCOOR),HL
LD A,1
LD (MOUSE),A
MSTATUS DB 0; %01-изм.бат. %10-изм коор. (признак изменения состояния)
MCOOR DW #6080; Координаты мыши
MBUTT DB 0; Кнопочки 00000MRL
MSENS DB 1; Чувствительность 0-max
XMNMX DW #00FE; X-ограничитель
YMNMX DW #00BD; Y-ограничитель

Можно регулировать чувствительность крыса...


All times are GMT +4. The time now is 23:57.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.