Obsah
1. Programování v BASICu je životním stylem
3. Klasický BASIC s interaktivním prostředím
4. Interpretry BASICu po osmibitové mikropočítače
5. BASIC pro mikropočítače vybavené mikroprocesorem MOS 6502
6. BASIC pro mikropočítače vybavené mikroprocesorem Zilog Z80
7. Vyzkoušení interpretrů pro osmibitové mikropočítače
10. Klasický BASIC ve webovém prohlížeči
12. BASIC na stránkách 8bitworkshop
16. Lokální běh interpretru EndBASIC
17. Kombinace grafické a textové konzole
18. Předchozí články o programovacích jazycích BASIC
19. Předchozí články o kulatých výročích v oblasti programovacích jazyků
1. Programování v BASICu je životním stylem
Programovací jazyk BASIC neboli celým jménem Beginners'All-purpose Symbolic Instruction Code na začátku května oslavil 60 let od svého vzniku. Jednalo se o programovací jazyk, který – bez většího přehánění – zformoval minimálně jednu generaci programátorů. Historií vzniku a vývoje tohoto kdysi oblíbeného ale současně i nenáviděného jazyka jsme se již na Rootu zabývali v několika článcích, které jsou vypsány (pochopitelně i s příslušnými odkazy) osmnácté kapitole.
Obrázek 1: Manuál k původnímu BASICu (všimněte si roku výtisku).
V dnešním článku si řekneme, jakým způsobem je možné si BASIC, resp. přesněji řečeno jeho „klasickou“ variantu vyzkoušet s využitím současných technologií. Pro některé programátory totiž není BASIC pouze dalším programovacím jazykem, ale životním stylem :-).
Obrázek 2: Autory původního BASICu jsou John Kemeny a Thomas Kurtz.
Mladší programátoři si díky tomu mohou vyzkoušet, jakým způsobem se programovalo před desítkami let: bez online nápovědy, bez možnosti konzultovat na Stack Overflow, bez integrovaných vývojových prostředí a kopilotů, s manuály vysvětlujícími význam numerických kódů chyb, s minimalistickým editorem, mnohdy s naprostým minimem operační paměti a navíc na počítačích s mikroprocesory, které z dnešního pohledu vlastně „stojí“ (protože co dnes v tomto ohledu znamená frekvence 1MHz?). A použití moderních (či „moderních“) prostředků naznačí, zda se informatika ubírá spíše směrem vpřed nebo jestli spíše testujeme všechny slepé cesty, abychom později mohli s klasikem opakovat „Tudy ne, přátelé …!“.
Obrázek 3: Modul s interpretrem programovacího jazyka BASIC určený pro československé osmibitové mikropočítače IQ-151.
2. BASIC či BASICy?
Syntaxe původního programovacího jazyka BASIC byla částečně založena na FORTRANU II a ALGOLU 60. Není se ostatně čemu divit – oba autoři jazyka BASIC totiž předpokládali, že někteří studenti po zvládnutí BASICu postupně přejdou na FORTRAN, který byl ve druhé polovině šedesátých let minulého století stále považován za lingua francu programátorů. Původní BASIC byl z tohoto důvodu orientován především na programování matematicky zaměřených úloh – podporoval „přirozený“ zápis aritmetických výrazů včetně korektního vyhodnocování priorit operátorů a dokonce i práci s maticemi (některé pozdější interprety tohoto jazyka práci s maticemi nepodporovaly – což bude ostatně i případ většiny dále popisovaných variant BASICu). Ovšem po vydání původního BASICu začala vznikat nepřehledná směs různých odvozených jazyků z nichž některé se původnímu BASICu podobaly už jen názvem.
Obrázek 4: BASIC určený pro osmibitové mikropočítače Apple-II.
Již v úvodních kapitolách je tedy nutné zdůraznit, že programovací jazyk BASIC se v tomto poměrně důležitém ohledu odlišuje od většiny mainstreamových jazyků. Pokud například v nějakém textu vidíme zmínku o C, Javě, Pythonu atd., víme, že jde o názvy jazyků, které se sice postupně vyvíjí, ale (většinou) zůstávají zpětně kompatibilní a jedná se většinou o jedinou řadu postupně se rozšiřujících a vylepšujících se variant toho samého jazyka.
Obrázek 5: Nechvalně známý Microsoft BASIC pro počítače Commodore C64.
V případě BASICu tomu tak ovšem v žádném případě není, protože BASICem se na jednu stranu označují jednoduchoučké interpretry o velikosti 1kB s čísly řádků a pěti-šesti příkazy, na stranu druhou pak rozsáhlé projekty s vlastním IDE atd., které interpretují či překládají jazyk, který se vlastně původnímu BASICu vůbec nepodobá.
Obrázek 6: Úvodní obrazovka Simons' BASICu pro Commodore C64, který byl v mnoha ohledech lepší, než Microsoft BASIC (viz další kapitoly).
3. Klasický BASIC s interaktivním prostředím
V dnešním článku se ovšem zaměříme především na „klasický“ BASIC v podobě, v jakém ho známe z osmibitových domácích mikropočítačů, popř.z původního IBM PC (což byl hybrid mezi osmibitovým a šestnáctibitovým mikropočítačem). Bude se tedy jednat o projekty, které nabízí programovací jazyk s čísly řádků (někdy jsou již ovšem nepovinné), s příkazy skoků GOTO a GOSUB, bez možnosti definice vlastních datových typů, s automatickou inicializací proměnných a ideálně i s projekty, které v případě chyby jen lakonicky oznámí číslo (kód) chyby a popř. ještě laskavě dodají číslo řádku. Tím pádem ze seznamu vyřadíme i QBasic a s ním související projekt QB64 (ten je mimochodem dostupný online na adrese https://codedamn.com/online-compiler/qbasic) či FreeBasic (což je překladač). A taktéž vynecháme Small Basic, o němž ostatně na Rootu taktéž vyšly články [1] [2].
Obrázek 7: Atari BASIC je typickým představitelem klasického BASICu pro osmibitové domácí mikropočítače.
Zmiňme se ještě o hardwarových nárocích klasických BASICů určených pro osmibitové mikropočítače. Jednodušší verze BASICu si vystačily již se čtyřmi kilobajty paměti ROM, v níž byl uložen jak interpret, tak i poměrně jednoduchý textový editor umožňující interaktivní práci s interpretrem, a s pouhým jedním kilobajtem operační paměti, jejíž část byla navíc použita jako obrazová paměť. Mezi osmibitovými domácími počítači byly nejrozšířenější verze jazyka BASIC uložené v paměti ROM o kapacitě 8 až 16 kB.
Obrázek 8: Osmibitový mikropočítač Apple II Plus s dvojicí disketových jednotek Disk II, který obsahoval interpret programovacího jazyka Applesoft BASIC.
Díky použití takto velké kapacity ROM mohly tyto interpretry obsahovat větší množství příkazů (například pro práci s grafikou či zvuky), podporovaly výpočty s čísly uloženými ve formátu plovoucí řádové čárky atd. Jedním z důvodů poměrně malých nároků na kapacitu operační paměti bylo to, že interpretry BASICu každý programový řádek zadaný uživatelem ihned zpracovaly – klíčová slova se převedla na takzvané tokeny (většinou jednobajtové), jména proměnných na jednobajtové indexy do tabulky proměnných atd.
Obrázek 9: Jeden z prvních zveřejněných algoritmů zapsaných v programovacím jazyce BASIC. Jedná se o ukázkový program uvedený v manuálu původního BASICu, který byl vydán již v roce 1964 (viz též první obrázek s úvodním listem tohoto manuálu). Povšimněte si jedné zajímavosti – autoři v celém manuálu používají pro znak O (velké písmeno ó) znak 0, a pro číslici 0 naopak znak O, což je poněkud zvláštní a vymyká se to konvencím zavedeným u jiných systémů i programovacích jazyků.
4. Interpretry BASICu po osmibitové mikropočítače
Interpretrů BASICu pro osmibitové mikropočítače existuje několik desítek (a možná i stovek). Jedná se jak o interpretry, které byly dodávány společně s počítačem a byly tedy uloženy v ROM, ale taktéž o interpretry (či překladače) BASICu dodávané jako jakýkoli jiný SW, tedy na kazetách či disketách.
Obrázek 10: BASIC na slavném mikropočítači ZX-81.
5. BASIC pro mikropočítače vybavené mikroprocesorem MOS 6502
Za zmínku stojí zejména 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. 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 11: Výpočet Mandelbrotovy množiny v Atari BASICu, doba trvání výpočtu tohoto obrázku přesáhla osm hodin.
Integer BASIC 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). Z tohoto důvodu firma Apple nakonec zakoupila licenci na interpret programovacího jazyka BASIC od jisté firmy Micro-Soft. Ten se stal de facto standardem a byl součástí ROM pro většinu počítačů řady Apple II.
Obrázek 12: Program zapsaný v Applesoft BASICu spuštěný na počítači Apple II.
Osmibitové mikropočítače Atari 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. Jednalo se o jazyk obsahující příkazy, které 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.
Obrázek 13: 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).
Rychlost interpretru programovacího jazyka Atari BASIC záhy přestala mnoha programátorům a samozřejmě i uživatelům dostačovat. 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 14: 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..
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. 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ů.
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 15: Příručka k interpretru Simons' BASIC.
6. BASIC pro mikropočítače vybavené mikroprocesorem Zilog Z80
Druhým mikroprocesorem, který byl s oblibou používán v osmibitových domácích osmibitových mikropočítačích, je známý Zilog Z80. Těmito mikroprocesory byla vybavena celá řada mikropočítačů, počínaje minimalisticky pojatým ZX80 a ZX81 a konče Amstrad CPC. Zmiňme se tedy o jazyku BASIC pro mikropočítače Sinclair Research a taktéž o BASICu právě pro Amstrad CPC.
Obrázek 16: Laser BASIC (ZX Spectrum) nabízí dosti neobvyklé uživatelské prostředí.
Počítač ZX80 byl i přes své velmi skrovné technologické parametry (začínalo se s 1 kB RAM) vybaven takřka plnohodnotným interpretrem BASICu, ovšem omezeným na práci s celými čísly. Ten byl naprogramován Johnem Grantem ze společnosti firmy Nine Tiles. Původní Grantův interpret BASICu, který vznikl již v průběhu června a července roku 1979, měl sice délku okolo pěti kilobajtů, ovšem po cca jednom měsíci věnovaném optimalizacím a ladění se podařilo splnit zadání a vytvořit interpret programovacího jazyka BASIC uloženého v pouhých 4 kB ROM (spolu s editorem a dalšími strojovými rutinami), který pro svoji činnost vyžadoval jen 1 kB paměti RAM. Zajímavé bylo využití operační paměti, protože do již zmíněného jednoho kilobajtu bylo nutné ukládat jak tokenizovaný BASICový program, tak i obrazovou paměť, zásobník pro vyhodnocování výrazů, proměnné operačního systému aj.
Myšlenka uložení obrazových dat je poměrně jednoduchá – vzhledem k tomu, že výpis zdrojového kódu BASICového programu většinou nezabere celý textový řádek (32 znaků), jsou jednotlivé řádky uloženy v operační paměti za sebou jako řetězce o různé délce (samotný BASICový program je dokonce ještě mnohem kratší, neboť v paměti jsou uloženy pouze tokeny jednotlivých příkazů). Spolu s rostoucí velikostí tokenizovaného programu se zmenšuje počet zobrazených řádků. Tento způsob práce s pamětí byl v následující řadě počítačů Sinclair (počínaje slavným ZX Spectrem) opuštěn, protože u větších kapacit operačních pamětí postrádal smysl.
Obrázek 17: Laser BASIC nabízí dosti neobvyklé uživatelské prostředí.
Po ZX80 velmi rychle následoval známý počítač ZX81 a následně slavné ZX Spectrum. Všechny typy počítačů ZX Spectrum se v několika ohledech lišily od původních modelů ZX80 a ZX81, i když základ, tj. osmibitový mikroprocesor Zilog Z80, byl použitý ve všech počítačích firmy Sinclair (zde se jeho frekvence zvýšila na 3,5 MHz). Především došlo k rozšíření kapacity paměti ROM na 16 kB, takže bylo možné použít vylepšenou verzi Sinclair Basicu, která (kromě dalších vylepšení) obsahovala nové příkazy i funkce. Navíc díky vylepšené verzi čipu ULA odpadla potřeba příkazů SLOW a FAST (řízení generování video signálu).
Obrázek 18: Načítání Laser BASICu.
Zatímco interpret BASICu implementovaný na počítači ZX80 umožňoval práci pouze s celými čísly (více funkcionality se prostě do pouhých 4kB ROM nevešlo), bylo možné ve všech dalších verzích Sinclair BASICu používat i čísla uložená ve formátu plovoucí řádové čárky, sdružovat více hodnot do polí atd. Samozřejmě bylo možné pracovat i s řetězci, ovšem u proměnných uchovávajících řetězce se rozlišoval pouze jeden znak v jejich názvu, takže počet současně zpracovávaných řetězcových proměnných byl roven počtu znaků v abecedě (za jména těchto proměnných se přidávat znak $, ostatně jako snad ve všech dialektech „klasického“ BASICu).
Sinclair BASIC je v některých ohledech poměrně specifickým jazykem, který se odlišuje od dalších interpretrů a jejich editorů. Již v původní verzi Sinclair BASICu naprogramované Johnem Grantem byl použit způsob zápisu programu, který byl později použit i v dalších interpretrech BASICu využívaných na počítačích firmy Sinclair Research. Jednotlivé BASICové příkazy a funkce se totiž nevypisovaly znak po znaku (jak je to běžné dnes nebo jak to bylo běžné na dalších osmibitových počítačích), ale vkládaly se do editovaného programu vždy po celých slovech či symbolech. K tomuto účelu měla každá ze čtyřiceti kláves na klávesnici počítačů Sinclair vždy několik funkcí – většinou tři až pět. V závislosti na právě aktivním režimu kurzoru bylo možné do programu vložit celý vybraný příkaz nebo funkci, což bylo po relativně krátkém zaučení poměrně rychlé a navíc se tím zamezilo vzniku mnoha syntaktických chyb – které navíc interpret nemusel kontrolovat.
Obrázek 19: Přebal jedné z mnoha knih o Sinclair BASICu.
Tento způsob editace programů měl ještě jednu přednost, protože uživatelé měli přímo na klávesnici vypsány všechny příkazy dostupné v dané verzi Sinclair BASICu, takže odpadlo zdlouhavé listování v příručkách a navíc prozatím „tajemná“ slova napsaná na klávesnici lákala uživatele, aby si příslušné příkazy vyzkoušeli a naučili se je (poznamenejme jen, že jednotlivé příkazy byly interně ukládány jako osmibitové tokeny s hodnotami ležícími mezi 165 až 255).
Obrázek 20: Vývojové prostředí Beta BASICu. V horní části obrazovky se nachází program vypsaný menším fontem, zatímco příkaz v editačním řádku používá font standardní (velikost 8×8 pixelů).
Pro domácí osmibitové mikropočítače Amstrad CPC byl vyvinut poměrně vyspělý Locomotive Basic, který byl částečně odvozen od Mallard BASICu (pro ZX Spectrum+3 s CP/M, počítače Acorn doplněné o čip Z80 atd.). Locomotive Basic obsahoval příkazy, které dokázaly využívat multimediální možnosti mikropočítačů Amstrad CPC, zejména jeho grafické režimy (příkazy pro kreslení) a zvukový čip AY-3–8912 (příkazy pro ovládání všech zvukových kanálů). Tato varianta BASICu navíc obsahovala i příkazy pro práci se soubory uloženými na magnetofonové pásce (logicky jen část příkazů zde dávala smysl) i na disketě, takže bylo možné interpreter Locomotive Basicu využít i jako jednoduchý ale zato programovatelný shell.
Obrázek 21: Úvodní obrazovka Locomotive BASICu.
7. Vyzkoušení interpretrů pro osmibitové mikropočítače
Jakým způsobem je možné se vrátit v čase a vyzkoušet si dobové BASICy nebo jejich alternativy? Samozřejmě je možné získat původní hardware, který je mnohdy stále bez problémů použitelný a nabízený ve funkčním stavu. V původních osmibitových mikropočítačích jsou paměti ROM s originálními interpretry výše zmíněných BASICů (to se týká Atari, Commodore, Spectra i CPC). Druhý způsob spočívá v instalaci emulátorů těchto mikropočítačů, což ovšem vyžaduje získání obrazů původních ROM. To teoreticky naráží na problémy s licencemi, nicméně tento způsob je masivně používán.
Ovšem pro některé mikropočítače, například pro ZX Spectrum, existuje ještě jedna „čistější“alternativa, a to použití ROM s reimplementací OS i BASICu. V případě ZX Spectra se jedná o OpenSE BASIC, který se snaží o plnou zpětnou kompatibilitu s originálním BASICem, ovšem přidává další příkazy, opravuje některé chyby, podporuje zkratky příkazů apod. (viz například https://archive.org/details/zx-roms-fuse-roms). Využití najde například ve známém emulátoru ZX Spectra Fuse.
Obrázek 22: Úvodní obrazovka emulátoru ZX Spectra ve chvíli, kdy se použije OpenSE BASIC.
8. GW-BASIC
Poměrně velké množství interpretrů BASICu má „na svědomí“ společnost Microsoft (dříve psaná MicroSoft). Seznam BASICů, za nimiž stála, je skutečně rozsáhlý a nalezneme v něm tyto projekty:
# | Název jazyka | Rok vzniku | Poznámka |
---|---|---|---|
1 | Altair BASIC | 1975 | verze 4k a 8k |
2 | Applesoft BASIC | 1977 | pro řadu Apple II |
3 | Commodore BASIC | 1977 | pro slavný Commodore C64 |
4 | Level I BASIC | 1977 | pro počítače TRS-80 |
5 | Level II BASIC | 1978 | pro počítače TRS-80 |
6 | Color BASIC | 1980 | |
7 | MBASIC | 1980 | pro počítače s CP/M, vyžaduje 28kB RAM |
8 | IBM BASIC (IBM Personal Computer BASIC) | 1981 | taktéž Cassette BASIC |
9 | Atari Microsoft BASIC | 1982 | pro osmibitová Atari |
10 | Microsoft Basic-86 | 1982 | |
11 | MSX BASIC | 1983 | platforma MSX |
12 | Extended Color BASIC | 1983? | |
13 | Disk Extended Color BASIC | 1984 | |
14 | BASIC 1.0 (pro Thomson computers) | 1986 | |
15 | GW-BASIC | 1983 – 1988 | dodáván společně s DOSem |
16 | QBasic | 1991 | dodáván společně s DOSem od verze 5.0 |
17 | QuickBASIC | 1985 – 1990 | překladač |
Obrázek 23: Fotografie obrazovky počítače IBM PC se spuštěným interpretrem BASICu, v němž je napsán velmi jednoduchý program.
Zatímco IBM Cassette BASIC byl používán pouze na originálních počítačích IBM PC a nikoli na mnohých klonech (díky kterým se platforma IBM PC tak rozšířila), další dialekt programovacího jazyka BASIC byl dostupný všem uživatelům, protože měl formu běžné (spustitelné) aplikace určené pro operační systém MS-DOS. Jedná se o GW-BASIC vytvořený opět firmou Microsoft. Vývoj tohoto programovacího jazyka a taktéž standardizaci jeho příkazů napříč několika operačními systémy a platformami vedl Greg Whitten, který do firmy Microsoft nastoupil již v roce 1979 a měl tak velmi nízké číslo zaměstnance (sám uvádí, že pokud si dobře pamatuje, měl číslo 16).
Obrázek 24: Úvodní obrazovka původního GW-BASICu po jeho spuštění v emulátoru PC (zde se konkrétně jedná o DOSBOX).
Název tohoto programovacího jazyka zvolil sám Bill Gates, přičemž písmena „GW“ oficiálně znamenaly zkratku dvousloví „Gee-Whiz“, pravděpodobně se však původně jednalo o iniciály Grega Whittena. GW-BASIC se stal mezi uživateli počítačů IBM PC (především v dobách PC XT) velmi populární, i když se jednalo o dialekt, který se nijak zvlášť neodlišoval od dialektů BASICu dostupných na osmibitových mikropočítačích – dokonce bylo možné používat pouze jeden segment paměti, tj. 64 kB, i když samotný MS-DOS dokázal obsloužit 640 kB, resp. 1 MB pokud započítáme i oblast BIOSu, grafické paměti, popř. BIOSu síťové karty.
Obrázek 25: Až na první dva řádky je prostředí i chování PC-BASICu (emulátoru původního GW-BASICu) prakticky shodné s GW-BASICem.
GW-BASIC, který je možné považovat za vrcholnou formu „klasického“ BASICu s čísly řádků, nestrukturovanými příkazy, pouze globálními proměnnými a neexistencí uživatelských datových typů, se na platformě IBM PC stal velmi populární. Je to ostatně logické, protože byl dostupný všem uživatelům, tedy i neprogramátorům (a obecně lidem, kterým nestálo za to investovat čas do koupě překladače profesionálního jazyka, popř. lidem, kterým počítač nepatřil a přesto si chtěli vyzkoušet něco naprogramovat). Z tohoto důvodu bylo pro GW-BASIC vytvořeno obrovské množství programů na amatérské bázi a doposud existují fanoušci buď přímo GW-BASICu nebo jeho moderní reinkarnace PC-BASICu, o němž se zmíníme v navazující kapitole.
Obrázek 26: BSOD s chybou při běhu PC-BASICu.
1 REM ***************************** 2 REM Vyplneni obrazovky nahodnym 3 REM vzorem v rezimu SCREEN 9 4 REM 5 REM Uprava pro GW-BASIC 6 REM 7 REM ***************************** 8 REM 9 REM 10 SCREEN 9 20 DEF SEG = &hA000 30 FINAL=640*350/8 40 FOR I=0 TO FINAL 50 POKE I,255*RND(1) 60 NEXT I 999 END
9. Odzkoušení GW-BASICu
Jak si tedy můžeme GW-BASIC odzkoušet dnes? Na stránce gw-basic.com se nachází emulátor PC a operačního systému DOS s GW-BASICem, který běží přímo v prostředí webového prohlížeče a tudíž nevyžaduje žádnou instalaci ani shánění binárního souboru s GW-BASICem. Postačuje si pouze emulátor spustit a ocitnete se v prostředí původního GW-BASICu, které je opět velmi minimalistické, i když ne tak minimalistické, jako většina BASICů pro osmibitové domácí mikropočítače. Klasický GW-BASIC je ovšem možné provozovat lokálně, například v DOSBoxu. Jeho kód byl totiž zveřejněný pod licencí MIT, takže ho lze přeložit a používat (samotný kód je v assembleru, což pochopitelně překlad komplikuje, navíc nejsou k dispozici původní skripty určené pro překlad, ale pouze zdrojové kódy). Alternativně je ovšem možné využít projekt nazvaný PC-BASIC, což je reimplementace GW-BASICu s využitím Pythonu a dalších podpůrných knihoven. S tímto (pro milovníky historie IT zajímavým) projektem jsme se již seznámili v článku PC-BASIC: reinkarnace populárního i zatracovaného GW-BASICu.
Obrázek 27: Spuštění PC-Basicu v Linuxovém terminálu.
Některé ukázkové příklady určené pro běh v GW-BASICu naleznete na adrese https://github.com/tisnik/8bit-fame/tree/master/GW-BASIC.
10. Klasický BASIC ve webovém prohlížeči
Některé emulátory starších osmibitových mikropočítačů i s BASICem jsou dostupné online a spustitelné ve webovém prohlížeči, takže je možné si programování v BASICu vyzkoušet i tímto způsobem. Například lze najít relativně velké množství online emulátorů ZX81; jeden z nich je dostupný na stránce http://www.zx81stuff.org.uk/zx81/jtyone.html. Podobně si můžete vyzkoušet emulátor ZX Spectra (různých modelů) na stránce https://zx.researcher.su/en/. Poněkud problematické je nalezení emulátoru osmibitových Atari s povoleným BASICem (a nikoli určené pro spuštění her, například https://zerstoerung.de/jsa8e/). A o GW-BASICu pro IBM PC se zmíníme v navazujících kapitolách.
11. QuiteBasic
Prostředí Quite BASICu, které je dostupné na adrese http://www.quitebasic.com/, se snaží o reinkarnaci klasického BASICu, ovšem ve webovém ekosystému. Tato varianta BASICu umožňuje vykreslení grafiky na kreslicí plátno (canvas), přičemž rozlišení tohoto plátna (a nepřímo tak velikost „pixelů“) je možné měnit z menu. Je tak možné si například vyzkoušet některé vykreslovací algoritmy na plátnu s malým rozlišením (a zvětšenými pixely) a finální program může využívat větší rozlišení. Nevýhodou QuiteBasicu je poměrně pomalý běh programů – což sice na jednu stranu připomíná „staré dobré časy“, ale taktéž to vede k pomalému běhu některých složitějších algoritmů s vnořenými programovými smyčkami atd. Program se zapisuje do k tomu určeného textového okna, takže se zde nepoužívá interaktivní (a většinou značně omezený) editor známý z klasických BASICů.
Obrázek 28: Prostředí Quite BASICu.
12. BASIC na stránkách 8bitworkshop
Podobně jako QuiteBASIC je koncipován i editor a interpret BASICu dostupný na stránce https://8bitworkshop.com. Oproti klasickým BASICům zde má programátor k dispozici textový editor se zvýrazněním syntaxe a programy se spouští v samostatné ploše webové stránky (nejedná se tedy o interaktivní editor známý z osmibitových mikropočítačů). Nutno však dodat, že BASIC je na této stránce spíše druhořadým projektem, protože primárně zde nalezneme editor a překladač programů zapisovaných v assembleru pro různé typy počítačů a herních konzolí.
Obrázek 29: Editor BASICu a interpret BASICu na stránce https://8bitworkshop.com.
Obrázek 30: Hra (simulace) Hamurabi pocházející původně již v roku 1968.
13. BBC BASIC
Velmi důležitým dialektem BASICu, který byl velmi úspěšný především v západních zemích (ovšem nikoli v ČSSR, kde panovala, podobně jako v dalších státech RVHP, poněkud specifická situace), je BBC BASIC, jehož původním autorkou je Sophie Wilsonová a mezi další autory, kteří například provedli portaci tohoto programovacího jazyka na jiné platformy, patří i známý Richard Russell, který stále o tomto jazyku udržuje stránky dostupné na adrese http://www.bbcbasic.co.uk/index.html (z této stránky si můžete stáhnout i variantu BBC BASICu doplněnou o podporu knihovny SDL 2 a dostupnou i na Linux. K dispozici je ovšem i čistě terminálová varianta určená opět pro Linux a mnohé další varianty (Windows apod.).
Obrázek 31: Dobový plakát s počítačem Acorn BBC Micro.
Tento dialekt programovacího jazyka BASIC má poměrně zajímavou a taktéž dlouhou historii. Za jeho vznikem a vývojem stála, jak již ostatně název tohoto programovacího jazyka napovídá, britská BBC, která na počátku osmdesátých let minulého století chtěla vytvořit počítač (samozřejmě s nezbytným programovým vybavením), který by byl vhodný pro výuku a který by bylo možné masově rozšířit jak mezi školy, tak i na právě vznikající trh s domácími osmibitovými mikropočítači. Ovšem vzápětí se ukázalo, že samotná BBC nemá prostředky na to, aby sama v rozumném čase navrhla a následně masově vyráběla počítač, jenž byl mohl svými parametry i cenou konkurovat domácím osmibitovým počítačům vyráběným specializovanými firmami, které právě začaly poměrně překotným způsobem vznikat (popř. se jednalo o divize již zavedených technologických firem). Z tohoto důvodu BBC vypsala tendr, z něhož vyšla vítězně firma Acorn Computers z Cambridge. Historie BBC BASICu začala… a nejenom jeho, začala se současně psát i prehistorie mikroprocesorů ARM.
Obrázek 32: Strukturované konstrukce REPEAT a FOR v BBC BASICu.
Společnost Acorn Computers již v době, kdy tendr vypsaný BBC probíhal, konstruovala svoje počítače nazvané Atom vybavené sice poměrně rychlým, zato však omezeným a nekompatibilním dialektem BASICu, který se ukázal být nepříliš vhodným pro počítač určený mj. i pro výuku (jednou z pozitivních vlastností interpretru tohoto BASICu byla možnost zápisu assembleru spolu s BASICovými programy, která se později objevila i v BBC BASICu). Z tohoto důvodu BBC zpočátku uvažovala o tom, že nakoupí licence na dialekt BASICu nabízený firmou Microsoft, ovšem tento programovací jazyk, přesněji řečeno jeho varianta určená pro osmibitové mikroprocesory, postrádal některé vlastnosti, které byly vyžadovány k tomu, aby bylo možné tento dialekt použít pro potřeby výuky – týkalo se to například nedostupnosti již zmíněných programových konstrukcí umožňujících strukturované programování, taktéž nemožnosti použití dlouhých názvů proměnných (nikoli pouze jedno- či dvouznakových) atd.
Obrázek 32: Úvodní obrazovka BBC BASICu ve verzi pro ZX Spectrum. Tato verze vznikla později než původní dialekt pro počítače Acorn BBC Micro, mj. i z toho důvodu, že nejdříve musel být tento dialekt BASICu portován na mikroprocesory Intel 8080 a Zilog Z80 (a samozřejmě také proto, že ZX Spectrum začalo být prodáváno později než Acorn BBC Micro).
Z těchto důvodů bylo nakonec od myšlenky licencování Microsoft BASICu odstoupeno a pro nově vznikající platformu nazvanou příhodně Acorn BBC Micro byl vytvořen nový programovací jazyk s názvem BBC BASIC, který byl mj. navržen takovým způsobem, aby nebyl závislý na konkrétní počítačové platformě. Původní verze programovacího jazyka BBC BASIC z roku 1981 byla určena pro počítače vybavené slavnými osmibitovými mikroprocesory MOS 6502, ovšem v pozdějších letech došlo k jeho rozšíření i na další mikroprocesory a počítačové platformy, viz též údaje na stránce http://mdfs.net/Software/BBCBasic/.
14. BBC BASIC online
BBC BASIC je dostupný online (bez nutnosti instalace) na adrese https://bbcmic.ro/. Můžete si vyzkoušet jednoduché příklady, které jsem připravil na adrese https://github.com/tisnik/8bit-fame/tree/master/BBC%20Basic.
Obrázek 33: Online varianta BBC BASICu.
15. EndBASIC
Poměrně zajímavým novým interpretrem pro klasicky pojatý BASIC je EndBASIC. Tento interpret, jenž lze přeložit a provozovat v moderních operačních systémech, je možné spouštět v textové konzoli (bez podpory grafických příkazů), v grafické konzoli (kombinace textu a grafiky) nebo přímo ve webovém prohlížeči. V současnosti je zvykem zdůraznit, že aplikace vyvinuté v Rustu jsou vyvinuté v Rustu, takže vězte, že EndBASIC je skutečně vyvinut v tomto jazyce a lze ho přímo volat z rustovských programů.
EndBASIC se do značné míry snaží napodobit původní BASICy, ovšem navíc přináší i některé vylepšení, například nápovědu k jednotlivým prvkům jazyka (ovšem vyvolávanou příkazy, nikoli přes ovládací prvky GUI). Dále nabízí některé strukturované příkazy do značné míry odvozené z již zmíněného GW-BASICu, má základní příkazy pro práci s grafikou a dovoluje namísto čísel řádků (ty jsou však stále podporovány) použít pojmenovaná návěští. To není vše, protože lze přistupovat k programům a datům jak přes lokální souborový systém, tak i k objektům uloženým vzdáleně (to by mohlo být zajímavé ve výuce).
Online varianta EndBASICu, která nevyžaduje žádnou instalaci, je dostupná na adrese https://repl.endbasic.dev/. Tato varianta podporuje i grafické příkazy.
Obrázek 34: Online varianta EndBASICu.
16. Lokální běh interpretru EndBASIC
Ovšem EndBASIC si můžete stáhnout i pro váš operační systém ze stránky https://www.endbasic.dev/ a spouštět ho lokálně. Aby vše pracovalo korektně, tedy i grafické příkazy, je nutné mít nainstalovánu knihovnu SDL2; bez ní sice bude EndBASIC funkční, ale bez grafického výstupu. Mimochodem, instalace pro 64bitový Linux obsahuje slinkovaný EndBASIC o velikosti 11MB (porovnejme s BASICem pro ZX80 se 4kB; pokrok se evidentně nezastavil):
$ ls -lh total 11M -rwxr-xr-x. 1 ptisnovs ptisnovs 11M Dec 27 2022 endbasic -rw-r--r--. 1 ptisnovs ptisnovs 12K Dec 27 2022 LICENSE -rw-r--r--. 1 ptisnovs ptisnovs 24K Dec 27 2022 NEWS.md -rw-r--r--. 1 ptisnovs ptisnovs 42 Dec 27 2022 NOTICE -rw-r--r--. 1 ptisnovs ptisnovs 5.9K Dec 27 2022 README.md
Při startu interpretru EndBASICu je možné specifikovat cestu k lokálnímu adresáři, ve kterém jsou umístěny zdrojové kódy s programy psanými v BASICu:
$ ./endbasic --local-drive file://. EndBASIC 0.10.0 Copyright 2020-2022 Julio Merino Type HELP for interactive usage information. Ready
Obrázek 35: Lokálně spuštěná grafická konzole EndBASICu.
Příkazem dir si můžete vypsat obsah adresáře, v němž se mj. nachází i zdrojový kód test.bas:
dir Directory of LOCAL:/ Modified Size Name 2022-12-27 15:18 11358 LICENSE 2022-12-27 15:18 24552 NEWS.md 2022-12-27 15:18 42 NOTICE 2022-12-27 15:18 5955 README.md 2022-12-27 15:20 11332288 endbasic 2024-05-03 14:42 30 test.bas 6 file(s), 11374225 bytes Ready
Tento zdrojový kód si můžete načíst a následně spustit:
load "test.bas" Ready
Spuštění načteného programu:
run
Obrázek 36: Kombinace textu a grafiky v grafické konzoli.
17. Kombinace grafické a textové konzole
V EndBASICu je možné, podobně jako u některých dobových osmibitových mikropočítačů, na ploše obrazovky zkombinovat text (zdrojový kód atd.) s grafikou. Ukažme si to na velmi jednoduchém příkladu, který vykreslí několik barevných úseček:
for i=0 to 80 color i gfx_line i * 5, 0, 0, 400-i*5 gfx_line 640 - i * 5, 0, 639, 400-i*5 next
Výsledek by měl vypadat přibližně následovně:
Obrázek 37: Kombinace textu a grafiky v grafické konzoli.
V dalším příkladu je realizováno vykreslení vzorku (nejedná se však o fraktál) na obrazovku. Stále jsme omezeni pouze na patnáct základních barev:
for y = 0 to 400 for x = 0 to 400 c = int(x*x/20+y*y/20) c = c MOD 16 color c gfx_pixel x, y next next
Povšimněte si, že do vzorku se po ukončení programu „vepsala“ zpráva „Ready“ a na dalším řádku se zobrazil kurzor:
Obrázek 38: Kombinace textu a grafiky v grafické konzoli.
18. Předchozí články o programovacích jazycích BASIC
S různými variantami BASICu (resp. o různých jazycích, které o sobě tvrdí, že jsou BASICem) jsme se již na stránkách Roota několikrát setkali, a to konkrétně v následujících článcích:
- Programovací jazyk BASIC na osmibitových mikropočítačích
https://www.root.cz/clanky/programovaci-jazyk-basic-na-osmibitovych-mikropocitacich/ - Programovací jazyk BASIC na osmibitových mikropočítačích (2)
https://www.root.cz/clanky/programovaci-jazyk-basic-na-osmibitovych-mikropocitacich-2/ - Programovací jazyk BASIC na osmibitových mikropočítačích (3)
https://www.root.cz/clanky/programovaci-jazyk-basic-na-osmibitovych-mikropocitacich-3/#k09 - Programovací jazyk BASIC na osmibitových mikropočítačích (dokončení)
https://www.root.cz/clanky/programovaci-jazyk-basic-na-osmibitovych-mikropocitacich-dokonceni/ - Programovací jazyk BASIC na herní konzoli Atari 2600
https://www.root.cz/clanky/programovaci-jazyk-basic-na-herni-konzoli-atari-2600/ - Vývojové nástroje používané v dobách osmibitových mikropočítačů
https://www.root.cz/clanky/vyvojove-nastroje-pouzivane-v-dobach-osmibitovych-mikropocitacu/ - BaCon: transpřekladač BASICu do jazyka C
https://www.root.cz/clanky/bacon-transprekladac-z-jazyka-basic-do-jazyka-c/ - Basic-256: další moderní reinkarnace BASICu určená pro výuku programování
https://www.root.cz/clanky/basic-256-dalsi-moderni-reinkarnace-basicu-urcena-pro-vyuku-programovani/ - Základy práce s grafickou plochou v jazyku Basic-256
https://www.root.cz/clanky/zaklady-prace-s-grafickou-plochou-v-jazyku-basic-256/ - PC-BASIC – reinkarnace populárního i zatracovaného GW-BASICu
https://www.root.cz/clanky/pc-basic-reinkarnace-popularniho-i-zatracovaneho-gw-basicu/ - Small Basic: moderní reinkarnace BASICu určená pro výuku programování
https://www.root.cz/clanky/small-basic-moderni-reinkarnace-basicu-urcena-pro-vyuku-programovani/ - Vestavěné objekty Small Basicu: práce s grafikou, časovačem, reakce na události
https://www.root.cz/clanky/vestavene-objekty-small-basicu-prace-s-grafikou-casovacem-reakce-na-udalosti/ - Tvorba her pro Atari 2600 v Batari BASICu: úkol pro hardcode programátory
https://www.root.cz/clanky/tvorba-her-pro-atari-2600-v-batari-basicu-ukol-pro-hardcode-programatory/ - Tvorba her pro Atari 2600 v Batari BASICu: ovládání čipu TIA
https://www.root.cz/clanky/tvorba-her-pro-atari-2600-v-batari-basicu-ovladani-cipu-tia/ - Tvorba her pro Atari 2600 v Batari BASICu: standardní kernel a zvuky
https://www.root.cz/clanky/tvorba-her-pro-atari-2600-v-batari-basicu-standardni-kernel-a-zvuky/
19. Předchozí články o kulatých výročích v oblasti programovacích jazyků
V této kapitole jsou uvedeny odkazy na již vyšlé články, v nichž jsme si připomněli narozeniny některých důležitých (a ve dvou případech i přelomových) programovacích jazyků:
- The future's bright… the future's Cobol
https://www.root.cz/clanky/the-future-s-bright-the-future-s-cobol/ - BBC BASIC i QBasic oslavují svá kulatá výročí
https://www.root.cz/clanky/bbc-basic-i-qbasic-oslavuji-sva-kulata-vyroci/ - Sedmdesátiny assemblerů: lidsky čitelný strojový kód
https://www.root.cz/clanky/sedmdesatiny-assembleru-lidsky-citelny-strojovy-kod/ - Šedesátiny převratného programovacího jazyka ALGOL-60
https://www.root.cz/clanky/sedesatiny-prevratneho-programovaciho-jazyka-algol-60/ - Další kulaté výročí v IT: dvacet let existence Pythonu 2
https://www.root.cz/clanky/dalsi-kulate-vyroci-v-it-dvacet-let-existence-pythonu-2/ - Třicet let od vydání revolučního Turbo Pascalu 5.5
https://www.root.cz/clanky/tricet-let-od-vydani-revolucniho-turbo-pascalu-5–5/ - Oslava 55 let od vzniku první implementace programovacího jazyka APL
https://www.root.cz/clanky/oslava-55-let-od-vzniku-prvni-implementace-programovaciho-jazyka-apl/
20. Odkazy na Internetu
- BASIC oslavil 60 let (zprávička)
https://www.root.cz/zpravicky/basic-oslavil-60-let/ - Online IDE s interpretrem BASICu
https://8bitworkshop.com/v3.11.0/ - gotBASIC.com
https://gotbasic.com/atari.html - Informace o GW-Basicu
https://gw-basic.com/ - Stránka s živým EndBASICem
https://repl.endbasic.dev/ - EndBASIC: BASIC interpreter + DOS environment, reimagined
https://www.endbasic.dev/ - GWBASIC User's Manual
http://www.antonis.de/qbebooks/gwbasman/index2.html - GFA-BASIC
http://sites.google.com/site/gfabasic16/ - E-mail od tvůrce GW-Basicu
http://www.classiccmp.org/pipermail/cctech/2005-April/042999.html - General Electric GE-400
http://www.feb-patrimoine.com/PROJET/ge400/ge-400.htm - GE-400 Time-sharing information systems:
http://www.computerhistory.org/collections/accession/102646147 - A brief history of the development of BASIC (pravděpodobně již nefunkční odkaz)
http://www.phys.uu.nl/~bergmann/history.html - History of BASIC (PDF)
http://www.q7basic.org/History%20of%20BASIC.pdf - Dartmouth College Computation Center. 1964.-The original Dartmouth BASIC manual
http://www.bitsavers.org/pdf/dartmouth/BASIC_Oct64.pdf - The Original BASIC
http://www.truebasic.com/ - BASIC – Beginners All-purpose Symbolic Instruction Code
http://hopl.murdoch.edu.au/showlanguage.prx?exp=176 - The History of the Mainframe Computer
http://www.vikingwaters.com/htmlpages/MFHistory.htm - Dartmouth Time Sharing System
http://en.wikipedia.org/wiki/Dartmouth_Time_Sharing_System - General Electric (Wikipedia)
http://en.wikipedia.org/wiki/General_Electric - GE 225 vs. IBM 1401
http://ed-thelen.org/GE225-IBM1401.html - A GE-225 is found
http://ed-thelen.org/comp-hist/GE225.html - G.E. 200 Series Computers
http://www.smecc.org/g_e__200_series_computers.htm - DTSS – Dartmouth Time Sharing System
http://dtss.dartmouth.edu/index.php - John G. Kemeny: BASIC and DTSS: Everyone a Programmer
http://dtss.dartmouth.edu/everyoneaprogrammer.php - GE-200 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-200_series - GE-400 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-400_series - GE-600 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-600_series - ZX Basic Manual
http://www.worldofspectrum.org/ZXBasicManual/ - ZX81 BASIC Programming
http://www.worldofspectrum.org/ZX81BasicProgramming/ - Sinclair BASIC History
http://scratchpad.wikia.com/wiki/Sinclair_BASIC_History - Sinclair BASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Sinclair_BASIC - Sinclair BASIC (Wikipedia EN)
http://en.wikipedia.org/wiki/Sinclair_BASIC - Beta BASIC (Wikipedia EN)
http://en.wikipedia.org/wiki/Beta_BASIC - Beta BASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Beta_BASIC - BETA BASIC NEWSLETTER No 8
http://spectrum128.ru/help/BetaBasicNewsletter8.pdf - R. T. RUSSELL: The home of BBC BASIC
http://www.rtrussell.co.uk/ - R. T. RUSSELL: A History of BBC BASIC
http://www.cix.co.uk/~rrussell/bbcbasic/history.html - SuperBASIC (Wikipedia EN)
http://en.wikipedia.org/wiki/SuperBASIC - SuperBASIC (Wikipedia CZ)
http://en.wikipedia.org/wiki/SuperBASIC - Laser Basic/Laser Compiler
http://www.sincuser.f9.co.uk/049/laser.htm - Laser BASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Laser_BASIC - BBC BASIC
http://www.bbcbasic.co.uk/bbcbasic.html - BBC BASIC
http://mdfs.net/Software/BBCBasic/ - BBC BASIC (Z80) for the ZX Spectrum
http://mdfs.net/Software/BBCBasic/Spectrum/ - BBC BASIC (Wikipedia CZ)
http://en.wikipedia.org/wiki/BBC_BASIC - BeebWiki – 8-bit Acorn Computer Wiky
http://beebwiki.jonripley.com/Main_Page - Porovnání osmibitů
http://porovnani8bitu.spaces.live.com/ - Rosetta Code – Main Page
http://rosettacode.org/wiki/Main_Page - Rosetta Code – Category Basic
http://rosettacode.org/wiki/Category:BASIC - QBasicJedi
http://www.freewebs.com/qbasicjedi/ - QBasic/QuickBasic Downloads
http://www.freewebs.com/qbasicjedi/qbdownloads.html - QuickBASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/QuickBASIC - QBasic.com
http://www.qbasic.com/ - QBasic (Wikipedia)
http://cs.wikipedia.org/wiki/QBasic - Dialling with QBASIC
http://www.mysundial.ca/tsp/qbasic.html - BASIC (Wikipedia EN)
http://en.wikipedia.org/wiki/BASIC - BASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/BASIC - Turbo BASIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Turbo_BASIC - More BASIC Computer Games
http://www.atariarchives.org/morebasicgames/ - How to build an interpreter in Java, Part 1: The BASICs
http://www.javaworld.com/jw-05–1997/jw-05-indepth.html - Apple I
http://applemuseum.bott.org/sections/computers/a1.html - The Apple 1 history
http://apple2history.org/history/ah02.html - The Apple 2 history
http://apple2history.org/history/ah03.html - INTEGER BASIC Reference
http://www.landsnail.com/a2ref2.htm - APPLESOFT Reference
http://www.landsnail.com/a2ref.htm - Apple II Programming
http://home.swbell.net/rubywand/csa2pfaq.html - Applesoft Lite: Applesoft BASIC for the Replica-1
http://cowgod.org/replica1/applesoft/ - Simons' BASIC
http://en.wikipedia.org/wiki/Simons'_BASIC - Simon's Basic
http://www.lemon64.com/?mainurl=http%3A//www.lemon64.com/museum/list.php%3Flineoffset%3D54%26genre%3Dmanualmisc - BASIC
http://www.c64-wiki.com/index.php/BASIC - C64 Wiki: Simons Basic
http://www.c64-wiki.de/index.php/Simons_Basic - Simons' Basic (evaluation)
http://www.atarimagazines.com/creative/v9n11/60_Simons_Basic.php - Bill Gates' Personal Easter Eggs in 8 Bit BASIChttp://www.pagetable.com/?p=43
- Kladivo na programy (je tam třeba popsán způsob nahrávání a ochran programů protí kopírování a crackování)
http://www.grandjihlava.cz/tmp/kladivo.pdf - Didaktik Gama návod k obsluze
http://www.grandjihlava.cz/tmp/navod.pdf - Můj přítel Didaktik Gama
http://www.grandjihlava.cz/tmp/priteldidaktik.pdf - Tip & trip pro Didaktik
http://www.grandjihlava.cz/tmp/tiptrikdidaktik.pdf - Muzeum československých mikropočítačů
http://cs-pocitace.ic.cz/ - Popis modulů a aplikací pro IQ-151
http://cs.felk.cvut.cz/~bily/iq151/ - IQ 151
http://osmi.tarbik.com/cssr/iq151.html - „Domácí počítače“ nedávné minulosti
http://www.fi.muni.cz/usr/jkucera/pv109/xkrejcir.htm - ZPA: IQ-151
http://www.homecomputer.de/pages/easteurope_cz.html#iq151 - Zrození IQ-151
http://www.iq151.net/index.htm - Stručná historie počítače IQ150/IQ151
http://www.iq151.net/history.htm - Old Computers – IQ 151
http://www.old-computers.com/MUSEUM/computer.asp?st=1&c=1045 - Wikipedia EN: IQ 151
http://en.wikipedia.org/wiki/IQ151 - Wikipedia CZ: IQ 151
http://cs.wikipedia.org/wiki/IQ151 - JtyOne Online ZX81 Emulator
http://www.zx81stuff.org.uk/zx81/jtyone.html - OpenSE BASIC
https://zxdesign.itch.io/opense