Pro ukázku použití VBI jsem vyrobil assemblerovský program JOYVBI, který je driverem (ovladačem) joysticku.
Po načtení do paměti a jeho spuštění A=USR($7000) se v levém horním rohu obrazovky objeví šipka. S touto šipkou lze pohybovat joystickem. Protože tato rutina běží ve VBI, můžeme nezávisle na ní provádět jiné činnosti (třeba spustit BASICovský program). Aby to všechno mělo význam, sledováním následujících adres získáme informace:
$6FFD .. x-ová souřadnice šipky (0 až 255, platná oblast 48 až 207) $6FFE .. y-ová souřadnice šipky (0 až 255, platná oblast 32 až 223) $6FFF .. tlačítko (0..puštěné, 1..stlačené)
VBI rutina funguje tak, že sleduje joystick a podle něj mění příslušné souřadnice. Na tyto souřadnice vykresluje šipku (používá PMG). V okamžiku stlačení tlačítka šipka změní barvu a je znemožněn její pohyb. To je kvůli BASICu, aby měl čas převzít momentální souřadnice a provést žádanou akci. Až je BASIC hotov, vynulováním adresy $6FFF opět šipku uvolní.
Tyto adresy ale můžete též měnit sami a tím umístit šipku na požadované místo (POKE $6FFD,X a POKE $6FFE,Y) nebo zakázat její pohyb (POKE $6FFF,1).
Takže hlavní část BASICu může vypadat třeba takto:
100 POKE $6FFF,0 110 IF NOT PEEK($6FFF) THEN 110 120 X=PEEK($6FFD)-48:Y=PEEK($6FFE)-32 130 IF X<0 OR X>159 OR Y<0 OR Y>159 THEN 100 140 COLOR 1:PLOT X,Y 150 GOTO 100
Popis:
100 Inicializace. Umožnění pohybu šipky.
110 Program zůstává na tomto řádku, dokud není stlačeno tlačítko.
120 Přepočet souřadnic na obrazovkové souřadnice.
130 Jestliže jsou mimo povolený rozsah, skok zpět, (na ř.100) povolení pohybu šipky, atd.
140 Vlastní akce pro bod X,Y.
150 Přechod na ř.100. Tam bude znovu povolen pohyb šipky, atd.
Pro ukázku použití rutiny JOYVBI.OBJ (t.j.přeložený program JOYVBI.LM), jsem vyrobil jednoduchý grafický editorek (GREDIK.TBA). Má jen pár funkcí, ale využití VBI pro kurzor ve tvaru šipky ho dělá zajímavějším. Taktéž nezanedbatelným faktorem je značné zjednodušení samotného BASIC programu, který už se nemusí o pohyb joysticku vůbec starat.
Technické údaje:
Rutina JOYVBI.OBJ je umístěna od adresy $7000 a používá paměť od $6FFD až do $74FF (v tom je zahrnut i PMG prostor).
Nezapomeňte, že před samotným voláním A=USR($7000) musíte rutinu nahrát do paměti (BLOAD"D:JOYVBI.OBJ")!!!