Chodníčkem blíž, cestičkou spíšJan Petkov
Od dob starých dobrých osmibitů snad nebyla žádací jiná platforma v takové
oblibě u programátorů v assembleru jako naše Amiga. Nebylo to ovšem zapříčiněno
pouze intuitivním programováním procesorů MC680x0, ale také jejich pomalostí.
Mále-li úmyslu konkurovat intelovským paticím žhaveným na stovkách MHz, nezbývá
než šlápnout chudákovi Motorolce trochu na krk. A výsledek se brzy dostaví -
Guru Meditation se stane naším důvěrným společníkem. Aby těch červených okýnek a
blikajících ledek bylo co nejméně, připravil jsem si pro vás několik doporučení
a rad od samotných vývojářů starého dobrého Commodoru, budiž, jim platforma
lehká. Používejte funkce operačního systému všude kde je to možné. Když už to jinak
nejde, tak použijte znovu operační systém a teprve pak uznáte-li to za vhodné,
přistupujte přímo k hardwaru Amigy.
Neskákejte do ROMky. Přesněji řečeno - nenechte svůj soft skákat do ROMky.
Nevěřte žádnému programu, který podniká nekalé výpady na území $F80000 až
$FFFFFF. Toto rozmezí je rezervováno pro paměť ROM, která se mění rychleji než
názory politiků. Taky vám nikdo nezaručí, že tam ROMka opravdu bude. Pro
komunikaci s ROMkou máte k dispozici knihovny, devices a resourees.
Nesnažte se modifikovat nebo spoléhat na kteroukoli privátní strukturu systému,
narazíte. Toto varování zahrnuje i copper-listy, memory-listy a báze knihoven.
Jen šílenec ve svěrací kazajce a nezkušený coder může spoléhat na některou z
pevných adres, strukturu nebo paměť. S každou novou verzí systému se všechno
radikálně, dynamiky a neuvěřitelně mění. Jediná jistota v sypkých píscích pouště
ADOSu je adresa $4, kde sídlí ukazatel na bázi „exec.library“. Ale ani za to
bych Amigu do ohně nedal.
Pamatujte na to, že všechna data vyžadující DMA musí sedět v CHIP paměti (týká
se grafických dat, samplů, trackdisk buferu a copperlistů!). Pro ty méně zkušené
programátory v assembleru připomínám direktivu „SECTION“, která vám dovolí
rozhodit části programu do různých typů pamětí (např.: „SECTION MůjProgram,
CODE_C“ přesměruje následující kód do CHIP-RAMky).
Neexperimentujte se zákaznickými chip registry (od adresy $DFF000)! Občas vám
může některá z adres sloužit za generátor náhodných čísel, příště však bude
dobrá jen pro generování náhodného GURU meditation. Pokud není daná adresa někde
publikovaná, zanechte ji svému osudu jako buchtičku v tanečních. Nejsou-li
některé bity v registrech využity, nulujte je při zápisu a ignorujte při čtení.
Netlačte data za aktuální konečnou adresu zákaznických chip registrů, je jen
otázkou času, kdy se právě na tom místě objeví něco nového a pro vaše
mírumilovní data velmi nepřátelského.
Každý ze zákaznických chip registrů je utčen buď pro čtení nebo pro zápis,
nezapisujte do registrů pro čtení a nečtěte registry pro zápis. Nehrajte si s
nimi jako kočka s myší.
Ani koutkem oka nešilhejte do nedefinovaných oblastí paměti, mohli by se vám
zjevit velmi nepěkné věci.
Při volání funkcí systému jsou obnoveny všechny registry kromě D0-D1/A0-A1. V D0
je navrácen výsledek pro test úspěšnosti funkce (v A6 je báze knihovny).
Hardware Amigy si nerozumí s instrukcí TAS, bude jen dohře když ji vypustíte ze
slovníku spisovných instrukcí. TAS je možno nahradit instrukcemi BSET echo BCLR.
Na strobovací adresy (např. COPIJMP) nepouštějte CLR! U staré dobré 68000 má
instrukce čtecí a nulovací cyklus, u novější řady procesorů jen nulovací. Kromě
toho je MOVE přeci jenom rychlejší.
Ve svých programech nepoužívejte instrukce, které jsou na daném procesoru
privilegované (jako je „MOVE SR,<ca>“), místo nich zneužijte systém („GetCC()“).
Při adresaci předpokládejte vždy plnou 32 bitovou adresu.
Až bude váš program napsaný a náhodou bude chodit, nezapomeňte jej otestovat na
co nejvíce konfiguracích, však vás ten optimismus přejde... Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|