JOYSTICK
Tato kapitola se věnuje obsluze joysticku.
Joystick se připojuje vzadu na rozšiřující liště. Přes povel
IN A,(F0H) se do akumulátoru ukládá informca zda se s joystickem
hnulo nebo ne. Je možné zjistit zda bylo s joystickem pohnuto
do osmi různých směrů. Přitom dává joystick při nestisknuté
klávese pro střelbu následující hodnoty:
nahoře
FAH FEH F6H
vlevo FBH FFH F7H vpravo
F9H FDH F5H
dole
Nyní hodntoy při stisknuté klávese pro střelbu:
nahoře
EAH EEH E6H
vlevo EBH EFH E7H vpravo
E9H EDH E5H
dole
Bitový vzor akumulátoru se dá rozluštit,aby se dalo
zjistit, jestli se s joystickem hnulo nebo ne.
Bit 0 :obsahuje 0 , když se s joystickem hnulo nahoru
bit 1 : " 0 , " " " " dolů
bit 2 : " 0 , " " " " doleva
bit 3 : " 0 , " " " " doprava
bit 4 : " 0 , " " stiskne klávesa pro střelbu
bit 5 - 7 " vždy 1
Když je tedy stisknuta klávesa pro střelbu a joystick
je tlačen doleva, jsou bity 2 a 4 nastaveny na 0, ostatní
jsou v 1. Potom vychází následující vzor bitů : 11101011 = EB
hexadecimálně ( viz. tab.). Potom napíšeme ještě program,
který analizuje joystick z Basicu. Musí být vyvolán povelem
USR ($5700).
Na následujících adresách jsou obsaženy hodnoty pro pohyb joysticku:
5800H: hodnota pro joystick nahoru 1=nahoru 0=neobsaženo
5801H: " " " dolů 1=dolů 0= "
5802H: " " " doleva 1=doleva 0= "
5803H: " " " doprava 1=doprava 0= "
5804H: " " klávesu střelby 1=stisk. 0=nestisknuto
Nyní tedy příslušný program, který musí být vyvolán jako podprogram ve strojovém jazyce:
5700 DB F0 IN A,(F0H) ;hodnota z joy. 1
5702 2F CPL ;komplementace hodnoty
5703 21 FF 57 LD HL,57FFH
5706 06 05 LD B,06 ;smyčka pro 5 hodnot
5708 23 INC HL
5709 F5 PUSH AF ;zachraň akumulátor
570A E6 01 AND 01
;maskování posledního bitu
570C 77 LD (HL),A
570D F1 POP AF
570E 0F RRCA ;otáčej akumulátor
570F 10 F7 DJNZ 5708
5711 C9 RET
Samozřejmě mohou být volány 2 joysticky. Princip volání
druhého joysticku je analogický k volání prvního joysticku.
Ale místo port F0H musí být použit port F1H.