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
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
|