| Tutorials: AMOS Tutorial I | |||
|---|---|---|---|
| by ®eljko DRA©ČIĆ a.k.a. Furesti | drascic@etfos.hr | ||

AMOS.... A sto je to?
Pa.. Amos je ukratko jos jedna verzija sveprisutnog Basica a njih je u Amiginoj povijesti bilo mnogo pocevsi od orginalnog Microsoftovog ( da, da i nekad je i Microsoft programirao za Amigu i ako je sudeci prema ovom uratku hvala Bogu pa je prestao) preko svojevremeno popularnog GFA Basica pa do najnovijeg Blitz Basica II (ciju ucionicu mozete takode pratiti na stranicama Amiga STORMa). No da neduzim, tamo negdje pred kraj osamdesetih po uzoru na STOS programski jezik s Atarija nastao je prvi Amos Basic. Dolazio je na tri diskete (jedna programska i dvije s primjerima), imao grozan editor (koji se rusi na svemu sto se nezove A500) i omogucavao programiranje igara ljudima kojima to do pojave Amos-a nije padalo na pamet posto su bili C i Asm. nepismeni a u to vrijeme to je znacili da se bili osudeni na igranje, crtanje i pisanje modula... o programiranju igara nije bilo ni rijeci...I tada se pojavio Amos... u osnovi Basic kojeg su znali svi prosiren sa skupom naredbi za baratanje slikama (.IFF), kreiranjem i iscrtavanjem i animaciju Spriteova i BOBova( Bliter OBjects), te za glazbu (koristio je vlastiti .ABK format ali je bio i prilozen program za konverziju .MOD datoteka u .ABK) i samplove (takoder je koristio .ABK i da, bio je prilozen program koji bi standardne samplove prebacivao u Amos BAnk fileove). I nakraju kao najvaznije (za igre) omogucavao je uzasno jednostavan Double Buffering koji je iskljucivao ono blesavo titranje kad micete neki 2D objekt po ekranu...
U osnovi imao je dobru ideju, programi su bili pristojne brzine (za jedan Basic... probajte napisati program u QuickBasic na Pc-u i isti program u Amos u da se tice 2D grafike pa cete vidjeti o cemu pricam), i prilicno se brzo rasirio te postao defacto najlaksi programski jezik za pisanje igara..
Da.. to igara mu je ujedno bila i mana... posto se Amos klao sa AmigaOS-om gdje god je stigao te je pisanje OS friendly programa prava patnja. Dalje, nije Os jedina stvar s cime se Amos (govorim o orginalnom Amosu) klao, tu su jos u pitanju ubrzivacke kartice a o grafickim karticama da i ne pricam. Nazalost rijetko cete naci kompajlirani Amos Basic program koji ce reditit na A1200 s ubrzivackom (mada ih dosta steka cak i na obicnoj Amiga 1200). Ah, da imao je Amos i kompajler koji se morao posebno kupovati, a i on je imao svojih bubica koje bih najradije preskocio. Sve u svemu kad izuzmemo bugove, na AMOS mozemo gledati kao na pravi program nastao u Amiga duhu; naime za AMOS je zasluzan jedan covjek: Francois Lionet koji je sam samcat iskodirao AMOS... u Assembleru...naravno sto ste ocekivali
Sve te mane pisac programskog jezika je uvazio te je pocetkom 92 dovrsio danas najrasireniju verziju Amosa: Amos Professional. Tom verzijom cemo se i mi baviti u ovom tutorijalu. Postoji jos i EasyAmos ali to je po mome misljenju obogaljeni Amos Basic napravljen za totalne tudume... bolje ga je izbjegavati u sirokom luku...
Nedavno je tvrtka koja je posjedovala copyright na Amos (EuroPress) pustila njegov source u slobodni opticaj, te je time Amos defacto postao besplatan.
BTW: Ako me sjecanje nevara EuroPress Software je presao na PC i tamo proizvodi trkace igre tipa Rally Championship i sl. :(
Amos Proffesional... a jel' to jestivo?
Hmm...Koliko god sam puno ocekivao od Amos Basica pa ostao razocaran toliko sam od pocetne sumnjicavosti presao u delirij kad sam prvi put radio s AmosProfessional-om. Editor je izvan svakog AmigaOS standarda (kao nazalost i cijeli programski jezika lai nemosh imat i ovce i novce) ali to nadoknaduje svojom stabilnoscu i lakocom upotrebe te mnostvom opcija ( Pitanje: Jel' itko od vas u bilo kojem programskom editoru nasao opciju Undo i to visestruku? Nisam ni ja...) i ugradjenim Help-om( koji se dodushe nalazi na posebnoj disketi ali bolje i to nego HELP u Amos Basic-u koji ga zapravo i nije imao.)
Definitivno je najbolji dio editora DIRECT mode (klikni ESC u editoru pa cete vidjeti). Njegova se korisnost najbolje vidi nakon izvrsavanja programa... Mozete pregledati sto vam je program brljao po varijablama, Memorijskim Bankama (.ABK) i slicne stvari... Da, znam, postoji tako nesto i u QuickBasicu ali ovo je godinama ispred...
Programeri su ubacili i Program Monitor koji omogucava pokretanje programa red po red da mozete naci gdje steka.. Ne koristim se time cesto ali volim znati da postoji...
Dodano je jos naredbi a najvaznije od svega su: mogucnost direktnog ucitavanja modula .MOD i .MED te animacija .Anim fileova
I pored svega poradili su na stabilnosti programa kao i kompajliranih programa ali to je vec neka druga prica...
U svemu ovome zaboravio sam spomenuti AMAL koji je zapravo programski jezik unutar programskog jezika a u osnovi vas rjesava bakcanja s intruptima i slicnim kerefekama od kojih boli glava. Koristi se za animaciju Spriteova ali moguce je uz pomoc njega manipulirati ekranom (skroliranje) te ocitavanje joysticka i misha.. ali o tom potom...
Dosta gluposti, predji na nesto korisno.
NAREDBE:
Screen Open NR,XWIDE,YWIDE,COLOURS,RESOLUTION
- AMOS naredba
- Otvara se ekran s naznacenom velicinom,brojem boja i rezolucijom
NR: Index otvorenog ekrana, prima vrijednosti (0-7)
XWIDE,YWIDE: Sirina i visina ekrana max.(1024x1024)
COLOURS:Broj boja (2,4,8,16,32,64,4096) Amos podrzava EHB i HAM
RESOLUTION: Hires ili Lowres
Standardni primjeri:
Screen Open 0,320,256,32,Lowres
Screen Open 0,320,256,32,Hires
Screen Open 0,640,256,32,Hires
Screen Open 0,640,480,8, Hires
Ako bi naprimjer otvorili
Screen Open 0,640,480,32,Lowres
ekran bi se trebao skrlolirati ali objasnjenje toga vas ceka sljedeci put (moram ljude nekako nagovoriti da se vrate i citaju ovo...)
Screen Close NR
-AMOS naredba
-Zatvara broj s indexom NR
Screen NR
-AMOS naredba
-odreduje ekran u koji ce program pisati
NR: index ekrana
Screen To Front NR
-AMOS naredba
-odreduje koji ce ekran biti prvi
NR: index ekrana
Cls [NR, X1,Y1,X2,Y2]
-BASIC naredba
-Brise ekran
NR: opciono mozemo odrediti kojom bojom obrisati ekran
X1,Y1,X2,Y2: Opciono mozemo odrediti dio ekrana koji ce se obrisati
Curs [On/Off]
-AMOS naredba
-Ukljucuje i iskljucuje prikaz kursora (on jos postoji i moze se koristiti ali je nevidljiv)
Flash [On/Off]
-AMOS naredba
-Ukljucuje i iskljucuje rotaciju palete na boji s indexom 3 ( ovo je postavljeno po defaultu... prilicno iritirajuce)
Paper COL
-AMOS naredba
-Boja podloge za naredbu Print
COL: Index Boje
Pen COL
-AMOS naredba
-Boja znakova za naredbu Print
COL: Index Boje
Ink COL
-AMOS naredba
- Odreduje boju koja se koristi pri crtanju (tu spada i naredba Text$)
COL: Index Boje
Text X,Y,ZNAK$
-AMOS naredba
-Graficka verzija naredbe PRINT
X,Y: Koordinate (graficke) gdje ce se se ispisati Tekst
ZNAK$: String koji treba ispisati
Objasnjenje:
Text$ 100,100,"Hello World" ce na koordinatama 100,100 ispisati Hello World
Napomena: Graficke koordinate su koordinate pixela dok postoje i znakovne koordinate koje se koriste u naredbi LOCATE... Nadam se da svi shvacate koliko je naredba TEXT$ fleksibilnija pogotovo ako imamo u vidu da se znakovima koje ispisuje ta naredba moze odrediti pripadajuci font ali o tome i dodatnim opcijama ubuduce...
Za pocetak to je dosta sto se naredbi tice... ja sam podrazumijevao da svi znate osnove Basic-a a ako neznate pisite mi na mail pa cu ubuduce misliti i na vas...
Koriste se jos i standardne Basic naredbe:
Locate X,Y
Input
Rem
Inkey$
For...Next
Do...Loop
Goto
Rnd [NR]
-BASIC naredba
-Generira slucajan broj
NR: maximalna vrijednost do koje ce se generirati slucajan broj
Prakticno programiranje
Sad kad smo nabrojali sve naredbe za poceatak mozemo poceti s prakticnim dijelom:
Najprije cemo napisati program koji ce otvoriti ekran velicine 320x256(PAL) s 32 boje i u niskoj rezoluciji te prebrisati ekran
Screen Open 0,320,256,32,Lowres
Curs Off: Flash Off :Cls 0
Paper 0:Pen 2
Ovo zapravo i nije program vec bi tako trebao pocinjati svaki program koji pisete...
Malo prosirenije bi to izgledalo ovako:
Screen Open 0,320,256,32,Lowres
Screen 0: Screen To Front 0
Curs Off: Flash Off: Cls 0
Paper 0:Pen 2
Eto...
Ajmo Dalje...
Napraviti Program Koji ce ucitati neki string i ispisati ga pomocu naredbe PRINT i naredbe TEXT s tim da su koordinate generiranje naredbom RND
Screen Open 0,320,256,32,Lowres
Curs Off: Flash Off :Cls 0
Input A$
For i=1 to100< /EM> < /STRONG> < /EM> < /EM>
X=Rnd(80) <- znakovne koordinate redova i stupaca
Y=Rnd(30)
Locate XX,YY:Print A$
X=Rnd(320) <- Graficke koordinate redova i stupaca
Y=Rnd(256)
Text X,Y,A$
Eto... za kraj i malkice kompliciranija verzija koja ukljucuje i mijenjanje boja
Screen Open 0,320,256,32,Lowres
Curs Off: Flash Off :Cls 0
Paper 0:Pen 2
Input A$
X=Rnd(80) <- znakovne koordinate redova i stupaca
Y=Rnd(30)
PODLOGA=Rnd(31) <-- Rnd ide do broja 31 posto imamo u vidu i 0 kao boju
OLOVKA=RND(31)
Paper PODLOGA :Pen OLOVKA
Locate X,Y:Print A$
X=Rnd(320) <- Graficke koordinate redova i stupaca
Y=Rnd(256)
COL=RND(31)
Ink COL
Text X,Y,A$
Next i
Za kraj malo cemo upotrijebiti naredbu Screen To Front
Screen Open 0,320,256,32,Lowres
Curs Off:Flash Off:Cls 0
Paper 0: Pen 2
Locate 12,31: Print "Otvorili ste Screen 0"
Screen Open 1,640,256,8,Hires
Curs Off: Flash On: Cls 0
Paper 0: Pen 3
Locate 12,10:Print "Otvorili ste Screen 1 i ostavili Flash ukljucen"
Screen 0: Screen To Front 0
Locate 10,10:Print "Stisnite tastaturu..."
Do
A$=Inkey$
If A$<>"" Goto skok <--- Program ceka ulaz s tastature
Loop
skok:
Screen To Front 1:
Rem ---------- sada program ispisuje tekst ali se to nevidi na ekranu zato sto smo postavili Screen 1 naprijed a kao aktivni ekran jos uvijek je Screen 0
Print "Pisem ali me nevidish!!!!"
Rem ---------- prebacujemo se na screen 0
Screen 1:
Locate 0,0: Print "Fino... a sada me fino ugasi!! Tastaurom ne na POWER... Boze moram li bash sve kucati..."
Do
A$=Inkey$
If A$<>"" Goto skok2
Loop
skok2:
Screen Close 1 <--- zatvaramo Screen 1
Screen 0: Screen To Front 0 <--- nije potrebno posto je to jedini ekran ali zlu netrebalo pogotovo ako imamo vise otvorenih ekrana
Rem i sada zavrsnica.....
Locate 1,1: Print Pritisni tastauru za kraj...."
Do
A$=Inkey$
If A$<>"" Goto skok3
Loop
skok3:
Za svako pitanje i komentar obratite se na:
Web stranicu moram poceti pisati od pocetka posto je bivsa zahvaljujuci Winblowsima u uredu otisla u digitalni raj :(
Ah da... skontali ste da fale dijakriticki znakovi... sorry... sljedeci put ce biti bolje....
Pozdrav...
BTW: Ako nekom treba AMos Pro neka mi se javi pa cemo se dogovoriti....