Hlavní navigace

Programovací jazyk BASIC na osmibitových mikropočítačích (2)

15. 6. 2010
Doba čtení: 20 minut

Sdílet

Dnes budeme pokračovat v popisu postupného (a nutno říci, že poněkud chaotického) vývoje programovacího jazyka BASIC. Dnes si společně řekneme, jaké dialekty tohoto programovacího jazyka byly použity na některých známých zahraničních osmibitových počítačích založených na mikroprocesoru MOS 6502.

Obsah

1. Programovací jazyk BASIC na osmibitových mikropočítačích

2. Integer BASIC a počítače Apple II

3. Vlastnosti Integer BASICu a seznam jeho příkazů

4. Applesoft BASIC – výsledek spolupráce firem Apple a Microsoft

5. Atari BASIC

6. Turbo BASIC – když jméno není pouze reklamním tahákem

7. Commodore BASIC

8. Simons' BASIC aneb co Microsoft nedokázal

9. Odkazy na Internetu

1. Programovací jazyk BASIC na osmibitových mikropočítačích

V předchozí části tohoto seriálu jsme se stručně seznámili s historií programovacího jazyka BASIC (Beginner's All-purpose Symbolic Instruction Code), který byl sice zpočátku používán na mainframech (sálových počítačích) a posléze i na minipočítačích, ovšem jeho největší rozmach nastal až v době, kdy se výpočetní technika začala pomalu ale jistě stěhovat z výpočetních center do škol, úřadů i domácností, tj. v éře osmibitových mikropočítačů a mikroprocesorů. Jedná se o dobu začínající přibližně rokem 1975 a končící v roce 1990, v závislosti na místních podmínkách (v západních zemích éra osmibitových počítačů skončila o několik let dříve). Jedním z prvních BASICů implementovaných na osmibitovém mikroprocesoru byl Altair BASIC určený pro počítače MITS Altair vybavené mikroprocesorem Intel 8080. Tento dialekt BASICu vytvořil v roce 1975 Bill Gates společně s Montem Davidoffem.

Obrázek 1: Kresby Vladimíra Jiránka doprovázely například některá speciální vydání VTM (Domlouváme se s počítačem atd.).

Bill Gates společně s Paulem Allenem v tomtéž období založili firmu Micro-Soft, která nabízela dialekty BASICu pro různé počítačové platformy, mj. i pro počítače vybavené mikroprocesory 8080, Z80 či 6502, a později též pro šestnáctibitové a 32bitové procesory (v té době se však již firma Micro-Soft přejmenovala na Microsoft, ovšem touto částí vývoje BASICu se budeme podrobněji zabývat až příště). Bill Gates s Paulem Allenem prodávali paměťová média s Altair BASICem za 150 dolarů, což byla poměrně značná suma, takže docházelo (těžko říci v jaké míře) k tomu, že si uživatelé mezi sebou půjčovali kopie Altair BASICu, proti čemuž B. Gates poměrně ostře vystoupil dodnes citovaným dopisem. Situace se po cca jednom roce poněkud změnila, protože ve známém Dr. Dobb's Journalu vyšel článek s názvem „Build Your Own Basic“ (později poměrně často citovaný pod zkratkou BYOB), který byl napsán Dennisem Allisonem (právě on je oním „D“ v názvu tohoto žurnálu).

Obrázek 2: Výpis části grafického dema pro počítače PMD-85, které bylo vytvořeno v BASICu s využitím příkazů (unikátních pro PMD-85), které umožňovaly práci s rastrovou grafikou.

Na základě článku Dennise Allisona vzniklo a vzápětí se i rozšířilo několik různých implementací BASICu, které byly většinou nazvány (opět podle článku) Tiny BASIC. Tyto implementace byly dostupné jak pro osmibitové mikroprocesory firmy Intel, tak i pro procesor Motorola 6800 či MOS 6502, a to buď zcela zdarma nebo pod de-facto symbolickou částkou pěti dolarů (tato částka většinou zahrnovala i poštovné). Ovšem díky vzniku tolik žádoucí konkurence na trhu s domácími osmibitovými počítači se firmy začaly přetahovat o zákazníky, takže se snažily nabízet počítače již se základním programovým vybavením (uloženým v naprosté většině případů přímo v ROM) a nejenom skládačku typu počítače Altair, kde si uživatelé kromě ceny za počítač (400 dolarů) většinou museli připlatit i již zmíněných 150 dolarů za interpret programovacího jazyka.

pmd85

Obrázek 3: Ukázka grafických schopností počítače PMD-85. Jedná se o původní demo dodávané spolu s BASICem, které však bylo upraveno autorem tohoto snímku i počítače (v roce 1985 skutečně žádné URL neexistovaly). Připomeňme, že do počítačů PMD-85 se musel BASIC buď načítat z kazety nebo se musel použít příslušný zásuvný modul.

Již jeden z vůbec prvních domácích mikropočítačů – Commodore PET – obsahoval interpret BASICu, jenž byl dodaný firmou Micro-Soft, která právě zde zahájila éru svých BASICů určených pro osmibitové mikroprocesory MOS 6502. Záhy se stal BASIC prakticky nedílnou součástí naprosté většiny osmibitových domácích mikropočítačů (jednou z výjimek byly některé počítače vyráběné v zemích RVHP, které byly mnohdy vybavené pouze jednoduchým monitorem s tím, že modul pro BASIC se musel doinstalovat zvlášť). V následujících kapitolách si některé známé či nějakým způsobem výjimečné interpretry či překladače jazyka BASIC představíme. Zaměříme se především na počítače vybavené mikroprocesorem MOS 6502, počítačům vybaveným jinými typy osmibitových mikroprocesorů bude věnována další část seriálu.

pc105_a

Obrázek 4: Pohled na zadní část skříně počítače IQ-151, na níž můžeme po pravé straně vidět chladič zdroje a po straně levé „vanu“ určenou pro připojení až pěti zásuvných modulů. Zde jsou již připojeny tři moduly – BASIC G, VIDEO 32 či VIDEO 64 a GRAFIK.

2. Integer BASIC a počítače Apple II

Dalším dialektem programovacího jazyka BASIC, o kterém se v dnešním článku zmíníme, je Integer BASIC, který byl vytvořen v roce 1976 samotným Stevem „Wozem“ Wozniakem pro jím navržené počítače Apple 1 a Apple II (o těchto počítačích jsme se již zmiňovali v předchozích částech tohoto seriálu). Wozniak, který před vytvořením mikropočítače Apple 1 navrhl pro firmu Atari herní automat Breakout (předchůdce Arkanoidu), se při konstrukci počítače Apple II zaměřil na to, aby měl tento počítač všechny vlastnosti nutné k tomu, aby na něm mohla být hra Breakout bez vážnějších problémů (re)implementována. Právě z tohoto důvodu byl v Apple II zaveden druhý grafický režim low-res nabízející uživatelům sice menší rozlišení, zato však větší počet současně zobrazitelných barev (už jen podpora vícebarevného grafického režimu na domácím mikropočítači byla malá revoluce). Dále byl Apple II vybaven jednoduchým zvukovým generátorem, možností připojení ovladače paddle (ten interně obsahuje pouze potenciometr; počítač zjišťuje úhel jeho natočení podle času nabíjení kondenzátoru připojeného sériově k tomuto potenciometru, což je velmi jednoduché řešení plně vyhovující Wozově filozofii).

Obrázek 5: Originální mikropočítač Apple II dodávaný spolu s Integer BASICem. Zatímco Integer BASIC byl pro počítače Apple 1 dodáván na kazetách, počítače Apple II tento interpret měly obsažen přímo v paměťových čipech ROM. V modelu Apple II+ byl Integer BASIC nahrazen Applesoft BASICem popsaným v dalších kapitolách, ovšem původní (velmi rychlý) Integer BASIC bylo stále možné použít – uživatelé ho mohli najít v základním programovém vybavení na disketách.

Nakonec Woz pro svůj počítač Apple II naprogramoval i Integer BASIC a to přímo ve strojovém kódu, nikoli v assembleru. Sám Woz přiznává, že byl překvapen možnostmi, které mu tento programovací jazyk (a taktéž jeho interaktivní vývojové prostředí, tj. editor přímo volající funkce interpretru) nabízel při tvorbě hry Breakout, která mimochodem vznikla v průběhu několika hodin, na rozdíl od původní varianty navržené pro firmu Atari, pro níž byl použit v té době klasický způsob návrhu založený na použití různých číslicových obvodů (logických hradel, čítačů, registrů, multiplexorů a demultiplexorů atd.). Právě při programování hry Breakout si Woz uvědomil, jak může být několik vrstev abstrakce (první vrstva abstrakce – mikroprocesor dovoluje abstrahovat od jednotlivých číslicových obvodů, druhá vrstva abstrakce – Integer BASIC abstrahuje od strojového kódu mikroprocesoru) užitečné při rychlém návrhu různých systémů. Skutečně – v Integer BASICu postupem doby vzniklo, i přes jeho nedostatky a omezený repertoár příkazů, několik tisíc programů různé kvality, od jednoúčelových utilit až po poměrně rozsáhlé aplikace.

Obrázek 6: Paměťové čipy (ROM), v nichž byl uložen Integer BASIC na počítačích Apple II.

3. Vlastnosti Integer BASICu a seznam jeho příkazů

Integer BASIC dokázal pracovat s šestnáctibitovými celými čísly v rozsahu –32768 až 32767, které mohly být ukládány buď do jednoduchých proměnných (skalárů) nebo do polí vytvářených příkazem DIM. Dále tento jazyk obsahoval základní příkazy pro řízení běhu programu (IF-THEN, GOTO, FOR-NEXT, POP), příkazy pro tvorbu podprogramů (klasická dvojice GOSUB a RETURN), i základní příkazy pro práci s grafickými režimy počítače Apple II (GR, COLOR, PLOT, HLIN a VLIN – vykreslení obecných úseček tedy nebylo podporováno) a čtení aktuálního natočení ovladačů typu „paddle“ pomocí funkce PDL(n) (za n se dosadilo číslo ovladače, tj. 0 nebo 1). I přes zdánlivou jednoduchost byl tento dialekt jazyka BASIC používán po velmi dlouhou dobu, dokonce i tehdy, když vznikly jeho nástupci. Důvod byl prostý – interpretace programů byla velmi rychlá, ostatně i díky použití celých šestnáctibitových čísel namísto čísel s pohyblivou řádovou čárkou.

Obrázek 7: Na první pohled by se mohlo zdát, že Woz (Steve Wozniak) vytvořil interpretr jazyka BASIC pracující pouze s celými čísly z toho důvodu, že nevěděl, jakým způsobem by měl implementovat operace s plovoucí řádovou čárkou. Není to pravda, vždyť právě od Woze pochází rutiny implementující základní FP (floating point) operace, které byly použity v mnoha aplikacích vzniklých pro počítače Apple II.

V následující tabulce jsou pro zajímavost vypsány všechny příkazy, operátory a funkce, které byly programátorům dostupné při práci s Integer BASICem:

Práce s programem a proměnnými
NEW
CLEAR
LIST
RUN
LOAD
SAVE
DIM
POKE addr,x
CALL addr
HIMEM:addr
LOMEM:addr
TRACE
NOTRACE
DSP v1,v2
Aritmetické a logické operace
=
+
/
*
^
AND
OR
NOT
Relační operátory
=
<
>
<=
>=
#
Funkce
ABS(x)
SGN(x)
RDN(x)
LEN(s)
ASC(s)
PEEK(addr)
PDL(n)
Řízení běhu programu
GOTO n
IF cond THEN s1
FOR v=x TO y STEP z
NEXT v
GOSUB n
RETURN
POP
STOP
CON
END
Grafické operace
GR
TEXT
COLOR=x
PLOT x,y
HLIN x1,x2 at y
VLIN y1,y2 at x
SCRN(x,y)
Vstupně/výstupní operace
IN# n
INPUT s;x,y
PR# n
PRINT x,y,…
VTAB n

Obrázek 8: Jednoduchý grafický editor pro počítače Apple II naprogramovaný v BASICu. Zajímavé je, že mnoho aplikací bylo původně naprogramováno právě v BASICu a teprve druhé a další verze se přepisovaly do assembleru. BASIC tak pro různé softwarové firmy sloužil jako důležitý prostředek pro tvorbu prototypů (tímto způsobem vznikly například i první hry firmy Sierra on Line či herní série Ultima).

4. Applesoft BASIC – výsledek spolupráce firem Apple a Microsoft

V předchozí kapitole jsme si řekli, že Integer BASIC byl sice velmi rychlý interpret, ovšem měl jednu poměrně velkou nevýhodu – dokázal zpracovávat pouze celočíselné šestnáctibitové hodnoty v rozsahu –32768 až 32767. To sice Wozovi nevadilo při tvorbě jeho hry Breakout a i další utility si s tímto číselným datovým typem vystačily (například i poměrně kvalitní šachy), ovšem například pro účetní či matematicky zaměřené aplikace se mohlo jednat o poměrně závažný nedostatek. Z tohoto důvodu chtěla firma Apple rozšířit původní Integer BASIC o možnost práce s čísly uloženými v systému plovoucí řádové čárky. Ovšem v době, kdy měl být Integer BASIC přepsán, byl Woz zaneprázdněn vývojem mechaniky i řadiče disketové jednotky Disk II a nikdo jiný ve firmě Apple neměl tolik znalostí, aby se úprav Integer BASICu mohl zhostit (nesmíme zapomenout na to, že v letech 1976–1977 by každá chyba v interpretru znamenala nutnost výměn čipů ROM u zákazníků, nikoli pouhé vystavení patche na Internetu, jak se podobná situace řeší dnes).

Obrázek 9: Program zapsaný v Applesoft BASICu spuštěný na počítači Apple II.

Z tohoto důvodu firma Apple nakonec zakoupila licenci na interpret programovacího jazyka BASIC od firmy Micro-Soft. Licence byla poskytnuta na dobu osmi let a byla pro firmu Apple poměrně výhodná, protože za ni zaplatila pouhých 21000 dolarů, což při počtu prodaných kusů počítačů Apple II+ a jeho následovníků není mnoho. Původní BASIC firmy Microsoft byl po přepsání do assembleru mikroprocesoru MOS 6502 upraven takovým způsobem, aby ho bylo možné uložit do 10 kB paměti ROM (zbylou kapacitu čipu ROM obsadil systém počítače), což ovšem znamenalo, že z původního BASICu byly odstraněny některé příkazy, které se v ostatních BASICech firmy Microsoft běžně vyskytovaly. Například se jedná o příkazy PRINT USING (formátovaný výstup) či INKEY$ (čtení z klávesnice bez čekání). Název výsledného produktu vznikl složením slov Apple a Micro-Soft – nový interpret BASICu pro Apple II se nazýval Applesoft, což je jméno, ke kterému se dnes pravděpodobně ani jedna z dotčených firem nehlásí…

Obrázek 10: Osmibitový mikropočítač Apple II Plus s dvojicí disketových jednotek Disk II, který obsahoval interpret programovacího jazyka Applesoft BASIC.

Čipy ROM obsahující Applesoft BASIC byly nainstalovány v téměř všech modelech počítačů Apple II, počínaje modelem Apple II Plus zobrazeným na desátém obrázku. Vzhledem k tomu, že byl tento interpret BASICu poměrně pomalý (ostatně Microsoft BASIC byl pomalejší i ve variantě pro počítače Atari, především v porovnání s Turbo BASICem), programátoři poměrně často přecházeli mezi Integer BASICem a Applesoft BASICem. Pro tento účel byly dostupné příkazy INT a FP, ovšem při spuštění těchto příkazů došlo k plné inicializaci interpretrů a tím i ke ztrátě zapsaného programu. V pozdější době byly nabízeny více či méně efektivní překladače Applesoft BASICu, jejichž účelem bylo v prvé řadě urychlit běh aplikací překladem do strojového kódu (druhým důsledkem překladu bylo to, že firmy nemusely své programy distribuovat v čitelné „open-source“ podobě). Například se jedná o nástroje TASC a Einstein Compiler. Kromě toho pro počítače Apple II vznikly i další interpretry BASICu, například MD BASIC či GS BASIC.

Obrázek 11: Jedna z příruček k interpretru Applesoft BASIC.

5. Atari BASIC

Mezi další počítače, které byly vybaveny osmibitovým mikroprocesorem MOS 6502, patří domácí osmibitové mikropočítače Atari, zejména typy Atari 600, Atari 800, Atari 1200XL, Atari 800XL, Atari 800XE či nejvyšší model nazvaný Atari 130XE. Tyto počítače byly dodávány s 24 kB paměti ROM, přičemž 16 kB obsadil samotný operační systém počítače (včetně ovladačů základních periferních zařízení) a zbylých 8 kB bylo vyhrazeno pro interpret programovacího jazyka BASIC. Inženýři z Atari původně plánovali využít, podobně jako již v předchozích kapitolách několikrát zmíněná firma Apple, programovací jazyk BASIC dodaný firmou Micro-Soft, ovšem tento interpret se nevešel do zbylých 8 kB paměti ROM (někteří lidé poněkud zlomyslně poznamenávají, že Micro-Soft měl již tehdy problém s hardwarovou náročností svých aplikací, což se projevilo právě při portaci interpretru BASICu na procesor MOS 6502, při jehož programování je nutná poměrně podrobná znalost jeho adresových režimů).

Obrázek 12: Programovací jazyk Atari BASIC obsahoval příkazy, pomocí nichž bylo možné nastavovat různé grafické režimy, vykreslovat body (pixely) či úsečky popř. měnit barvovou paletu. Na tomto obrázku je zobrazen grafický režim číslo 15, v němž se zobrazuje čtyřbarevná bitmapa o rozlišení 160×160 pixelů, pod níž jsou umístěny čtyři textové řádky, které může interpret jazyka BASIC využít stejným způsobem, jako standardní textový režim (číslo 0).

Vzhledem k tomu, že rozšíření kapacity paměti ROM by bylo problematické a samozřejmě i poměrně drahé (každý ušetřený dolar se v tomto případě násobil počtem prodaných počítačů) se nakonec firma Atari rozhodla, že bude financovat vývoj vlastního interpretru programovacího jazyka BASIC, přičemž na nový jazyk měla dva základní požadavky – interpret se musí vejít do 8 kB ROM a jazyk by měl obsahovat příkazy, které by alespoň částečně dokázaly využít grafické a zvukové schopnosti počítačů Atari, což je důležité jak z praktického, tak i obchodního hlediska. Atari BASIC, jak se nově vzniklý programovací jazyk jmenoval, se skutečně podařilo uložit do pouhých osmi kilobajtů paměti ROM. Jednalo se sice o relativně pomalý interpret, ovšem jeho vlastnosti byly poměrně zajímavé. Tento dialekt BASICu totiž obsahoval celou řadu rutin umožňujících práci s rozličnými grafickými režimy čipů ANTIC a GTIA; například se jednalo o příkazy COLOR, SETCOLOR, PLOT, DRAWTO, POSITION či LOCATE.

Obrázek 13: Ukázka použití grafického režimu číslo 8, v němž se pracovalo s monochromatickou bitmapou o rozlišení 320×160 pixelů a obligátním čtyřřádkovým textovým polem.

Dále Atari BASIC obsahoval příkaz SOUND pro základní ovládání zvukového čipu POKEY (POKEY byl při práci v Atari BASICu nastaven do režimu čtyřkanálového zvukového generátoru, kde byl každému kanálu přiřazen jeden osmibitový čítač). Tento programovací jazyk dále umožňoval práci se skalárními proměnnými, jednorozměrnými poli (vektory) i dvourozměrnými poli (maticemi), v nichž mohla být uložena čísla s pohyblivou řádovou čárkou. Každé číslo bylo reprezentováno šesticí bajtů, jejich rozsah i přesnost tedy ležely zhruba v polovině mezi typy single a double známými z dnešních programovacích jazyků a matematických koprocesorů. Taktéž bylo možné pracovat s jednorozměrnými řetězci (pole řetězců však nebyla přímo v jazyku podporována, většinou se nahrazovala jediným řetězcem a vektorem indexů). Jednou z nevýhod Atari BASICu byla jeho pomalá interpretace a taktéž to, že dokázal pracovat pouze s šestibajtovými reálnými čísly, nikoli například s dvoubajtovými čísly celými, jak tomu bylo v některých jiných dialektech BASICu.

Obrázek 14: Jednoduchý program pro výpočet největšího společného dělitele (NSD, GCD) celých čísel z řady 2..10. V tomto programu jsou mj. využity i některé formátovací možnosti příkazu PRINT, například přechod na další tabulační zarážku (formátovací znak čárka) či zákaz přechodu na další řádek (formátovací znak středník).

6. Turbo BASIC – když jméno není pouze reklamním tahákem

Rychlost interpretru programovacího jazyka Atari BASIC záhy přestala mnoha programátorům a samozřejmě i uživatelům dostačovat. Někteří z vývojářů se namísto BASICu naučili využívat assembler mikroprocesoru MOS 6502, ovšem jiní by uvítali „pouze“ rychlejší variantu BASICu, ideálně ještě doplněnou o některé chybějící příkazy. Kromě poměrně neúspěšného Microsoft BASICu se záhy rozšířil překladač BASICu do strojového kódu (který byl ovšem v praxi použitelný především pro překlad již odladěných programů, nikoli pro samotný vývoj) a především Turbo BASIC, jehož autorem je známý Frank Ostrowski (tento programátor později vytvořil GFA BASIC pro osobní počítače Atari ST). Turbo BASIC téměř splňoval všechny sny BASICových programátorů – byl rychlejší než původní Atari BASIC, byl s Atari BASICem plně kompatibilní, díky programovému „odklápění“ ROM nabízel vývojářům více volné operační paměti (což působilo téměř magicky) a navíc Turbo BASIC obsahoval poměrně velké množství nových příkazů, ať již určených pro strukturované programování (nové typy programových smyček), tak i příkazy zjednodušující programátorovu každodenní činnost.

Obrázek 15: Program pro vykreslení Mandelbrotovy množiny naprogramovaný v Atari BASICu, ovšem beze změn použitelný i v Turbo BASICu.

Novými „grafickými“ příkazy byly například CIRCLE či TEXT (vykreslení textu do bitmapy), k příkazu SOUND přibyl příkaz DSOUND (práce se šestnáctibitovými čítači čipu POKEY namísto čítačů osmibitových), dvojice příkazů POKE a PEEK pracujících s hodnotami uloženými v jedné (osmibitové) paměťové buňce byla doplněna o šestnáctibitové varianty DPOKE a DPEEK, což programátorům ušetřilo opakované použití výrazů typu PEEK(88)+256*P­EEK(89) atd. Originální Turbo BASIC byl různým způsobem upravován a rozšiřován. Mezi tuzemské úpravy patří především zabudování ovladače Turba 2000, takže se práce s kazetovým magnetofonem v mnohém vylepšila (LOAD „T:POKUS.BAS“ namísto primitivního CLOAD atd.) a taktéž zabudování ovladače tiskárny BT-100 – kromě nové funkce příkazů LLIST, LPRINT atd. bylo dokonce možné vyvolat hardcopy obrazovky, tj. tisk aktuálního obsahu obrazovky a to i tehdy, pokud byl použit nějaký nestandardní grafický režim.

Obrázek 16: Výsledek běhu programu, jehož listing je zobrazený na patnáctém obrázku. Doba výpočtu Mandelbrotovy množiny dosahuje několika hodin v případě použití Atari BASICu a cca jednu hodinu při použití Turbo BASICu.

7. Commodore BASIC

V předchozích kapitolách jsme se zabývali popisem těch interpretrů programovacího jazyka BASIC, které byly dostupné pro osmibitové počítače Apple a Atari založené na mikroprocesoru MOS 6502. Třetím a pravděpodobně i nejznámějším zástupcem osmibitových domácích počítačů s mikroprocesorem MOS 6502 jsou počítače Commodore C64 a jejich nástupci, tj. především počítač Commodore C128, vybavený navíc i mikroprocesorem Z80, díky němuž mohl být na tomto počítači provozován operační systém CP/M. Vraťme se však k původnímu počítači Commodore C64, který je ze všech osmibitových počítačů vyráběných firmou CBM nejznámější (není se ostatně čemu divit, protože se jedná o jeden z vůbec nejprodávanějších domácích osmibitových mikropočítačů). Firma CBM dodávala k prakticky všem svým počítačům, počínaje Commodorem PET (1977) a konče Commodorem C128 (1985), interpret programovacího jazyka BASIC licencovaný firmou Microsoft.

Obrázek 17: Úvodní obrazovka interpretru jazyka BASIC na počítači Commodore C64.

Samotný způsob licencování stojí za zmínku, protože Bill Gates původně požadoval, aby za každou prodanou licenci Microsoft BASICu (tj. vlastně za každý prodaný počítač Commodore) firma CBM zaplatila Microsoftu tři dolary. Jack Tramiel na tuto nabídku pouze lakonicky odpověděl „I'm already married“ a Bill Gates nakonec souhlasil s tím, že bude svůj BASIC firmě CBM licencovat za 25000 dolarů bez dalších poplatků (nezávisle na počtu prodaných počítačů), což se Jacku Tramielovi samozřejmě vyplatilo, protože nakonec prodal několik desítek milionů počítačů Commodore C64, každý s interpretrem BASICu vytvořeného původně firmou Microsoft, pouze s malými úpravami provedenými inženýry z CBM (například došlo k odstranění známého „velikonočního vajíčka“, které se zobrazilo po zapsání příkazu WAIT 6502,1).

pc7104

Obrázek 18: Poměrně jednoduchý trik, pomocí něhož bylo možné na úvodní obrazovce interpretru jazyka BASIC zobrazit více než osm spritů. Všechny operace se sprity musely být v Commodore BASICu prováděny přímým zápisem do paměti příkazem POKE, teprve interpretr Simons's BASIC obsahoval specializované příkazy pro práci s grafickým čipem VIC-II..

BASIC dodávaný spolu s C64 je téměř klasickým zástupcem Microsoft BASICu – obsahuje základní příkazy pro řízení běhu programu, podporu pro práci s celými čísly (16bitový integer) i čísly reálnými, práci s řetězci, formátovaný výstup atd. U jmen proměnných se rozlišovaly první dva znaky a případný postfixový znak určující typ proměnné – $ pro řetězcové proměnné a % pro proměnné celočíselné. Ovšem některé příkazy citelně chyběly – především se jednalo o příkazy, pomocí nichž by bylo možné provádět vykreslování, pracovat se sprity, generovat zvuky atd. Všechny zmíněné operace bylo nutné provádět pomocí přímého přístupu do paměti (resp. do řídicích registrů čipů VIC-II a SID mapovaných do operační paměti) s využitím příkazů POKE a PEEK, což samozřejmě bylo méně přehledné, než použití specializovaných příkazů.

8. Simons' BASIC aneb co Microsoft nedokázal

Vzhledem k výše uvedeným nedostatkům originálního Microsoft BASICu není divu, že pro počítače Commodore C64 vzniklo několik dalších dialektů tohoto programovacího jazyka. Jedním z těchto dialektů byl Graphics BASIC, jehož autory byli Ron Gilbert a Tom McFarlane. Tento jazyk, který byl nabízen na kazetách a disketách, obsahoval cca 100 nových příkazů umožňujících vykreslování základních grafických tvarů, tvorbu spritů, přístup k možnostem zvukového čipu SID atd. Ovšem mnohem populárnější byl Simons' BASIC vyvinutý šestnáctiletým programátorem Davidem Simonsem v roce 1983 (právě z důvodu, že je název tohoto interpretru odvozený od Davidova příjmení, píše se „Simons' BASIC“ nikoli „Simon's BASIC“). Tento dialekt BASICu byl nabízen, na rozdíl od výše zmíněného Graphics BASICu, na cartridgi, i když v našich zemích se rozšířila spíše jeho kazetová a disketová verze.

Obrázek 19: Úvodní obrazovka Simons' BASICu.

Simons' BASIC rozšiřoval originální interpret jazyka BASIC o 114 nových příkazů, které sloužily k vykreslování základních geometrických tvarů v obou grafických režimech čipu VIC-II, dále příkazy pro práci se sprity (včetně detekce kolizí spritů), generování zvuku pomocí čipu SID s možností vytváření obálky, příkazy pro práci s disketovou jednotkou, nové možnosti práce s řetězci atd. Dále, což je neméně důležité, mohli programátoři používat strukturované příkazy pro řízení běhu programu, především programové smyčky typu REPEAT-UNTIL či LOOP-END LOOP, ale také plný rozhodovací příkaz IF-THEN-ELSE. Existence všech zmíněných (zajisté užitečných) příkazů však znamenala, že programátoři měli k dispozici o 8 kB operační paměti méně, což však pro mnoho aplikací nepředstavovalo nepřekonatelný problém.

CS24_early

Obrázek 20: Příručka k interpretru Simons' BASIC.

O některých dalších interpretrech BASICu dostupných pro osmibitové počítače Commodore se zmíníme v následující části tohoto seriálu.

9. Odkazy na Internetu

  1. Rosetta Code – Main Page
    http://rosetta­code.org/wiki/Ma­in_Page
  2. Rosetta Code – Category Basic
    http://rosetta­code.org/wiki/Ca­tegory:BASIC
  3. Dartmouth College Computation Center. 1964.-The original Dartmouth BASIC manual
    http://www.bit­savers.org/pdf/dar­tmouth/BASIC_Oc­t64.pdf
  4. The Original BASIC
    http://www.tru­ebasic.com/
  5. BASIC – Beginners All-purpose Symbolic Instruction Code
    http://hopl.mur­doch.edu.au/show­language.prx?ex­p=176
  6. FreeBASIC home page
    http://www.fre­ebasic.net/
  7. FreeBASIC Wiki
    http://www.fre­ebasic.net/wi­ki/wikka.php?wak­ka=FBWiki
  8. FreeBASIC Manual
    http://www.fre­ebasic.net/wi­ki/wikka.php?wak­ka=DocToc
  9. FreeBASIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Fre­eBASIC
  10. The Griffon Legend
    http://syn9.thin­gie.net/?table=grif­fonlegend
  11. QBasicJedi
    http://www.fre­ewebs.com/qba­sicjedi/
  12. QBasic/QuickBasic Downloads
    http://www.fre­ewebs.com/qba­sicjedi/qbdow­nloads.html
  13. QuickBASIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Qu­ickBASIC
  14. QBasic.com
    http://www.qba­sic.com/
  15. QBasic (Wikipedia)
    http://cs.wiki­pedia.org/wiki/QBa­sic
  16. Dialling with QBASIC
    http://www.my­sundial.ca/tsp/qba­sic.html
  17. Visual Basic .NET (česky)
    http://www.vbnet­.cz/
  18. BASIC (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/BA­SIC
  19. BASIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/BA­SIC
  20. Turbo BASIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Tur­bo_BASIC
  21. Sinclair BASIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Sin­clair_BASIC
  22. More BASIC Computer Games
    http://www.ata­riarchives.or­g/morebasicga­mes/
  23. How to build an interpreter in Java, Part 1: The BASICs
    http://www.ja­vaworld.com/jw-05–1997/jw-05-indepth.html
  24. Apple I
    http://applemu­seum.bott.org/sec­tions/computer­s/a1.html
  25. The Apple 1 history
    http://apple2his­tory.org/histo­ry/ah02.html
  26. The Apple 2 history
    http://apple2his­tory.org/histo­ry/ah03.html
  27. INTEGER BASIC Reference
    http://www.lan­dsnail.com/a2ref2­.htm
  28. APPLESOFT Reference
    http://www.lan­dsnail.com/a2ref­.htm
  29. Apple II Programming
    http://home.swbe­ll.net/rubywan­d/csa2pfaq.html
  30. Applesoft Lite: Applesoft BASIC for the Replica-1
    http://cowgod­.org/replica1/ap­plesoft/
  31. Speccy.cz
    http://www.spec­cy.cz/
  32. Planet Sinclair
    http://www.nvg­.ntnu.no/sincla­ir/
  33. World of Spectrum
    http://www.wor­ldofspectrum.or­g/
  34. Simons' BASIC
    http://en.wiki­pedia.org/wiki/Si­mons'_BASIC
  35. Simon's Basic
    http://www.le­mon64.com/?ma­inurl=http%3Aw­ww.lemon64.com/mu­seum/list.php%3Fli­neoffset%3D54%26­genre%3Dmanual­misc
  36. BASIC
    <a href=„http:www.c64-wiki.com/index­.php/BASIC“>http://­www.c64-wiki.com/index­.php/BASIC
  37. C64 Wiki: Simons Basic
    http://www.c64-wiki.de/index­.php/Simons_Ba­sic
  38. Simons' Basic (evaluation)
    http://www.ata­rimagazines.com/cre­ative/v9n11/60_­Simons_Basic.php
  39. Bill Gates' Personal Easter Eggs in 8 Bit BASIC http://www.pa­getable.com/?p=43

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.