| Mala škola velikog BB2 (1. dio) | |||
|---|---|---|---|
| Tonči A. LOIĆ | pl-print@st.tel.hr | ||
Umjesto predgovora
Mnogi pri spomenu riječi Basic sa smješkom odmahuju rukom tvrdeći kako se
radi o programskom jeziku namjenjenom početnicima/gubitnicima koji nisu u
stanju naučiti assembler ili C.
Ovo uvriježeno mišljenje vrijedi još iz vladavine 8-bitnih računala kao što
su ZX Spectrum i Commodore64. Naime, u to vrijeme se nepoznavanje mašinskog
jezika (assemblera) smatralo za svojevrsnu impotenciju:-)
Međutim, razvojem računala, Basic je kao programski jezik u mnogo čemu
evoluirao i približio se naprednijim jezicima kao što su C i Pascal.
Basic je od prvih interpreter verzija prerastao u moćan strukturirani jezik
sa compilerom i debugerom te svim odlikama koje krase jezike novije
generacije.
Ovom prilikom ćemo se zaustaviti na najpoznatijem Basic compileru za Amigu,
nazvan BlitzBasicII razvijen u kući Acid software. Osim njega, postoji još dosta
verzija/narječja Basica za Amigu. Treba svakako spomenuti nekad čuveni GFABasic,
pa nešto manje popularan HiSoftBasic te AmigaBasic koji se isporučivao uz
WorkBench1.x, a kojeg je za Commodore razvio omraženi nam Microsoft.
Da pomenuti BlitzBasic nije dječja igračka već moćan alat dovoljno govori
činjenica da je mnogo legendarnih igara za Amigu pisano upravo s tim programskim
jezikom. Spomenut ćemo samo neke, kao što su SuperSkidMarks, Worms i dr.
BlitzBasic je korišten i u izradi legendarnih Doom klonova Gloom/GloomDeLuxe.
Iako prvotno zamišljen kao alat za razvoj igrica (poput nekoć poznatog Amosa),
zahvaljujući programerima širom svijeta koji su razvili mnoštvo dodatnih libsova,
Blitz je prerastao u programski jezik koji se može odlično koristiti i u
sistemskom programiranju.
Osim toga, compiler daje izrazito mali i brzi exe file, što je nekoć bila odlika
samo C-a i assemblera.
Recimo, jedna kompleksna igra čiji Blitz source ima preko 2,500 linija nakon
compiliranja zauzima svega 30kb, a compiler za svega 6 sekundi (MC68030/50Mhz)
od sourca napravi izvršni file! Važno je pripomenuti da se optimiziranim
programiranjem veličina izvršnog file može smanjiti i do 50%.
Sve ovo bi vas trebalo motivirati da se bar malo posvetite ovom izuzetnom
programskom jeziku. U ovoj školi nećemo učiti osnovne stvari kao što je
FOR - NEXT petlja i sl., već ćemo se posvetiti korisnicima koji poznaju bar
osnove Basica, te vas uputiti u napredno korištenje Blitz Basica.
1. Pripreme
Blitz BasicII u originalu dolazi na 4 DD diskete i jako jednostavno se
instalira na tvrdi disk, a može se pokrenuti i s disketa. Kompatibilan
je sa svim postojećim Amigama, a autor ovih redaka ga je testirao na svim
konfiguracijama počev od A500, A600 i A2000, pa sve do A1200, A3000 i A4000T.
Bez ikakvih problema radi na svim Motorolinim procesorima iz 68k generacije
pa čak i na 68060.
Isto tako, postoji poseban set komandi koji koristi sve prednosti AGA grafike.
Za početak predlažemo da odsurfate do najbližeg Amineta sitea i skinete
dodatni set naredbi nazvan
"NewCommandSet" (dev/basic/NewCommandSet.lha).
2. Editor/Compiler
Blitz Basic dolazi s relativno jednostavim ekranskim editorom nazvanim TED uz
čiju pomoć ćete unositi komade i stvarati vaša remek djela. Editor posjeduje i
jednu odliku linijskih editora (ZX fanovi znaju o čemu se radi) tako da pritiskom
na
Isto tako, pritiskom na tipku
Osim toga, na Aminetu se može naći još dosta Blitz editora koji ispravljaju
greške originalnog TED-a, a CED fanovi mogu instalirati i plug-in za korištenje
tog poznatog editora! Subjektivno gledajući, najbolji editor za BlitzBasic je
TEDv2.1.
Sam editor ima u sebi opcije za pozivanje compilera i debugera, a dozvoljava i
konfiguriranje kako samog editora tako i compilera.
Kad ste ukucali cijeli program ili naprosto želite testirati dotad uneseni
source, morate ga pokrenuti. To možete izvesti na dva načina, ili pozivanjem
compilera i startanjem sourca ili pretvaranjem sourcea u izvršni file.
Za to vam služi pulldown menu nazvan Compiler.
Opcijom "Compile&Run" ćete vaš source kompajlirati i odmah pokrenuti, dok će
opcija "Create Executable" source pretvoriti u izvršni file koji vi naknadno
pokrećete bilo iz Shella ili WB-a. Osim ove dvije varijante, imate i mogućnost
direktnog pokretanja ranije compiliranog programa sa "Run".
3. Određivanje tipa programa te otvaranje ekrana i prozora
Jedna od osnovnih stvari kod programiranja i najzahtjevnijih aplikacija/igara
na Amigi zahtjeva otvaranje adekvatnog ekrana i/ili prozora.
Prije nego započnemo s ekranima i prozorima, potrebno je odlučiti o kakvom
tipu programa je riječ te da li će se isti izvršavati u tekućem CLI/Shell
prozoru, da li je potrebno otvarati novi prozor i/ili ekran. Isto tako,
Blitz dozvoljava da program bude pokretljiv iz WBStartup direktorija, iz
Shella ili iz WB-a klikajući na ikonu. Sve to se definira sa slijedećim
komandama:
WBStartup -omogućava pokretanje programa iz Workbencha
NoCli -prilikom pokretanja zabranjuje otvaranje CLI/Shell prozora
WBToScreen 0 -proglašava WB aktivnim ekranom na kojem će se izvršavati vaš program.
Tako će recimo slijed komandi:
WBStartup:NoCli
SetErr:End:End SetErr:WbToScreen 0
narediti compileru da se se vaš program starta klikom na ikonu programa
(WB), zabranit će otvaranje novog CLI/Shell prozora, a WB proglasiti
aktivnim ekranom. Bez ovih komadi (koje inače moraju biti navedene kao PRVE
komande u sourceu) Vaš program će biti CLI/Shell i izvršavati će se upravo
u pomenutom prozoru.
Pokušajte slijedeći program ukucati u editor i compilirati ga
(compiler/create executable):
NPRINT "Hello world!"
te ga zatim pokrenuti iz Shella. Zatim probajte komandu NPRINT zamjeniti sa
PRINT da uočite razliku između te dvije komande!
Osim toga, BlitzBasic poznaje 3 režima rada i to:
1.AmigaStandard -komanda AMIGA
2.QuickAmiga -komanda QAMIGA
3.BlitzMode -komanda BLITZ
Ako pišete sistemski software ili želite da vam program/igra bude systemfriendly
tada će te upotrijebiti komandu AMIGA. S druge strane, kad vam je brzina
izvođenja programa kritična, a i dalje želite systemfriendly program,
morate s komandom QAMIGA napraviti kompromis između brzine i sistema.
Hackeri obožavaju komandu BLITZ koja u potpunosti isključuje sistem i
dozvoljava da brljate po sirovom hardwareu do mile volje što je posebno
dobrodošlo kod razvoja igara. Ta komanda otvara područje do kojeg ni jedan Basic
compiler ni na kojoj mašini došao jer su vam dozvoljeni svi prljavi trikovi
poznati C i assembler fanovima.
Isto tako, možete kombinirati ova tri režima rada pa djelove gdje je
potrebna velika brzina pišete u BLITZ modu, a dalje nastavljate u AMIGA
modu i sl. Za sada ćemo se ograničiti samo na AMIGA i QAMIGA mod, dok će
BLITZ modu biti više riječi nekom drugom prilikom.
3.1 Prozori
Ako želite da se program izvršava u svom prozoru, onda ga prvo morate
otvoriti sa komandom WINDOW. Sintaksa te komande izgleda ovako:
WINDOW br,x,y,w,h,f,"ime",d,b,bi
br = broj prozora
x = x kordinata prozora na ekranu
y = y kordinata prozora na ekranu
w = širina prozora u pikselima
h = visina prozora u pikselima
f = flag za prozor
ime= ime prozora (može ostati i prazno "")
d = DPen
b = BPen
bi = Broj bitmape
Evo kako izgleda program koji rezultate ispisuje u svom prozoru:
WBStartup:NoCli:CloseEd
SetErr:End:End SetErr:WbToScreen 0
Window 1,220,100,259,67,0,"Prozor1",0,1,0
Activate 1:Use Window 1
NPrint "Moj prvi prozor"
NPrint "Lijevi taster misa za izlaz"
MouseWait
Komanda ACTIVATE #br služi za proglašavanje željenog prozora aktivnim,
dok USE WINDOW #br preusmjerava ispis u željeni prozor.
Osim komande WINDOW, ako imate instaliran ranije pomenuti NewCommandSet, za
otvaranje prozora imate i NWINDOW. Ova komanda je dosta brža od originalne,
a pri kompajliranju zauzima i do 70% manje mjesta. Sintaksa neodoljivo
podsjeća na otvaranje prozora u C-u, a upute imate u arhivi NewCommandSet.lha.
3.2 Ekrani
Za otvaranje ekrana služi komanda SCREEN. S njom određujete veličinu ekrana
u pixselima, rezoluciju, broj boja kao i tip ekrana.
SCREEN br,x,y,w,h,dep,mod,"ime",d,b,bi
br = broj prozora
x = x kordinata
y = y kordinata
w = širina ekrana u pikselima
h = visina ekrana u pikselima
dep = dubina ekrana (broj boja u bitima)
mod = mod ekrana
ime = ime ekrana (može ostati i prazno "")
d = DPen
b = BPen
bi = Broj bitmape
Dozvoljeni parametri za mod ekrana:
$21000 = PAL LoRes
$21004 = PAL LoRes Lace
$28000 = PAL Hires
$28004 = PAL HiRes Lace
$29020 = PAL SuperHiRes
$29024 = PAL SuperHiRes Lace
Ima još dosta parametara, kao što su oni za EHB, HAM, HAM8, NTSC, VGA
modove ekrana, a do njih će te najlakše doći sa programom "GetModeID"
kojeg možete naći na neizbježnom Aminetu.
Primjer programa koji otvara ekran i prozor te ispisuje text:
WBStartup:NoCli:CloseEd
SetErr:End:End SetErr:WbToScreen 0
Screen 0,0,0,640,512,2,$28004,"Ekran HiRes 2bit",1,1
Window 1,220,100,259,67,0,"Prozor1",0,1,0
Activate 1:Use Window 1
NPrint "Moj prvi ekran"
NPrint "Lijevi taster misa za izlaz"
MouseWait
Ekran može biti veći od trenutne rezolucije. Recimo, otvorite ekran u
HiResLace rezoluciji, ali dimenzije ekrana postavite na npr. 1000x1000
pixsela. Ovakav primjer možete vidjeti u legendarnoj igri SuperSkidMarks.
Toliko u ovom, prvom nastavku male škole velikog BlitzBasica. U slijedećem
broju Amiga STORMa ćemo se pozabaviti ispisom na ekran, izbornicima, gadgetima, naredbama za crtanje, kontrolu spriteova i još mnogo toga. Do tada prelažemo da
posjetite web stranicu na adresi: http://www.pl-print.tel.hr i od tamo skinete logičku video igru pisanu u BlitzBasicu.
|
PL Print d.o.o Split e-mail: pl-print@st.tel.hr URL: http://www.pl-print.tel.hr/ |
Copyright (c)1994-99. PL Print d.o.o. Split, sva prava pridržana