Autor ::Libor L.A. Poslaná :: 24.07.2013 18:40:28 Predmet ::Detekce připojené disketové jednotky
Nazdar kluci, potřeboval bych poradit.
U připravovaných Lemmings bude možnost ovládání z klávesnice nebo některým z joysticků. A protože PMD-32 (je-li připojena) se připojuje do stejných portů, potřeboval bych radu. Tedy několik rad:
1) Může být PMD-32 připojena na oba porty, nebo striktně jen na GPIO0, tak jak to máte na stránkách?
2) Jak nejlépe nenápadně detekovat připojenou PMD-32 nebo její ovladač, abych zbytečně "neroztáčel" disk a test proběhl bleskově? Pokud zjistím, že je PMD-32 připojena, pak totiž nepovolím na tomto portu joystick. Hlavně to chci testovat proto, abych přepisem řídícího portu 8255-ky nezabránil pozdějšímu dohrávání sektorů prostřednictvím PMD-32.
3) S tím souvisí další věc: nastavuje si ovladač PMD-32 řídicí port 8255-ky? A pokud ano, co udělá s režimem GPIO1?
Správa
Autor ::Libor L.A. Poslaná :: 24.07.2013 18:54:34 Predmet ::Re: Detekce připojené disketové jednotky
Na dotaz ad 1) jsem našel odpověď v historii tohoto WEBu (že PMD-32 přehodit nelze). Ale ty dva ostatní body mi zůstávají záhadou.
Správa
Autor ::Roman Bórik Poslaná :: 24.07.2013 20:04:01 Predmet ::Re: Detekce připojené disketové jednotky
V hre Plotting (viď. zdrojáky) mám po spustení hry použitý tento test:
; Test, či je pripojená PMD 32 na GPIO-0.
; Pokiaľ je pripojená PMD 32 na GPIO-0, tak sa Joystick bude testovať na GPIO-1.
; Ak PMD 32 pripojená nie je, Joystick sa bude testovať štandardne na GPIO-0.
CheckPort: MVI A,0C2h ; inicializuj GPIO 8255
OUT Pio55Ctrl ; SK A: MOD 2, A-IN/OUT, SK B: MOD 0, B-IN, C03-OUT
MVI A,09h ; 1->C4 povolenie prerušovacieho signálu INTRA
OUT Pio55Ctrl ; pre vstup na porte A
MVI A,0Ch ; 0->C6 zakázanie prerušovacieho signálu INTRA
OUT Pio55Ctrl ; pre výstup porte A
LXI D,4000 ; timeout asi 100 ms
CheckPort2: IN Pio55C ; zisti stav INTRA
ANI 8
JZ CheckPort3 ; ak je INTRA=0, skoč dopredu
IN Pio55A ; precitaj prijatý byte
CPI 0AAh ; je to prezentačný byte 0AAh od PMD 32?
JNZ CheckPort4 ; nie, skoč dopredu
MVI A,1 ; PMD 32 je pripojená,
MVI B,Pio55B ; tak pre Joystick použijeme GPIO-1
JMP CheckPort5
CheckPort3: DCX D ; zniz počítadlo timeoutu
MOV A,D
ORA E
JNZ CheckPort2 ; a ak nie je nulové, vráť sa do slučky
CheckPort4: MVI A,92h ; PMD 32 zrejme nie je pripojená,
OUT Pio55Ctrl ; tak pre Joystick použijeme GPIO-0
MVI A,10h
MVI B,Pio55A
CheckPort5: OUT Pio55C
MOV A,B
STA TestJoyPort+1 ; zapíš číslo portu Joysticku
Správa
Autor ::Libor L.A. Poslaná :: 24.07.2013 20:58:01 Predmet ::Re: Detekce připojené disketové jednotky
Super, díky moc. To je asi přesně to, co jsem potřeboval. Zítra se na to mrknu.