lnxspectrum:kempstonmouse
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
lnxspectrum:kempstonmouse [2015/11/30 22:31] – lanex | lnxspectrum:kempstonmouse [2021/01/28 23:45] (aktuální) – [Kempston Mouse] lanex | ||
---|---|---|---|
Řádek 10: | Řádek 10: | ||
Na tomto portu není absolutní pozice 0-vlevo, 255-vpravo, ale poziční přírůstek. Pokud se myší posuneme například o 20 pixelů doprava, zvýší se sice hodnota na portu o 20, ale také může přetéct. To znamená, že pokud předchozí hodnota byla 250, přeteče a nová hodnota bude o 20 větší - tj. 14. ZX rutina s tím musí počítat. Naopak díky tomu nejsme omezeni na posuv jen v rozmezí 0-255. To platí samozřejmě i pro posuv vlevo, nahoru a dolů. | Na tomto portu není absolutní pozice 0-vlevo, 255-vpravo, ale poziční přírůstek. Pokud se myší posuneme například o 20 pixelů doprava, zvýší se sice hodnota na portu o 20, ale také může přetéct. To znamená, že pokud předchozí hodnota byla 250, přeteče a nová hodnota bude o 20 větší - tj. 14. ZX rutina s tím musí počítat. Naopak díky tomu nejsme omezeni na posuv jen v rozmezí 0-255. To platí samozřejmě i pro posuv vlevo, nahoru a dolů. | ||
===Tlačítka (Port 64223)=== | ===Tlačítka (Port 64223)=== | ||
- | Levé tlačítko je na bitu 0, pravé je na bitu 1. Hodnoty jsou negativní, tedy pokud není tlačítko stisknuté, je hodnota 1, pro stisknuté je hodnota 0. | + | Levé tlačítko je na bitu 1, pravé je na bitu 0 (Cože? Bohužel ano.). Hodnoty jsou negativní, tedy pokud není tlačítko stisknuté, je hodnota 1, pro stisknuté je hodnota 0. |
====Čtení pozice myši na obrazovce pomocí assembleru==== | ====Čtení pozice myši na obrazovce pomocí assembleru==== | ||
< | < | ||
Řádek 17: | Řádek 17: | ||
org 60000 | org 60000 | ||
- | ; Zinicializujeme myš doprostřed obrazovky | + | ; Zinicializujeme myš na pozici na obrazovce, kterou chceme |
+ | ld a, | ||
+ | ld (MouseX), | ||
+ | ld a,96 | ||
+ | ld (MouseY), | ||
call Mouse_init | call Mouse_init | ||
Řádek 27: | Řádek 31: | ||
; Tady jen zobrazíme hodnoty X, Y a tlačítka myši ve VideoRam, aby byly vidět hodnoty | ; Tady jen zobrazíme hodnoty X, Y a tlačítka myši ve VideoRam, aby byly vidět hodnoty | ||
ld a, | ld a, | ||
- | ld (16384), | + | ld (16384), |
ld a, | ld a, | ||
- | ld (16386), | + | ld (16386), |
ld bc, | ld bc, | ||
in a,(c) | in a,(c) | ||
- | ld (16388), | + | ld (16388), |
jr smy ; | jr smy ; | ||
- | ; Tady začíná rutina pro aktualizaci pozice myši | + | ; Tady začíná |
Mouse_init: ld bc, | Mouse_init: ld bc, | ||
in a,(c) | in a,(c) |
lnxspectrum/kempstonmouse.1448919072.txt.gz · Poslední úprava: 2018/07/31 10:04 (upraveno mimo DokuWiki)