OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 29.03.2024, 16:25

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 24 ]  Přejít na stránku Předchozí  1, 2
Autor Zpráva
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 00:07 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Jeste napad. Ovladac by mohl fungovat i bez jakychkoli srovnavacich tabulek.

Priklad:
Dve clonky vraci pri pohybu hodnoty v tomto poradi: 00,01,11,10
Kdyz s timto 2 bitovym stavem budeme pracovat jako s cislem 0-3, bylo by take mozne zjistit snadno smer pohybu. Cisla ale nejsou presne za sebou, takze stavy 11 a 10 se musi softwarove prohodit/zamenit. Pak budeme ziskavat cisla v poradi 00,01,10,11 a s tim se uz da pekne pracovat.
Vzdy by musel driver vyctenou hodnotu portu poupravit, aby s tim slo pracovat jako s citacem 0-3.
Prictenim aktualniho stavu(cisla) od predchoziho by ovladac vypocital smer.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 12:25 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1970
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
Do neceho to zabuduj, hlasim se jako tester.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 13:04 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Doda píše:
Do neceho to zabuduj, hlasim se jako tester.


Abych s tim nemel tolik prace, prevlecu hry z k-mouse na a-mouse. Driver tedy udelam tak, aby se choval jako k-mouse driver.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 13:15 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 12.05.2013, 21:39
Příspěvky: 1970
Bydliště: Praha
Has thanked: 85 times
Been thanked: 255 times
Tak jasne, vem neco co uz jsi delal.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 13:47 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Nejrychlejší by bylo použít driver s tabulkou řekněme těch 256 bajtu, ale reálně použitelný ovladač musím jít maximálně kolem 250 bajtu včetně tabulky. Takže bude potřeba ořezat tabulku na rozumné minimum a zajistit podobnou délku ovladače Amiga myši jako u k-mouse. Tím se sice zkrátí délka ovladače ale sežere více taktů CPU.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 15.06.2020, 17:57 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Tak uz jsem napsal svuj uplne prvni driver pro amiga mys. Funguje zda se dobre. Tabulka detekce pohybu ma 16 bajtu. Delka je ted nejakych 110 bajtu, ale jeste tam nemam osetreni minima a maxima pro souradnice kurzoru. Dale doplnim moznost chytreho predpokladani smeru pohybu pri rychlem pohybu mysi (kdyz driver nestihne/vynecha jeden stav clonek pri rychlem pohybu). Pak bude nasledovat optimalizace kodu a v posledni rade prace s fifo (pamet prubezne nacitanych stavu mysi)

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 16.06.2020, 02:02 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Tak, a ovladac mam hotovy. Akceptuje i stavy, kdy mysi pohybujete prilis rychle a ovladac vynecha jeden stav clonek. V tom pripade zopakuje posledni smer pohybu v dane ose. A ted me napada, ze bych v takovem pripade mel souradnici posunout rovnou 2x, kdyz uz doslo k posunu o dva stavy clonek. To jeste doplnim. Na optimalizaci zatim kaslu, az to dodelam...

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 16.06.2020, 14:33 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Hazu sem jakousi prozatimni verzi ovladace a-mouse. Trochu jsem to jeste promazal, nedivte se tem neustalym push/pop, ty ve finale snad zmizi a optimalizovane to nijak neni. XMIN a YMIN hodnoty zatim nezpracovavam, jen XMAX a YMAX. Jeden pruchod ovladacem trva asi 560 taktu CPU. Pokud bude zajem, mohu okomentovat zdrojak v cestine a detailne s vysvetlenim funkce.

Zde je spustitelny test ovladace. Bacha, je to v basicu, ktery vola ovladac asi tak 25x za vterinu, ale i tak se s tim da pomalu kreslit. Stiskem SPACE se prepnete do zdrojaku(Prometheus).
https://velesoft.speccy.cz/other/AMOUSE06-source.zip

Kód:
;A-MOUSE driver 6 - VELESOFT
;maximum in axis
;accept 2x higher mouse speed
         
NONE     equ  #FE
PLUS     equ  #C6
MINUS    equ  #D6
CONT     equ  #FF
       
         
         org  60000
         
S       
         
         jr   START
         
;cursor position
XPOS     defb 20
YPOS     defb 20
         
XMIN     equ  0
XMAX     equ  200
         
YMIN     equ  0
YMAX     equ  100
         
START   
         di   
         push af
         push bc
         push de
         push hl
         
;previous/last mouse state
OLD      ld   de,0
         
;A=current mouse state
         xor  a
         in   a,(31)
         
         ld   bc,0
         rrca
         rl   b
         rrca
         rl   c
         rrca
         rl   b
         rrca
         rl   c
;save current mousestate to old
         ld   (OLD+1),bc
         
;A=old+new state - 4bit
         ld   a,d
         rlca
         rlca
         or   b
         
         push de
         push hl
         ld   hl,TABLE
;de=offset table
         ld   d,0
         ld   e,a
;hl=table pointer
         add  hl,de
;read instruction code
         ld   a,(hl)
         
         cp   CONT
         jr   z,TT1
         
;make new instruction
         ld   (CODE),a
         
TT1     
;A=X position
         ld   a,(XPOS)
;new instruction INC/DEC/CP
CODE     cp   1
         jr   c,CODEEND
         cp   XMAX
         jr   z,CODEEND
         ld   (XPOS),a
         
CODEEND 
         
         
         pop  hl
         pop  de
         
         
         
         
;A=old+new state - 4bit
         ld   a,e
         rlca
         rlca
         or   c
         
         push de
         push hl
         ld   hl,TABLE
;de=offset table
         ld   d,0
         ld   e,a
;hl=table pointer
         add  hl,de
;read instruction code
         ld   a,(hl)
         
         
         cp   CONT
         jr   z,TT2
         
;make new instruction
         ld   (CODE2),a
         
TT2     
         
;A=Y position
         ld   a,(YPOS)
;new instruction INC/DEC/CP
CODE2    cp   1
         jr   c,CODE2END
         cp   YMAX
         jr   z,CODE2END
         ld   (YPOS),a
         
CODE2END
         pop  hl
         pop  de
         
         
         
         pop  hl
         pop  de
         pop  bc
         pop  af
         
         ei   
STOP     
         ret 
         
TABLE   
         defb NONE
         defb PLUS
         defb MINUS
         defb CONT
         defb MINUS
         defb NONE
         defb CONT
         defb PLUS
         defb PLUS
         defb CONT
         defb NONE
         defb MINUS
         defb CONT
         defb MINUS
         defb PLUS
         defb NONE
         
LEN      equ  $-S

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Navrat A-MOUSE
PříspěvekNapsal: 16.06.2020, 18:39 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1612
Has thanked: 31 times
Been thanked: 357 times
Na rychle odzkouseni ovladatelnosti prikladam nejake snapshoty puvodniho softu pro A-MYS. Snapy proto, ptotoze treba Black Raven pro A-MYS existuje jen ve verzi pro +D a jeste na dve diskety, takze jen nahrat tuto hru je opruz. Tady je to bez prace, spustite snap a ovladate hru mysi.

https://velesoft.speccy.cz/other/AM-snaps.zip

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 24 ]  Přejít na stránku Předchozí  1, 2

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 6 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz