Blitz Basic - Nykyaikaista Basicia
Petteri Bamberg

Ennen muinoin, kun A500 oli rautaa, aloittelevien ohjelmoijanalkujen ainoana vaihtoehtona oli tarttua koneen mukana tulleeseen Basic-tulkkiin, joka oli karu ja hidas. Sillä tehtyjä ohjelmia ei voinut edes kääntää ajettaviksi, vaan tähän tarvittiin erillinen kallis ohjelma. Ajan kuluessa tuli markkinoille AMOS, joka oli lähinnä pelien tekoon tarkoitettu kieli. Sillä sai jo osaavissa käsissä näyttävääkin jälkeä, esimerkkinä ZTM:n pelit ja demot, sekä taannoin arvostelemani World of Arch (ks. Saku #29). OS-ystävällisiä ohjelmia sillä ei kuitenkaan saanut aikaiseksi, mikä tuotti ylimääräistä päänvaivaa hyötyohjelmien ohjelmoinnista haikaileville.

Acid Softwarelta kajahtaa

MikroBitti arvosteli vähäisillä Amiga-sivuillaan Blitz Basicin version 2.0. Arvostelussa valiteltiin manuaalin virheistä ja satunnaisista kaatuilusta. Tässä vaiheessa minä olin jo lopen kyllästynyt tappelemaan rupuisen AmigaBasicini kanssa, joka ei edes toiminut kunnolla A1200:ssani, joten päätin hankkia Blitzin. Ilmoitus Keltaiseen Pörssiin ja odottelemaan. Parin päivän päästä soi puhelin, ja Blitz Basic v2.1 vaihtoi omistajaansa viidellä kympillä. Paketista paljastui sininen pakkaus, joka piti sisällään kolme levykettä, rekisteröintikortin sekä kovakantisen manuaalin. Ohjekirjan selailu paljasti Blitzin toimivan jokaisessa Amigassa, jossa olisi vähintään 1 Mt muistia. Hyvä, hyvä. Sitten asennukseen.

Levykkeeltä ei löytynyt minkäänlaista asennusohjelmaa, joten levyke pitää käsin kopioida kiintolevylle, minkä lisäksi tarvitaan pari hassua assignia, siinä kaikki. Extras-levykkeellä oli lha-pakattuja apuohjelmia, joita tosin en ole vielä toistaiseksi tarvinnut. Examples-levykkeellä olevista esimerkkiohjelmista on arvokasta apua aloittelijoille, joten se kannattaa myös asentaa.

Ohjelmoimaan!

Blitzillä ohjelmointi poikkeaa hieman AmigaBasicista. Esimerkiksi Print-lauseen sijasta täytyy käyttää NPrint:iä, sillä pelkkä Print ei suorita rivinvaihtoa. Myös tekstin vieritys ikkunan alareunan tullessa vastaan ei ole automaattista kuten AmigaBasicissa, vaan se täytyy itse hoitaa WPrintScroll-käskyllä.

Grafiikkakomennotkaan eivät ole niin yksiselitteisiä. Suoraan ikkunaan voi piirrellä viivoja sun muita yksinkertaisia elementtejä WLine- ja WBox-tyylisillä lauseilla, mutta huomattavasti kätevämpää on käyttää ns. bitmapeja. Bitmap on Chip-muistista varattu alue, jota voi grafiikkakomennoilla mielin määrin muokata. Bitmapit ovat käteviä, sillä niiden tiedot voidaan ladata tavallisesta IFF-kuvasta. Bitmapin voi myös järjestää niin, ettei se automaattisesti tulostu ruutuun jokaisen piirtokomennon jälkeen, vaan vasta niin komennettaessa.

Liikuteltavat objektit voivat olla myös tavallisia IFF-brusheja, mutta paljon käytännöllisempää on käyttää Blitzin omia shape-tiedostoja. Shape-tiedostoihin ei ulkopuolinen pääse niinkään helposti käsiksi, ne ovat nopeampia ladata ja niitä voi tallentaa monen kappaleen ryhmissä. Lisäksi Blitz vielä pakkaa kuvainformaation, joten levytilaakin säästyy.

Ääniksi kelpaavat kaikki IFF-samplet, tosin koko ei saa olla yli 64 kilotavua. Musiikkimoduleiksi luetaan MOD- ja MED-formaatit, tosin MEDien käsittelyyn on paljon monipuolisempia käskyjä, sillä MODeja voi ainoastaan soittaa ja pysäyttää.

Käyttöjärjestelmän peruselementit eli ikkunat, valikot ja painikkeet hoituvat käden käänteessä, tosin valikoiden ja painikkeiden tiedot täytyy määritellä ohjelman alussa.

Blitz Basic toimii kahdessa tilassa. Amiga-tila on moniajavia ohjelmia varten. Amiga-tilassa koodatut ohjelmat toimivat mitä suurimmalla varmuudella miltei jokaisessa kokoonpanossa. Kun Amigasta halutaan tiristää viimeisimmätkin mehut pihalle, voi käyttää Blitz-tilaa. Se ottaa koko koneen hallintaan ja sulkee moniajon. Tämä antaa lisää nopeutta yhteensopivuuden kustannuksella.

Blitz Basic toimii tarvittaessa myös puhtaana assemblerina, joten kieltä taitavat voivat kivuttomasti ujuttaa puhdasta konekieltä koodin sekaan. Myös monipuolisia käyttöjärjestelmäkirjastojen komentoja voi käyttää normaalien komentojen tapaan, kunhan vain lisää komennon jälkeen alaviivan (esim. WBenchToFront_).

Bugeja, onko niitä?

Blitz Basic ei ole varsinaisesti mikään tulkki, sillä ohjelma käännetään konekieleksi aina ennen ajoa. Tämä vain käy niin nopeasti, että käyttäjälle jää vaikutelma perinteisestä rivin riviltä kääntävästä Basic-tulkista. Blitzillä tehdyt ohjelmat voidaan kääntää ajettaviksi, jolloin ne ovat 100% assembleria ja siten erittäin tehokkaita. Itse käännösprosessi on nopea ja sujuu ilman käyttäjän apua.

Ohjelmat ovat nopeita, varsinkin jos tajuaa ajon ajaksi kytkeä debuggerin (virheenetsinnästä huolehtiva ohjelma) pois päältä (tämä tosin edellyttää melko idioottivarmaa koodia, sillä pienikin moka kaataa koneen). Debuggeri on varsin metka kapistus. Se ei nimittäin aina suostu sulkeutumaan, vaan kaatuu niille sijoilleen. Editori ei moisesta hätkähdä, mutta mikäli ohjelman yrittää ajaa uudelleen, on seurauksena raaka crash.

Samanlaista satunnaista sekoilua, josta MikroBitti moitti v2.0:aa, ei ilmennyt v2.1:ssä. Ketjun heikoin lenkki on kuitenkin bugittava debuggeri. Kannattaa ottaa tavaksi tallentaa ohjelma ennen ajoa tai vähintään silloin, kun on tehnyt vähänkin suuremman muutoksen ohjelmaan. Ohjekirja loistaa painovirheissään, tosin vähemmän kuin v2.0. Myös OS-ohjelmoijan kannalta oleelliset asiat, kuten Ctrl+C-break ja näyttötilakehotteet, on autuaasti unohdettu. Muuten kirja ajaa asiansa.

Loppurutina

Loppujen lopuksi Blitz Basic on kelpo kieli, jolla hoituvat niin hyöty- kuin peliohjelmatkin. Sitä on käytetty useiden kaupallisten pelien ohjelmoimiseen sen tehokkuuden ja helppokäyttöisyyden takia, esim. Gloomin editorit ovat Blitziä, kun taas Worms on jopa kokonaan Blitzillä tehty. Blitz Basic pitäisi jakaa jokaisen uuden Amiga-paketin mukana takavuosien AmigaBasicin tapaan, niin hyvä se on.

Suomessa Blitz Basicia myy ainakin Gentle Eye Ky (http://www.ge.vip.fi, ge@vip.fi, (03) 363 0048). Syyskuun lopulla hinnastossa Blitz Basic Ultimate CD maksoi 195 mk.


Blitz Basic
Tekijä:Mark Sibly
Julkaisija:Acid Software
Aminet (v2.11 demo, executablen luominen estetty, 637 kt): http://ftp.sunet.se/pub/aminet/dev/basic/BlitzBasic_211.lha