Tento příspěvek (nebo spíše příspěveček :-) se věnuje problému tzv. jemného rolování obrazu při výpisech na obrazovku. Už v základní "Uživatelské příručce", dodávané k počítači Atari, je v kapitole "Obrazový editor" (str.122, 123) popsána m.j. i funkce adresy 622. Už z textu zde uvedeného jasně plyne, že ani sám pisatel nepochopil správně efekt, který má být důvodem pro její použití.
V příručce se uvádí:
622 listing 0 - normální 255 - pomalý
Tak zaprvé, při ukládání hodnoty na tuto adresu se rozeznává pouze "nulová" a "nenulová" , takže místo 255 tam můžete uložit jakékoli nenulové číslo (to je však jenom detail).
Podstatné ovšem je, že onen výklad "pomalý" znamená ve skutečnosti "jemný".
I já sám jsem kdysi dávno při testování této adresy poznamenal, že její nastavení k ničemu není, obzvláště když jsem si přečetl, že by měla být vhodná pro listování dlouhých programů. Cukalo to totiž stejně, akorát že pomaleji. Obávám se, že takto pochopilo funkci této adresy hodně ataristů. Pokud mezi ně patříte, budete překvapeni.
V OS počítače Atari totiž je a funguje rutina pro jemné rolování. Pracuje ovšem jen s řádky, které mají v DisplayListu nastaven bit 5. Toto nastavení však nemusíme dělat ručně, ale opět je v OS. DisplayList bude upraven prvním povelem GRAPHICS po nastavení adresy 622 nenulovou hodnotou.
Takže veškerý "fígl" jemného rolování spočívá v tomto:
POKE 622,1:GRAPHICS 0
Zkuste si sami odeslat v BASICu tento řádek a pak odrolovávat. Teď už snad souhlasíte, že jde o jemné rolování, ne?!
Jenom Vás musím upozornit, abyste v okamžiku testování této funkce měli "vyčistěnou" paměť. Jinak budete mít nejspodnější řádek pokryt nějakými znaky. Vyplývá to z vnitřní architektury ANTICu (mikroprocesor pro zobrazování a GTIA) - Nebudu se zde rozepisovat podrobně o důvodech, proč to tak je, neboť tato problematika je na vysvětlení složitější.
Demonstrační prográmek FINE.COM vypadá v assembleru takto:
10 ;FINE.MAC 20 .OPT NO LIST 30 *= $2000 40 RUN 50 LDA #1 60 STA 622 70 JMP (10) 80 ; 90 *= $02E0 100 .WORD RUN ;startovací adr.
Princip:
Provede se naplnění adresy 622 hodnotou 1 a volá se DOS, který při své inicializaci sám zajistí zavolání GRAPHICS 0.