AMIGA REVIEW obsah časopisu online!
  Domov     Software     Hry     Obaly     Download  

„NO SYSTEM“ programování aneb jak si vše udělat sám

Radim Ballner

Mnozí z vás jistě už tuší, o čem tento článek (resp. seriál) bude. Přesto bych trochu vysvětlil o co jde, proč se tím budeme zabývat a co za informace zde naleznete.
Na úvod bych chtěl ještě podotknout, že příklady budou psány v assembleru (AsmOne nebo TrashmOne) a tudíž aspoň základní znalosti tohoto jazyka budou nutností (nebudeme se zde zabývat objasňováním, co která instrukce dělá).

Co je to?
Takže co to je to „NO SYSTEM“ programování? Jedná se o programování bez použití systému, všechny věci si musíte udělat sami. To znamená, chcete-li například zobrazit něco na obrazovce, tak nepoužijete grafickou knihovnu (popř. intuition), ale naprogramujete přímo registry pro zobrazování (viz obrázek).

Co v tomto seriálu naleznete?
V tomto čísle si povíme něco na úvod a objasníme si některé důležité pojmy (vše zatím jen teoreticky). V dalších číslech se budeme zabývat Copperem. hracím polem, Blitterem, Sprity, Interrupty a nakonec se podíváme nu to, jak se pracuje s AGA čipy (ke každému tématu bude vždy zveřejněn nějaký program na Cover disku v adresáři NO SYSTEM). Pokud budete mít nějaké dotazy či nejasnosti, pak se nestyďte, s chutí napište do redakce, a já na nejčastější otázky odpovím v článku (pokud budu odpověď znát).

Zákaznické obvody
Mnozí z vás jistě už slyšeli o tom, že Amiga má v sobě zákaznické obvody (angl. CUSTOM CHIP SET). Co to jsou ony zákaznické čipy? Jsou to integrované obvody, které byly speciálně vyvinuty pro Amigu, a starají se o různé druhy činnosti a tím ulehčují práci mikroprocesoru. Mezi jejich funkce např. patří přehrávání samplů, zobrazování, práce s disketovými jednotkami, ovládání portů pro joystick, sériové rozhraní... Jak se to všechno děje si teď stručně povíme.
Nejdříve se podívejme na paměť. Na Amigách se vyskytují dva druhy RAM paměti: CHIP RAM a FAST RAM (na A500 to byla ještě navíc tzv. FAKE-FAST, která se zastrkovala zespodu do počítače a většinou měla velikost 0.5 MB). Čím se od sebe liší? CHIP RAM je základní paměť se kterou už počítač koupíte (na A1200 2MB, na starých A500 to bylo 0.5 MB). Do této 24-bitové paměti mají přístup právě ony zákaznické obvody a samozřejmě také mikroprocesor. A protože v této paměti má mikroprocesor menší prioritu (např. aby nedocházelo k chybám, při zobrazování či přehrávání samplů), tak zde pracuje pomaleji než ve FAST RAM (asi 2-3 krát). Velikost této paměti je omezena typem zákaznických obvodů. Ve starých A500 dokázaly čipy adresovat pouze 0.5 MB, novější pak 1 MB (pokud jste tento typ měli v A500, pak šlo celkem jednoduše předělat 0.5 FAKE-FAST na CHIP a tím mít 1 MB CHIP RAM). U AGA čipů se používá 2MB CHIP. Tato paměť je adresovaná od adresy 0 a tvoří celistvý úsek. Ve FAST RAM naopak nemůžou fungovat zákaznické obvody a tudíž zde mikroprocesor nemusí čekat a může pracovat rychleji.
Bohužel do normálních A1200 se nedá tato paměť dát přímo, ale je potřeba jakéhosi „interfejsu“ - např. na turbokartách je většinou vyhrazena patice pro simm(y). Teď se dostáváme k tomu, proč zákaznické obvody ulehčují práci mikroprocesoru. Je to tím, že skoro všechny operace zákaznických obvodů jsou dělány pomocí DMA (zkratka z anglického Direct Memory Acces = přímý přístup do paměti). Co to znamená? Jednoduše řečeno - pomocí mikroprocesoru řekneme zákaznickým obvodům, co mají dělat a ony začnou pracovat a mikroprocesor můžeme použít na něco jiného. V tom právě spočívá velká výhoda používání DMA - mikroprocesor a zákaznické obvody pracují současně. Obecně pro používání DMA platí tento postup:
1. zjištění neprobíhá-li na našem DMA kanálu přenos (pokud ano, měli bychom počkat dokud neskoná)
2. nastavení ukazovátek pro DMA přenos
3. specifikace přenosu
4. povolení DMA
5. odstartování DMA
Na Amigách nemáme pouze jeden DMA kanál, ale hned několik - pro BIPLANY, COPPER, 4*AUDIO CHANNEL, BLITTER, SPRITES, DISK. Všechny tyto kanály mohou běžet nezávisle, což např. znamená, že vidíme obraz k tomu nám hraje hudba a kopírujeme data z diskety. Toto vše lze dělat zároveň a přitom mít mikroprocesor volný pro sebe (berte to samozřejmě s rezervou, protože toto by platilo pouze v tom případě, když byste si přehrávali sampl a z diskety byste četli nerozkódované duta). Ještě malá poznámka k bodu 5. Často se setkáte s pojmem STROBE registr. V podstatě je to obyčejný registr, ale pokud na něj přistoupíte (čtení/zápis závisí na daném registru), tak odstartujete určitou dávku (např. DMA přenos). Pokud se někomu DMA nelíbí může dělat většinu věcí pomocí mikroprocesoru. Řízení DMA a zákaznických obvodů se děje pomocí registrů, které začínají na adrese CUSTOM=$dff000. Co který registr znamená a jak ho použít si u těch nejdůležitějších řekneme později.
Ke všem těmto vyjmenovaným oblastem se ještě vrátím v dalších číslech, kde si je rozebereme podrobněji, popíšeme jejich činnost a ukážeme si, jak je použít v praxi. Všechny dále uvedené informace se budou (pokud nebude uvedeno jinak) týkat původních OCS čipů (ze staré dobré A500), poněvadž AGA čipy jsou pouze vylepšené a rozšířené verze OCS. To znamená, že to co napíšete pro staré čipy bude fungovat i na Amize s AGA sadou.
Tak to bychom zdárně zvládli úvod a příště se podíváme, jak zobrazit na obrazovce nějaký obrázek.

Toto je kratičké vysvětlení pojmů, se kterými jste se v tomto textu mohli setkat, ale většinu si probereme v následujících dílech ještě podrobněji.
COPPER - je koprocesor, který může zapisovat pouze do oblasti CUSTOM a tím např. obnovovat registry pro zobrazování. Má pouze tři instrukce: MOVE, SKIP, WAIT. Popisem copperu (instrukce, použití) se budeme zabývat později.
AUDIO CHANNEL - Amiga má čtyři 8-mi bitové zvukové kanály, které jsou po dvojicích vyvedeny i na zadní straně počítače. Lze dosáhnout přehrávací frekvence až kvality CD.
BLIITER - je výkonná součástka, která umí pracovat z pravoúhlými oblastmi paměti. To není nic jiného než obrázky. Umí kopírovat a při tom provádět logické operace, kreslit čáry a vyplňovat oblasti. Díky němu patří (patřila) Amiga mezi špičky v oblasti počítačových her, protože blitter umožnil pracovat poměrně rychle s grafickými daty (dnes je to poněkud horší, poněvadž se používají texturované vektory a tuto činnost blitter neumí. Navíc blitter nebyl zrychlován, takže pracuje stejně rychle na A1200 i na A500, a proto také i s turbo kartou trvá překreslení oken ve workbenchi stejně dlouho jako bez ní).
BITPLAN - neboli bitová plocha. Jejich počet určuje počet použitelných barev na obrazovce (počet barev = 2^n, kde n je počet bitplánů). Bitplány musí být uloženy v CHIP RAM a udávají vlastně, co je právě na obrazovce. Data jsou v nich organizována následovně (viz. obr. - na 0. pozici v bitplánu 0 je nula (je to vlastně 7. bit 0. bytu 0. bit, na 0. pozici 1. bitplanu je jednička atd. Podle počtu bitplanu dostaneme binární číslo, které určuje barvu. Na našem obrázku to je kombinace 101 tj. číslo 5, takže máme jeden bod barvy pět).
DISK DMA - kanál pro disketové jednotky (musíme nejdříve zvolit jakou). Tímto tématem se budeme pravděpodobně zabývat až úplně na konci našeho seriálu a při té příležitosti si řekneme něco o MFM kódování.
SPRITE - Sprites jsou malé grafické objekty, které se zobrazují ještě před bitplany (např. myš je sprite) - samozřejmě lze nastavit prioritu, takže nemusí být před bitplany. Šířka spritu je 16 bitů a výška neomezená. Těchto spritů je 8 a mají 4 barvy. Později si řekneme, jak udělat 16-ti barevný sprite a jak zobrazit jeden sprite několikrát na obrazovce.

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

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )