AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Kniha návštev     Amiga na PC     Amiga Forever  

PROGRAMOVÁNÍ V SYSTÉMU


Ahoj všichni amigisti, amigistky a amigistčata! Jistě jste už někdy přemýšleli nad tím, že váš superstroj by se dal použít i lecčemu jinému než nepřetržitému sledování dem, kopírování her a zuřivého gamesení. Někteří z vás již určitě došli až tak daleko, že začali uvažovat i o programování, nebo dokonce o programování v assembleru. Jenže ouha, nedostatek literatury a dokumentace assembleru a operačního systému u nás je natolik katastrofální, že většina takovýchto aktivit končívá neslavně. Avšak nezoufejte, právě přichází vaše záchrana - kurz systémového programování v assembleru pro Kickstart 1.3 - 3.0.

Kurs vás bude postupně provázet operačním systémem, jeho knihovnami, funkcemi apod. Assembler MOTOROLY jako takový nebude popisován příliš podrobně, jelikož souběžně s tímto seriálem vychází ještě kurs samotného assembleru. Tento seriál by se měl zabývat především systémovým programováním a použitím systémových funkcí ve vašich programech, a to nejen pro assembler, i když většina příkladů bude v assembleru. Ovšem, pokud má někdo dojem, že je zbytečné se učit assembler a že systémově programovat může i ve vyšších jazycích, má samozřejmě pravdu - jenže s malinkou výhradou: Ačkoliv se to nezdá, systémové programování v assembleru je skoro totéž. Všeobecně rozšířený názor, že jakmile člověk použije assembler, všechno je sice kratší a rychlejší, ale neúměrně pracnější a složitější, operační systém amigy do jisté míry vyvrací. Je natolik komplexní a má tolik funkcí, že v samotném assembleru (obzvláště použijeme-li makra) píšete jednoduché minimum. Takže, i pokud se na assembler skutečně necítíte a chcete začít na amize s něčím jednodušším (k čemuž skutečně nemáte důvod, ale budiž po vašem), tento kurs bude pro vás naprosto stejným přínosem jako pro assembleristu. Ted se ovšem nabízí otázka, kterou mnozí z vás mají jistě již nějakou dobu na jazyku: Proč vlastně programovat systémově? Ano, ano, správná otázka. V dobách ZX-Spectra, kdy "operační systém" obsahoval pouze velice základní služby jako třeba vypsání znaku, vykreslení čáry nebo kružnice, přičemž tyto služby nebyly příliš kvalitní (zejména z důvodů rychlosti), nebyl k používání těchto služeb jediný důvod (snad pouze neschopnost napsat si rutiny vlastní). Bohužel, spousta kvalitních programátorů žije v představě, že tyto doby ještě zdaleka neskončily, tudíž není důvod používat OS i nadále, a prvních několik instrukcí jejich programů operační systém zakazuje (v horším případě naprosto zničí). Někdy je to pouze z toho důvodu, že nemají přístup k sebemenší dokumentaci automaticky předpokládají, že služby OS jsou k ničemu anebo je jich mizivé množství, případně obojí jako je tomu u systému MS-DOS a BIOS na PC. (Poznámka: MS-DOS neobsahuje ani rutinu na vykreslení bodu nebo čáry, ani základní matematické funkce, o dalších důležitých věcech ani nemluvě). Ale abychom neodbočovali, rád bych zde uvedl několik základních důvodů, proč je lepší používat služby OS tam, kde je to možné:

1. Proč ne ?
OS Amigy nabízí rutiny na téměř všechno, co vás napadne, že by obsahovat mohla ještě dvakrát tolik funkcí navíc, o kterých jste možná vůbec netušili, že by mohly existovat a k něčemu sloužit avšak zjistíte, že jsou naprosto geniální. Je mnohem jednodušší používat dejme tomu rutinu na vykreslení objektu na pozici X,Y než si ji napsat sám. Navíc, většina funkcí OS je napsána velmi efektivně a rychle, většinou lépe, než byste je napsali vy tak proč je nepoužít? Stačí mít jen správnou dokumentaci. Skutečně JEDINÁ výjimka, kdy je smysluplné používat na všechno vlastní rutiny a zakazovat systém jsou dema, což je však zvláštní případ, kdy je skutečně potřeba vložit celý výkon počítače do jedné věci. Ovšem i správné demo by mělo spolupracovat s OS alespoň na tolik, aby se po jeho ukončení OS nezničil a opět spustil, což už samo o sobě vyžaduje jisté znalosti o OS.

2. Multitasking
Jedna z největších výhod amigy oproti ostatním počítačům, kvalitní preemptivní multitasking na ROM-systémové úrovni, využívající tzv. virtuální obrazovky, kdy každá úloha může mít svou vlastní obrazovku ve vlastním rozlišení s vlastní paletou a počtem barev. Jakmile začnete používat vlastní rutiny a přístup na hardware, musíte multitasking zakázat - což je něco podobného, jako kdybyste dejme tomu zrychlili auto o 10% za cenu vyházení sedadel a zničení interiéru. Již existuje spousta her, která dokazuje, že to jde i s multitaskem - a jak krásně! (např. Megaball, MissileCommand, Hextris ...). Nebojte se, jestli dočtete a pochopíte všechny slily seriálu, zvládnete to taky!

3. Hardware a kompatibilita
Můžete mít jen velice minimální znalosti hardware amigy, abyste mohli systémově programovat - OS používá hardware sám, a to velmi efektivně. Jako příklad uvedu situaci, která byla již popsána výše - vykreslení čáry. Tam jste viděli, jak je jednoduché vykreslit čáru pomocí systémové funkce, přičemž systém automaticky naprogramuje a použije blitter (grafický koprocesor amigy) na její vykreslení. Pokud byste chtěli napsat takovou rutinu sami, výsledek by byl: o něco málo rychlejší rutina, díky tomu, že by byla méně univerzální, mnohonásobný čas vynaložený na naprogramování této rutiny, zakázaný multitasking a nezaručená kompatibilita. Ano, jelikož hardware Amigy se postupem času mění (kupodivu!), programování starého hardware na novém nemusí fungovat (a velmi často také nefunguje), takže vaše rutina by například vůbec nemusela fungovat na AGA čipech, pokud byste ji psali pro čipy staré. Naproti tomu když použijete rutinu systémovou, programování je nejen jednodušší, ale také se zárukou kompatibility.

4.Nové systémy
Tady začneme příkladem: Představte si nesystémový program na A500, který používá rozlišení 640x512 interlace, ano, přesně to, na co se skoro nedá dívat, ale nedá se nic dělat, charakter programu toto rozlišení prostě vyžaduje. Představujte si dál, koupíte si novou Amigu 1200 s VGA monitorem a libujete si nad systémovými obrazovkami 640x512, na VGA krásně neblikajícími. Nyní spustíte náš program, a zhrozíte se - místo toho, aby jeho 640x512 bylo krásně neblikavé, nejenže bliká, ale navíc jsou na obrazovce pouze rozsynchronizované nesmysly, protože staré zobrazovací režimy s řádkovou frekvencí 15 kHz VGA monitor zobrazovat prostě neumí. Takže nám zbývá pouze jediné - koupit minimálně dvakrát dražší multiscan monitor, a přesto nadále lamentovat nad blikajícím interlace. A to, víte proč? Jen a jen kvůli tomu, že programátor považoval za vhodnější napsat program, který ignoruje operační systém a programuje si hardware sám. Ale dál, budeme pokračovat. Znáte program MandelMania? Že ne? Nevadí, pro vás, kteří ho neznáte lehce shrnu, že je to program na vykreslování zajímavých fraktálových obrazců, napsaný plně systémově. (ano, díky tomu mi momentálně mimo jiné na této amize, na které píšu tento článek běží i MandelMania).Co je na tom zvláštního? Máte pravdu, vcelku nic. Až na to, že je to program, který je psán pro A500/A500+, pro OS 1.3 nebo 2.0, pro staré čipy. Tedy o AGA čipech nebo OS 3.0 neměl autor ani tušení. Nicméně, na zobrazovací režim a počet barev si vyvolává systémový requester, a na vykreslování obrazců používá taktéž systémové rutiny. To má za následek jednu zajímavou věc - spustím si program na své A1200 s multiscan monitorem a při volbě rozlišení a počtu barev mi program nabídne mimo jiné i mód VGA, 640x512, 256 barev, tedy mód bez AGA čipů a OS 3.0 nemyslitelný. Jak to? Takto. Nenabízí mi ho program, ale systém. Program se stará pouze o výpočet, systém se stará o rozlišení a správné vykreslování. Doufám, že si dovedete představit, že kdyby program byl nesystémový, byl by sice možná o pár procent rychlejší, ovšem znemožnil by mi multitasking, musel bych pravděpodobně vypnout AGA čipy, a jeho výsledky by byly oproti systémovému nepoužitelné. Pokud to uvedu do extrému, tak kdybych měl A4000 s grafickou kartou (řekněme třeba Picasso), zobrazím si MandelManií fraktálky třeba v rozlišení 1024x768x256 barev, nebo i v lepším, i když autor o nějaké kartě neměl sebemenší tušení..
A navíc ... Dost. Stačí. Mohl bych uvést ještě spousty důvodů, proč je výhodné používat operační systém, pokud to jde, ovšem časopis nemá neomezeně stránek a nebylo by možná zas tak úplně od věci začít se samotným kursem... Shrneme si tedy, o čem všem se (nejméně) dozvíte a co se naučíte v našem kurzu:
Postupně si projdeme operační systém amigy, vysvětlíme a na příkladech ukážeme jak funguje multitasking, zařízení, procesy, knihovny .. atd. Uděláme si základní představu o assembleru 68000/20, ukážeme si nové funkce systémů 2.0 a 3.0 oproti 1.3 a napíšeme spousty a spousty systémových programů...
Budeme pracovat většinou s assemblerem TrashMOne 1.6 nebo AsmOne 1.26, což jsou téměř identické programy a pokud neseženete žádný z nich, pravděpodobně se objeví na našem budoucím CoverDisku.
Takže se s vámi těším na další pokračování v příštim čísle - konec řečí, začneme programovat !

Vytlačiť článok


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


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 )