Hlavní navigace

Programovací jazyky a vývojové nástroje pro mikropočítače společnosti Sinclair Research

1. 6. 2021
Doba čtení: 35 minut

Sdílet

 Autor: Depositphotos
Dnešní článek, jenž tematicky navazuje na trojici článků o programovacích jazycích a vývojových nástrojích pro osmibitové počítače Atari, je věnován programovacím jazykům pro počítače firmy Sinclair Research.

Obsah

1. Programovací jazyky a vývojové nástroje pro mikropočítače společnosti Sinclair Research

2. První mikropočítače společnosti Sinclair Research

3. ZX80

4. ZX81

5. Slavné ZX Spectrum a ZX Spectrum+

6. Základní parametry ZX Spectra

7. ZX Spectrum 128

8. Grafický režim ZX Spectra

9. Vliv ZX80 a jeho následovníků na další vývoj IT

10. Vývoj programovacího jazyka Sinclair BASIC

11. Specifické vlastnosti Sinclair BASICu

12. Seznam příkazů Sinclair BASICu a odlišnosti mezi jeho jednotlivými verzemi

13. Laser BASIC

14. Grafické příkazy, předávání parametrů grafickým příkazům

15. Laser Compiler

16. Editor spritů

17. Dema

18. Obsah navazujícího článku

19. Odkazy na Internetu

1. Programovací jazyky a vývojové nástroje pro mikropočítače společnosti Sinclair Research

V dnešním článku se postupně zaměříme na tři témata. Nejprve si alespoň ve stručnosti popíšeme hardwarové a softwarové konfigurace osmibitových domácích mikropočítačů navržených a prodávaných společností Sinclair Research (vynecháme tedy modely prodávané až firmou Amstrad, například ZX Spectrum +2 atd.). Druhým tématem bude programovací jazyk, se kterým se setkal prakticky každý uživatel ZX Spectra a který musel umět alespoň minimálně používat, například pro nahrání her příkazem LOAD (až ZX Spectrum 128 nabídlo načítání aplikací přímo z hlavního menu). Jedná se o Sinclair BASIC, který se postupně vyvíjel tak, aby jeho možnosti odpovídaly příslušnému typu mikropočítače. A konečně třetím tématem dnešního článku jsou další interpretry a překladače programovacího jazyka BASIC určené pro počítače ZX Spectrum 48k i pro jeho pokračovatele (v této části tedy již budeme ignorovat slavné, i když poněkud minimalisticky navržené mikropočítače ZX80 a ZX81).

Obrázek 1: Dobová reklama na počítač ZX80.
Zdroj: https://nosher.net/archives/com­puters/adve026

Po hardwarové stránce jsou osmibitové domácí mikropočítače ZX80, ZX81 i ZX Spectrum zcela odlišné od mikropočítačů Atari, s jejichž vývojářským software jsme se setkali v článcích [1] [2] a [3]. Ovšem z hlediska vývojářských nástrojů jsou si naopak tyto dvě platformy podobné, což ovšem není překvapující, protože vznikly a byly používány ve stejném časovém období, určeny byly pro podobný trh a měly podobná hardwarová omezení (kapacita RAM, kapacita ROM, dostupné externí paměti). Primárním jazykem tedy byl dialekt programovacího jazyka BASIC, a to na obou platformách v relativně primitivní podobě. K dispozici byly i monitory a více či méně sofistikované assemblery, a to jak s podporou maker, tak i bez této podpory. Kromě toho i na Spectru nalezneme větší množství překladačů vyšších programovacích jazyků, a to včetně Pascalu, céčka (nabízených například firmou HiSoft). S některými vývojovými nástroji, které spadají do této kategorie, se seznámíme v navazujícím článku.

Obrázek 2: Dobová reklama na mikropočítač ZX81, pokračovatele ZX80. Jeho cena (bez periferních zařízení) byla menší než 100 liber, takže se spolu se ZX80 jednalo o nejlevnější skutečně programovatelný počítač na trhu. I přes některé nedostatky se tento mikropočítač stal velmi oblíbený a připravil cestu pro svého slavného nástupce – ZX Spectrum.

Poznámka na úvod: všechny screenshoty jsou zvětšeny na dvojnásobné rozlišení, tj. namísto bitmap o rozlišení 256×192 pixelů jsou použity rastrové obrázky s rozlišením 512×384 pixelů, což (alespoň co se týká velikosti) bude více odpovídat tomu, co mohli vidět uživatelé reálného ZX80, ZX81 či ZX Spectra.

Obrázek 3: Některé hry (především ty modernější) dokázaly i přes omezení grafického režimu ZX Spectra vykreslit vícebarevné objekty, i když při jejich překryvu docházelo k nežádoucím změnám barev.

2. První mikropočítače společnosti Sinclair Research

Společnost Sinclair Research v průběhu své existence navrhla a vyráběla různé typy mikropočítačů. Prvním zařízením, které už lze skutečně označit slovem „počítač“, resp. přesněji „mikropočítač“, byl MK14 neboli celým názvem Microcomputer Kit 14. Jednalo se o stroj postavený nad čipem National Semiconductor SC/MP, který obsahoval 256 bajtů RAM (rozšiřitelná na 640 bajtů) a 512 bajtů ROM. Tento mikropočítač bylo nutné po dodání sestavit (dodáván byl skutečně jako kit, jak již ostatně jeho název naznačuje), takže spadal do oblasti zákazníků znalých konstrukce elektronických zařízení. S dalšími mikropočítači společnosti Sinclair však nemá prakticky nic společného (snad jen snahu dodat co nejlepší výkon za co nejmenší náklady).

Obrázek 4: Úvodní obrazovka ZX Spectra 48k s názvem společnosti.

Poznámka: jméno firmy Sinclair Research budu v tomto článku používat i v situaci, kdy měla stejná společnost jiný název. Zcela původní jméno pocházející z roku 1961 totiž znělo Sinclair Radionics. V roce 1975 došlo k přejmenování na Ablesdeal a ještě v témže roce došlo k přejmenování na Sinclair Instrument. V roce 1977 došlo k další změně jména na Science of Cambridge, v roce 1979 na Sinclair Computers a konečně v roce 1981 na Sinclair Research, což je ostatně i jméno, které se objevuje v úvodní zprávě zobrazené po spuštění ZX Spectra.

Obrázek 5: Úvodní obrazovka ZX Spectra 128 s názvem společnosti.

3. ZX80

Prvním skutečným domácím počítačem vyráběným firmou Sinclair Research byl osmibitový počítač ZX80, jenž byl na trh uveden v lednu 1980 – odtud je ostatně odvozen i jeho název. Cena počítače v základní výbavě s 1 kB RAM byla rovna 79,95 librám (jednalo se o cenu stavebnice, protože již sestavený počítač překročil svou cenou 99 liber). Po hardwarové stránce se jednalo o velmi jednoduchý systém s pouhými osmnácti čipy, včetně slavného mikroprocesoru Zilog Z80 a pamětí DRAM i ROM. V základní konfiguraci byl ZX80 vybaven pouhým jedním kilobajtem operační paměti, kterou bylo možné rozšířit až na 16 kB, pamětí ROM o kapacitě 4 kB, jenž obsahovala interpret poměrně jednoduchého jazyka Basic (viz další kapitoly) a již zmíněným mikroprocesorem Zilog Z80A s hodinovou frekvencí 3,25 MHz (od této frekvence je odvozeno generování video signálu). Program bylo možné zaznamenat na kazetu či pásku přes externí magnetofon, podobně jako u dalších osmibitových počítačů (disketové jednotky byly na začátku osmdesátých let minulého století poměrně drahé, nepočítáme-li ovšem slavnou disketovou jednotku pro Apple-II zkonstruovanou Stevem Wozniakem).

Obrázek 6: Nová folie na klávesnici počítače ZX80.

Osmibitové domácí mikropočítače Sinclair ZX80 a v následující kapitole popsaný Sinclair ZX81 pracovaly pouze v textovém režimu, v němž bylo na jedné textové řádce uloženo maximálně 32 znaků a celkový počet textových řádků byl roven 24 (slovo „maximálně“ jsem použil záměrně, protože se délka jednotlivých řádků mohla lišit, jak si ostatně řekneme v navazujících odstavcích). Vzhledem k tomu, že prvních osm znaků ze speciální znakové sady tohoto počítače obsahovalo čtverce a obdélníky se stranou rovnou jedné polovině šířky znaku a k dispozici byly i inverzní varianty znaků (viz další screenshot), bylo možné z těchto šestnácti znaků poměrně jednoduše sestavit bitmapu o rozlišení 64×48 „čtverečků“ (ve skutečnosti byl každý „čtvereček“ představován maticí o velikosti 4×4 pixely). Potřebná kapacita paměti pro takto vytvořenou „bitmapu“ dosahovala až 768 bajtů, což představuje celé tři čtvrtiny kapacity operační paměti původního mikropočítače ZX80, které bylo, jak jsme si již řekli v předchozím odstavci, ve své základní verzi vybaveno pouhým jedním kilobajtem operační paměti.

Obrázek 7: Znaková sada používaná u počítače Sinclair ZX80. Z prvních osmi znaků a jejich inverzních variant lze vytvářet jednoduché černobílé obrazce s rozlišením 64×48 pixelů.

Programátoři však záhy přišli na způsob, jakým je možné programově ovládat vykreslování a teoreticky tak dosáhnout maximálního hardwarově podporovaného rozlišení na tomto počítači – plných 256×192 pixelů (ovšem zobrazovala se pouze černá a šedá barva, podpora pro barevný výstup byla až doménou slavného ZX Spectra). V následujícím textu si proto ve stručnosti popíšeme jak způsob „standardního“ vytváření obrazu na tomto počítači, tak i různé triky, které je možné se ZX80 provádět. Způsob vykreslování je u počítače ZX80 velmi poměrně nápaditý, neboť se návrhářům tohoto systému podařilo snížit počet nutných integrovaných obvodů na naprosté minimum a navíc je jak pro uložení zobrazovaných dat, tak i vlastního programu (psaného většinou v Sinclair BASICu, resp. přesněji řečeno v jeho první verzi) využito pouze nepatrné množství paměti – a to pouhý jeden kilobajt. 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 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ů, ve své podstatě jde o předchůdce dnešních bajtkódů).

Obrázek 8: Všechny objekty v této hře jsou vykresleny pomocí semigrafických znaků nabízených mikropočítačem ZX80. Například kola děl jsou vytvořena z inverzních nul, střely jsou představovány čtverečkem o rozměrech 4×4 pixely (viz první znaky ve znakové sadě) apod.

Kódy znaků uložených v řetězcích různé délky (každý řetězec byl od dalšího řádku oddělen znakem NEWLINE) byly ve vykreslovací rutině postupně načítány mikroprocesorem a na základě právě aktuálního vykreslovaného obrazového mikrořádku (znaky byly vysoké přesně osm mikrořádků, termínem mikrořádek je zde myšlena jedna obrazová linka na televizní obrazovce – což není přesné, neboť se vykreslují půlsnímky) byl z paměti ROM načten bajt představující osm pixelů daného znaku. Výpočet adresy s uloženým bitovým vzorkem byl jednoduchý – kód znaku se vynásobil 64 (což lze provést bitovým posunem) a k této hodnotě se přičetlo číslo vykreslovaného mikrořádku modulo 8. Samotné načtení bitů sice inicioval mikroprocesor (vystavil na adresovou sběrnici adresu vypočtenou výše uvedeným způsobem), ovšem skutečný obsah získaný z paměti ROM byl přenesen do pomocných obvodů, které tyto bity zpracovaly. Konkrétně celou osmici bitů převedly na video signál, tj. černou či bílou (šedou barvu). Tímto způsobem se načetly a vykreslily všechny osmice bitů ležících na jednom mikrořádku. Vzhledem k tomu, že na jednom textovém řádku je uloženo 32 znaků, je jeden mikrořádek tvořen 32×8=256 bity (pixely).

Obrázek 9: Další hra využívající originální znakovou sadu počítače ZX80.

Vzhledem ke konstrukci ZX80 sice nebylo možné, aby adresa, ze které se bity představující mikrořádek znaku načítají, ukazovala do paměti RAM (nelze si tedy vytvořit uživatelsky definovanou sadu znaků), ale s využitím šikovné manipulace s registrem I, který ukazoval na tabulku znaků, mohl být každý mikrořádek znaku přečten z jiné oblasti ROM, čehož některé hry využívaly pro zvýšení rozlišení při vykreslování bitmap až na teoretickou hodnotu 256×192 pixelů. Ovšem ne všechny bitové kombinace lze tímto způsobem zobrazit, protože znaková sada obsahuje pouze 64 znaků a jejich inverzních protějšků – na každém mikrořádku lze tedy zvolit pouze jednu ze 128 kombinací, i když pro osm bitů (pixelů) existuje kombinací 256.

Obrázek 10: Většina screenshotů těchto her byla získána pomocí emulátorů ZX81 – viz odkazy uvedené v poslední kapitole.

4. ZX81

Následovníkem výše popsaného domácího počítače ZX80 byl mikropočítač ZX81, který byl na trh uveden počátkem roku 1981 (jméno tedy opět „sedí“). Tento mikropočítač byl obchodně velmi úspěšný, protože jen za prvních deset měsíců se prodalo čtvrt milionu kusů; celkově bylo vyrobeno a prodáno dokonce přes jeden milion těchto systémů (a to na samotném začátku osmdesátých let minulého století, kdy větší část veřejnosti měla jen značně mlhavé představy o tom, co že počítač vlastně je a k čemu by mohl být dobrý). Ve své podstatě se jedná o vylepšení ZX80, protože základní funkcionalita zůstala zachována. Osmnáct samostatných integrovaných obvodů se sloučilo do jediného čipu ULA (Uncomitted Logic Array), kapacita paměti ROM se zdvojnásobila na 8 kB (zejména došlo k přidání rutin pro výpočty v systému pohyblivé řádové čárky – viz další kapitoly) a i kapacita operační paměti dosahovala namísto původního jednoho kilobajtu 16 kB až 64 kB (ovšem adresovatelných bylo maximálně 56 kB, neboť zbylá část adresového prostoru byla vyhrazena pro paměť ROM, která nešla „odklopit“ tak, jak je to možné například na Atari). Taktéž byla vylepšena klávesnice i samotný obal, ve kterém je mikropočítač umístěn. Princip zobrazování sice zůstal stejný, jako v případě ZX80, ale uživatelé se dočkali jednoho poměrně zásadního vylepšení.

Obrázek 11: Domácí osmibitový mikropočítač ZX81.

Tímto vylepšením bylo zavedení takzvaného režimu SLOW. Původní režim zobrazování (FAST) popsaný v předchozí kapitole měl jednu nevýhodu – vzhledem k tomu, že zobrazování řídil samotný mikroprocesor, byla v době běhu programu obrazovka černá, protože celý jeho výpočetní výkon byl spotřebován pro interpretaci a spouštění jednotlivých příkazů. Taktéž stisk klávesy znamenal přerušení vykreslovací rutiny, které se projevilo viditelným poblikáváním. Zavedením režimu SLOW se cca 75% strojového času spotřebovalo na vykreslování obrazu a pouze zbylých 25% bylo možné využít pro běh programu – volné strojové cykly se nacházely pouze v čase vykreslování horního a spodního černého okraje. Mezi režimy FAST a SLOW se bylo možné přepínat, mnoho uživatelů dokonce používalo téměř výhradně režim FAST, a to i v době psaní programu (právě tehdy docházelo k nepříjemnému poblikávání).

pc6708

Obrázek 12: Osazený plošný spoj mikropočítače ZX81. Počet čipů je zde skutečně minimální.

5. Slavné ZX Spectrum a ZX Spectrum+

Pravděpodobně nejslavnějším počítačem navrženým a vyráběným společností Sinclair Research je ZX Spectrum a jeho následovníci, tj. modely ZX Spectrum+ a ZX Spectrum 128 i jejich rozličné varianty. Původní ZX Spectrum („gumák“) bylo nabízeno ve dvou variantách. Levnější varianta, která byla prodávána za 125 liber, obsahovala 16 kB operační paměti, zatímco varianta dražší (nabízená za 175 liber) měla celých 48 kB RAM. Levnější model bylo možné za cca 60 liber upgradovat, tj. rozšířit paměť o 32 kB RAM. Dalším modelem bylo ZX Spectrum+, které bylo vybaveno klávesnicí s kurzorovými tlačítky i Resetem. Udává se, že po uvedení ZX Spectra na trh se každý týden prodalo až 15 tisíc kusů tohoto počítače. Velká popularita mezi uživateli se samozřejmě odrazila i v počtu aplikací – v době největší slávy ZX Spectra bylo vytvořeno více než 10000 her a dalších programů, ovšem aplikace pro něj vznikají i nyní. Především se jedná o nové hry (například existuje i Doom pro Spectrum) a dema.

Obrázek 13: Slavný „gumák“ ZX Spectrum.

6. Základní parametry ZX Spectra

Všechny typy počítačů ZX Spectrum se v několika ohledech lišily od původních ZX80 a ZX81, i když základ, tj. 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í paměti ROM na 16 kB, takže bylo možné použít vylepšenou verzi Sinclair Basicu, která obsahovala nové příkazy i funkce. Taktéž byl vylepšený způsob záznamu dat na magnetofon. Ale největší novinkou, která velkou měrou přispěla k popularitě ZX Spectra, byla upravená verze čipu ULA, jenž se mimo dalších operací starala i o generování obrazu, které již bylo ve větší míře nezávislé na mikroprocesoru, než tomu bylo u počítačů ZX80 a ZX81. ZX Spectra taktéž začaly používat klasický framebuffer s jeho – pro tento počítač tak typickým – rozdělením na dvě poloviny: bitmapu o rozlišení 256×192 pixelů a atributovou paměť s 32×24 bloky, v nichž bylo možné, nezávisle na ostatních blocích, měnit barvu popředí a pozadí.

Obrázek 14: Obchodní část hry Elite přepsaná do Sinclair BASICu.

Paměťový prostor ZX Spectra, tj. 64 přímo adresovatelných kilobajtů, byl rozdělen na tři části. Na začátku se nacházela oblast paměti ROM o velikosti 16 kB s interpreterem jazyka Sinclair Basic, rutinami pro výpočty s hodnotami reprezentované v pohyblivé řádové čárce apod. Za pamětí ROM bylo 16 kB RAM, do které měl přístup jak mikroprocesor, tak i čip ULA (který zde měl uložený framebuffer) a poslední oblast o kapacitě 32 kB byla dostupná pouze mikroprocesoru. V dalším textu se budeme zabývat pouze šestnáctikilobajtovou oblastí paměti RAM, do které měl přístup jak mikroprocesor, tak i čip ULA. Z hlediska programátora byla tato paměť „pomalejší“ než zbylých 32 kB, což mj. znamenalo, že se do této oblasti neumisťovaly časově náročné rutiny, například podprogramy pro přehrávání zvuků či práci s magnetofonem. Čip ULA si totiž postupně načítal hodnoty jednotlivých pixelů i příslušné barvové atributy těchto pixelů při generování video signálu.

Obrázek 15: Obchodní část hry Elite přepsaná do Sinclair BASICu.

7. ZX Spectrum 128

Následovníkem klasického ZX Spectra 48k a ZX Spectra+ byl model pojmenovaný ZX Spectrum 128. Zatímco vzhledově se tento počítač příliš nelišil od svých předchůdců, zejména ZX Spectra+, celková architektura počítače byla v několika směrech vylepšena. Především byl zvukový systém počítače (tj. jednobitový „beeper“ napojený na reproduktor) rozšířen o hudební čip AY-3–8910, přesněji řečeno o jeho variantu AY-8912, která kromě zvukového výstupu obsahovala i jeden osmibitový port použitý pro připojení MIDI zařízení a externí klávesnice. Dále byla zvýšena kapacita paměti ROM ze 16 kB na 32 kB, což například umožnilo použití vylepšeného interpretru Basicu i jeho editoru, včetně menu zobrazeného po startu počítače. Kapacita paměti RAM je zakódována v samotném názvu počítače – má tedy velikost celých 128 kB.

Obrázek 16: ZX Spectrum +128K.

Částečné vylepšení doznal také grafický subsystém. Největší změnou (spíše rozšířením) bylo to, že se framebuffer mohl nacházet na dvou místech v operační paměti. To znamenalo, že se dal velmi snadno implementovat například takzvaný double buffering, tj. technika, při které se do jednoho (neviditelného) bufferu provádělo vykreslování, zatímco obsah druhého bufferu byl zobrazován (vykreslování tedy nevedlo například k nežádoucímu „sněžení“). Po vykreslení scény se funkce obou bufferů prohodily. Dva buffery bylo možné použít i pro implementaci triku GigaScreen, při kterém se na obrazovce rychle mění dva speciálně upravené obrázky.

Obrázek 17: Další ukázka z BASICové zjednodušené hry Elite.

Dalšího vylepšení grafického subsystému se však programátoři ani uživatelé nedočkali (pravděpodobně kvůli snaze o co největší zpětnou kompatibilitu) – podpora pro skutečný textový režim, sprity či plynulý scrolling obrazovky neexistovala, tyto efekty musely být naprogramovány, na rozdíl od některých jiných osmibitových počítačů, které pro tyto činnosti obsahovaly specializované čipy.

Obrázek 18: U protihráčů ve hře Starquake se objevuje známé „překrývání“ barev u postaviček, které jsou blízko sebe. Viz dva protihráči zobrazení vpravo uprostřed.

8. Grafický režim ZX Spectra

Zobrazovaná bitmapa měla rozlišení 256×192 pixelů, tj. její velikost lze snadno vypočítat: 256×192/8=6144 bajtů. Každý pixel byl v této bitmapě reprezentován jediným bitem, kterým se volilo, zda se jedná o pixel patřící k popředí či k pozadí. Barvy popředí a pozadí nemohly být nastaveny pro každý pixel zvlášť, ale pouze pro celý blok 8×8 pixelů. Pro tento blok se v jednom bajtu zvaném atribut ukládaly jak informace o popředí a pozadí (k dispozici bylo osm základních barev, tj. jejich indexy bylo možné uložit ve třech bitech), tak i intenzita barev (vyšší/nižší) a příznak, zda má celý blok blikat, tj. měnit barvu popředí a pozadí.

Obrázek 19: Na obrázku hry Barbarian je patrné, jakým způsobem je obrazová paměť organizovaná, především omezení daná atributy o velikosti 8×8 pixelů.

Tip do clanku - webcast avast

Atributů bylo celkem 32×24=768, takže celková kapacita paměti pro uložení celého obrázku byla rovna 6144+768=6912 bajtům, což zhruba odpovídá typické kapacitě framebufferů u domácích osmibitových počítačů (větší framebuffery byly nepraktické, protože zabíraly velkou část drahé operační paměti a taktéž by tehdejší mikroprocesory musely provádět přesuny objemnějších bloků dat při změně obrazu). Frekvence mikroprocesoru Zilog Z80, tj. 3,5 MHz nebyla zvolena náhodně. Přesně totiž odpovídá počtu taktů nutných pro generování video signálu pro televize pracující v normě PAL.

Obrázek 20: Při pečlivé práci je možné omezení představovaná atributy do značné míry obejít, jak dokazuje tato bitmapa pro ZX Spectrum.

Poznámka: způsob uspořádání grafické paměti do značné míry ovlivnil vzhled i chování her naprogramovaných pro ZX Spectrum. Můžeme zde vidět značnou odlišnost v porovnání s hrami pro Atari či Commodore C64 způsobenou nutnosti softwarově řízeného scrollování, absencí spritů či pseudografických režimů 12 a 13 známých a používaných u Atari.

9. Vliv ZX80 a jeho následovníků na vývoj IT

Osmibitové domácí mikropočítače firmy Sinclair Research způsobily po svém uvedení na trh poměrně významnou revoluci v chápání výpočetní techniky. Byly to totiž – alespoň v Evropě a posléze (díky klonům) i v Jižní Americe a SSSR – počítače, které si mohl díky své nízké ceně pořídit téměř každý a právě na základě popularity těchto systémů přestali lidé vnímat počítače jako drahé, velké a nepraktické skříně umístěné ve výpočetních centrech. Navíc se po hardwarové stránce jednalo o relativně jednoduché, i když, především co se týče poskytované funkcionality, poměrně sofistikované systémy, takže je bylo velmi snadné „klonovat“ (vyrábět kopie), což sice nebylo ve všech případech legální, ale zcela jistě to zapříčinilo velkou popularitu těchto mikropočítačů i programátorskou podporu prakticky po celém vyspělém světě, a to včetně tehdejšího východního bloku.

Obrázek 21: Klávesnice počítače Didaktik M.

V bývalé ČSSR se vyráběly minimálně tři klony ZX Spectra: Didaktik Gama (s větší kapacitou paměti a originální ULA) a Didaktik M (paměť stejná jako původní Spectrum, ovšem se Sovětským ULA) a Didaktik Kompakt, které byly dokonce oproti originálu vylepšené, například vyšší kapacitou operační paměti, snáze použitelnou klávesnicí či zabudováním disketové jednotky. Dále u nás vzniklo několik dalších variant ZX Spectra, které ovšem nebyly masově vyráběny: Mistrum a Krišpín (čip ULA nahrazen diskrétními integrovanými obvody ze série MH7400).

Obrázek 22: Část plošného spoje počítače Didaktik M.

10. Vývoj programovacího jazyka Sinclair BASIC

Na začátku osmdesátých let minulého století byl v oblasti domácích osmibitových mikropočítačů prakticky vždy nabízen interpret nějakého dialektu programovacího jazyka BASIC; typicky se nacházel přímo v ROM. Počítač ZX80, s nímž jsme se již seznámili v úvodní části dnešního článku, byl i přes své velmi skrovné technologické parametry vybaven takřka plnohodnotným interpretrem BASICu (ovšem omezeným na práci s celými čísly), který byl naprogramován Johnem Grantem ze společnosti firmy Nine Tiles. Clive Sinclair nepoužil (na rozdíl od firmy Apple) pro svůj počítač ZX80 interpret MS BASICu licencovaný firmou Microsoft, a to hned ze dvou důvodů. Prvním důvodem bylo to, že MS BASIC vyžadoval své uložení do paměti ROM o minimální kapacitě 8 kB, což se zdálo při požadavku na co nejnižší cenu celého počítače poměrně mnoho (a víme již, že ZX80 nakonec obsahoval pouze 4kB ROM). Druhý důvod vycházel z toho, že Clive Sinclair nechtěl platil licenční poplatky za každý prodaný počítač, protože by to zvyšovalo jeho cenu a/nebo snižovalo profit firmy. Z tohoto důvodu zadal vytvoření interpretru jazyka BASIC již zmíněné firmě Nine Tiles, kde se zadaného úkolu zhostil John Grant.

Poznámka: z rozšířenějších domácích osmibitových počítačů obsahoval MS BASIC zejména Commodore C64. Naproti tomu si i společnost Atari nechala vytvořit vlastní interpret s multimediálními příkazy.

Obrázek 23: Jedna z možností, jak do jisté míry obejít problém s barvovými atributy spočívá ve vytvoření velkých postaviček, takže se překryvné plochy zvětší (ideálně na velikost 8×8 pixelů).

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 24: Přebal jedné z mnoha knih o Sinclair BASICu.

Poznámka: ve skutečnosti není rozdíl ve velikosti zdrojového kódu a tokenizovaného kódu příliš velký, o čemž se ostatně můžeme snadno přesvědčit v emulátoru při uložení zdrojového kódu v čitelné podobě následované uložením kódu tokenizovaného.

11. Specifické vlastnosti Sinclair BASICu

Sinclair BASIC je v některých ohledech poměrně specifickým jazykem, který se odlišuje například od již popsaného Atari BASICu, Turbo BASICu XL či Microsoft BASICu. 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 25: Další screenshot ze hry B-ELITE naprogramované v 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).

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).

Obrázek 26: Přebal další knihy o Sinclair BASICu.

Mimochodem: při přístupu k podřetězcům se využíval zápis, který je sémanticky velmi podobný způsobu přístupu k podseznamům v jazyku Python: Sinclair BASIC umožňoval zpracovávat výrazy typu: A$(1 TO 10) (podřetězec s uvedením počátečního i koncového indexu), A$( TO 10) (počáteční index je dosazen automaticky), A$(2 TO ) (koncový index je roven délce řetězce), A$(3) (výběr jednoho znaku) atd., což je podle mého názoru lepší řešení, než použití funkcí LEFT$, RIGHT$ a MID$ využívaných (nejenom) Microsoft BASICem.

Obrázek 27: R-type ve verzi pro ZX Spectrum.

Další zajímavostí Sinclair BASICu bylo to, že funkce VAL (sloužící pro převod řetězce na odpovídající číselnou hodnotu), dokázala zpracovat a vyčíslit jakýkoli BASICový výraz, takže se ve skutečnosti jednalo o funkci EVAL.  Kromě funkce VAL byly programátorům k dispozici i další tři „klasické“ funkce určené pro převody mezi znaky, řetězci a číselnými hodnotami – ASC (převod znaku na jeho ASCII hodnotu), CHR$ (opak ASC) a STR$ (opak VAL, převod čísla na řetězec). Mezi unikátní příkazy, s nimiž se u jiných typů mikropočítačů nesetkáme, patřily především příkazy sloužící pro práci s obrazovkou a k ní příslušející atributovou pamětí. Jedná se například o příkazy BORDER, BRIGHT, FLASH (skutečně nejde o spuštění Flashové animace), INVERSE, PAPER atd.

Obrázek 28: Klávesnice počítače ZX80 s popiskami příkazů Sinclair BASICu.

12. Seznam příkazů Sinclair BASICu a odlišnosti mezi jeho jednotlivými verzemi

Originální Sinclair BASIC obsahoval přes osmdesát různých příkazů (včetně funkcí a logických operátorů), které byly navíc doplněny aritmetickými operátory. V následující tabulce jsou vypsány všechny příkazy společné pro interpretry dostupné na počítačích ZX80, ZX81, ZX Spectrum i na jejich klonech a následovnících. Jedinou výjimkou ve zpětné kompatibilitě jsou dvojslovní příkazy GO TO a GO SUB, které byly v některých interpretrech nahrazeny jednoslovními příkazy GOTO a GOSUB:


ABS DEF FN LLIST READ
ACS DIM LN REM
AND DRAW LOAD RESTORE
ASN ERASE LPRINT RETURN
AT EXP MERGE RND
ATN FLASH MOVE RUN
ATTR FN NEW SAVE
BEEP FOR NEXT SCREEN$
BIN FORMAT NOT SGN
BORDER GO SUB OPEN# SIN
BRIGHT GO TO OR SQR
CAT IF OUT STEP
CHR$ IN OVER STR$
CIRCLE INK PAPER TAB
CLEAR INKEY$ PAUSE TAN
CLOSE# INPUT PEEK THEN
CLS INT PI TO
CODE INVERSE PLOT USR
CONTINUE LEN POINT VAL
COPY LET POKE VAL$
COS LINE PRINT VERIFY
DATA LIST RANDOMIZE  

Obrázek 29: R-type ve verzi pro ZX Spectrum.


Nové příkazy počítače ZX81
FAST
SLOW
SCROLL
UNPLOT
GOTO
GOSUB

Počítač Timex 2068, který představoval variantu ZX Spectra prodávanou především v USA, nabízel uživatelům a programátorům používajícím Sinclair BASIC další příkazy, vypsané v následující tabulce. Na tomto místě je však nutné říci, že počítače Timex nebyly vzhledem k úpravám zapojení a modifikacím obsahu paměti ROM zcela kompatibilní se ZX Spectrem, což způsobovalo poměrně velké problémy například při převodu her či komplikovanějších aplikací:


Nové příkazy počítače Timex 2068
DELETE
FREE
ON ERR
RESET
SOUND
STICK

Mikropočítač ZX Spectrum+ 128k, který byl mj. vybaven i známým zvukovým čipem AY-3–8912, měl Sinclair BASIC rozšířen o dva nové příkazy. První příkaz sloužil pro přehrávání zvuků na čipu AY-3–8912, druhý pro přepnutí BASICu do původního režimu ZX Spectra:


Nové příkazy počítače ZX Spectrum+ 128k
PLAY
SPECTRUM

13. Laser BASIC

Na osmibitových domácích mikropočítačích vyráběných firmou Sinclair Research se kromě originálního Sinclair BASICu (uloženého přímo v paměti ROM) samozřejmě používaly i další dialekty programovacího jazyka BASIC. V některých případech se jednalo o interpretry, které zdrojový program nejprve transformovaly do tokenizovaného tvaru (který je obdobou dnešních bajtkódů) s jeho postupnou interpretací, v případech dalších pak o skutečné překladače programů zapsaných v BASICu přímo do strojového kódu mikroprocesoru Z80. Jednou z poměrně známých alternativ k Sinclair BASICu je Laser BASIC vytvořený spolu s Laser Compilerem firmou Oasis Software.

Obrázek 29: Načítání Laser BASICu.

Jedná se o nadstavbu původního Sinclair BASICu, která využívá velké množství rutin obsažených v paměti ROM ZX Spectra, včetně původního textového editoru používaného Sinclair BASICem. Díky tomu Laser BASIC v operační paměti obsadil pouze 8 kB (byl umístěn na nejvyšších adresách paměti) i přesto, že programátorům nabízel 138 nových příkazů (zapisovaných ručně, tj. nikoli pomocí klávesových zkratek). Tyto nové příkazy sloužily k manipulacím s rastrovými obrázky a především pro práci se sprity, což jsou v tomto kontextu rastrové obrázky, které se mohou pohybovat po obrazovce a mít průhledné pixely (vše se pochopitelně vykresluje programově).

Obrázek 30: Na to, že se jednalo o vývojářský software, bylo v Laser BASICu použito mnoho multimediálních prvků (na této obrazovce například houká siréna).

Vzhledem k tomu, že nové příkazy nemohly být spouštěny přímo interpretrem původního Sinclair BASICu, obsahoval Laser BASIC i překladač, který celý program, tj. jak původní BASICové příkazy, tak i příkazy „grafické“ přeložil do strojového kódu a následně připojil k vygenerovanému kódu i runtime knihovnu a data s definicemi spritů.

Obrázek 31: Hlavní menu Laser BASICu.

Poznámka: mimochodem – Laser BASIC obsahoval i příkazy .TRON a .TROF (opět s tečkami na začátku) použitelné pro sledování programu v době jeho běhu, samozřejmě za tu cenu, že rychlost bude značně snížena.

14. Grafické příkazy, předávání parametrů grafickým příkazům

Nové příkazy Laser BASICu se zapisovaly s tečkou na začátku, tedy tak, jak je to patrné na dalším screenshotu:

Obrázek 32: Jednoduchý program demonstrující schopnost několika příkazy nastavit část obrazovky na inverzní barvu.

S tímto výsledkem:

Obrázek 33: Výsledek po spuštění předchozího skriptu.

Mezi nové příkazy patří například:


Příkaz Stručný popis příkazu
.SPRT vytvoření nového spritu (těch může být teoreticky až 255)
.ISPR dtto, ovšem alokace se provádí odlišným způsobem
.WSPR vymazání spritu (wipe out?)
.DSPR dtto, ovšem dealokace se provádí odlišným způsobem
   
.WL1V posun/scroll obrazovky o jeden pixel doleva
.WL4V posun/scroll obrazovky o čtyři pixely doleva
.SR8V posun/scroll obrazovky o osm pixelů doprava (+ další možné kombinace)
.WCRV vertikální posun obrazovky, s wrappingem nahoře/dole
.SCRV vertikální posun obrazovky, bez wrappingu
   
.WL1M posun/scroll spritu o jeden pixel doleva, bez wrappingu
.SR8M posun/scroll spritu o osm pixelů doprava, bez wrappingu (+ další možné kombinace)
   
.GTBL přesun části okna do paměti spritu
.GTOR dtto, ovšem s operací OR
.GTXR dtto, ovšem s operací XOR
.GTND dtto, ovšem s operací AND
.PTBL přesun spritu na obrazovku (tj. klasická operace typu bitblt)
.PTOR dtto, ovšem s operací OR
.PTXR dtto, ovšem s operací XOR
.PTND dtto, ovšem s operací AND

Poznámka: příkazů je ve skutečnosti ještě více, toto je jen výběr na ukázku, jaké nové možnosti Laser BASIC programátorům nabízel.

Grafické příkazy obecně vyžadují velké množství parametrů. Tento problém byl v Laser BASICu řešen takovým způsobem, že se namísto parametrů používalo 160 specializovaných proměnných, které byly příkazy využívány. Tyto proměnné byly rozděleny do šestnácti skupin po deseti; pro výběr skupiny se používal příkaz .SET:


Proměnná Stručný popis proměnné
COL x-ová souřadnice v rozsahu 0–31 (reprezentovaná v násobcích osmi)
ROW y-ová souřadnice v rozsahu 0–23 (reprezentovaná jako číslo řádku)
LEN šířka okna (1–32)
HGT výška okna (1–24)
SCL x-ová souřadnice měřená v rámci spritu
SRW y-ová souřadnice měřená v rámci spritu
NPX použito při vertikálním posunu (scrollingu); nabývá hodnot –128 až 127
SPN číslo spritu v rozsahu 1 až 255
SP1 využito pro určení spritu, který neobsahuje okno (pro některé operace)
SP2 využito pro určení spritu, který obsahuje okno (pro některé operace)

15. Laser Compiler

Samotný překladač (Laser Compiler) byl poměrně jednoduchý – prováděl překlad v jednom průchodu bez aplikace větších optimalizací – proto také urychlení běhu programů bylo pouze přibližně dvojnásobně rychlejší oproti jejich interpretaci (pro ZX Spectrum existovaly mnohem lepší překladače). Ovšem hlavní přednost Laser BASICu tkví především v jeho nabídce „grafických“ příkazů a editoru spritů, takže například tvorba her byla s využitím této utility mnohem snazší než při použití původního Sinclair BASICu. Překlad mohl být proveden na Microdrive nebo na kazetu.

Obrázek 34: Logo Laser BASICu.

16. Editor spritů

Jednou z nejdůležitějších součástí Laser BASICu byl i editor spritů, přesněji řečeno softwarových spritů, protože specializovaný hardware určený pro vykreslování spritů na ZX Spectru neexistoval. Sprity se editovaly ve zvětšené mřížce, která je zobrazena na dalším screenshotu:

Obrázek 35: Důležitá součást Laser BASICu – editor spritů.

Sprite bylo možné uložit na disk (typicky do samostatného souboru) a následně ho využít ve vytvářené aplikaci a vykreslit s využitím příkazů, s nimiž jsme se (alespoň ve stručnosti) seznámili v rámci předchozí kapitoly.

17. Dema

K Laser BASICu bylo na druhé kazetě dodáváno i několik dem, které ukazovaly možnosti nabízené díky použití softwarově vykreslovaných spritů zkombinovaných s horizontálním, popř. vertikálním posunem obrazovky, popř. její části (okna):

Obrázek 36: První demo dodávané s Laser BASICem s pohybujícím se spritem.

Obrázek 37: První demo dodávané s Laser BASICem s pohybujícím se spritem.

Poznámka: další možnosti Laser BASICu je možné díky modernějším technologiím, než je ZX Spetrum, nalézt na Youtube, konkrétně na adresách https://www.youtube.com/wat­ch?v=rMgRjOMLYGw a https://www.youtube.com/wat­ch?v=ODwP0PKnPfI.

Obrázek 38: Druhé demo dodávané s Laser BASICem..

18. Obsah navazujícího článku

Ve druhém článku o vývojových prostředích dostupných pro domácí osmibitové mikropočítače ZX Spectrum nejprve dokončíme téma, kterému jsme se věnovali dnes. Popíšeme si totiž vybrané další interpretry a překladače programovacího jazyka BASIC určené pro tento typ mikropočítačů. Jedná se v první řadě o slavný Beta BASIC. Dále si popíšeme některé známé assemblery, popř. ucelená vývojová prostředí určená pro vývoj aplikací v assembleru mikroprocesoru Zilog Z80. Ve třetím článku se pak budeme zabývat vyššími programovacími jazyky, které byly pro Speccy dostupné.

Obrázek 39: Schéma zapojení počítače ZX81. Povšimněte si, jakým způsobem je propojen mikroprocesor s čipem ULA i paměťmi RAM a ROM. Na sběrnici je napojena i osmice rezistorů, které nahrazují řadič sběrnice – ULA tak může snadno číst kódy znaků z paměti ROM, aniž by bylo zapotřebí procesor fyzicky odpojit od sběrnice.

19. Odkazy na Internetu

  1. ZX80 – fotka plošného spoje
    http://www.nvg.ntnu.no/sin­clair/computers/zx80/images/zx80_pcb_jpg­.jpg
  2. ZX80 Circuit Diagram (fotografie)
    http://woodworths.com/EBa­y_Auctions/Auction11.htm
  3. ZX80 Circuit Diagram (lepší kvalita než na předchozím odkazu)
    http://www.nvg.ntnu.no/sin­clair/computers/zx80/images/zx80_cir­cuit.gif
  4. ZX80 Photos
    http://www.nvg.ntnu.no/sin­clair/computers/zx80/zx80_pho­tos.htm
  5. Emulátor ZX Spectra napsaný v Javě
    http://www.zzspectrum.org/
  6. ZX81/ZX80 Emulator napsaný v Javě
    http://www.zx81stuff.org.uk/zx81/jty­one.html
  7. Daves Old Computers – Sinclair ZX80/81 – Timex 1000
    http://www.classiccmp.org/dun­field/sinclair/index.htm
  8. New games for ZX81
    http://www.armchairarcade­.com/neo/taxonomy/term/233
  9. RetroThing – ZX81
    http://www.retrothing.com/2008/04/bu­ild-your-ow-2.html
  10. Sinclair ZX81 Chopperdrop 3000
    http://www.youtube.com/wat­ch?v=MY6TGQEvvX4
  11. DOOM game on ZX Spectrum
    http://www.youtube.com/wat­ch?v=3v7cFGneuaw&feature=re­lated
  12. Trader ZX81 part 1
    http://www.youtube.com/wat­ch?v=FhElddXeLDU&feature=fvsr
  13. ZX81 forever
    http://www.zx-team.de/andre/
  14. ZX81 Caverns – předělávka hry pro ZX81
    http://www.martinruffe.co­.uk/view.aspx?id=36
  15. Steven's ZX81 Computer – ukázky programů pro ZX81 a další informace
    http://www.geocities.com/Ca­peCanaveral/Hangar/1969/zx81/
  16. Sinclair ZX81 FAQ
    http://www.honneamise.u-net.com/zx81/zx81faq.html
  17. The ZX BASIC Compiler
    https://www.boriel.com/pages/the-zx-basic-compiler.html
  18. boriel / zxbasic
    https://github.com/boriel/zxbasic"
  19. Z80 Assembly programming for the ZX Spectrum
    https://www.chibiakumas.com/z80/ZXSpec­trum.php
  20. Elena, New programming language for the ZX Spectrum Next
    https://vintageisthenewold.com/elena-new-programming-language-for-the-zx-spectrum-next/
  21. Sinclair BASIC
    https://worldofspectrum.net/legacy-info/sinclair-basic/
  22. Grafika na osmibitových počítačích firmy Sinclair
    https://www.root.cz/clanky/grafika-na-osmibitovych-pocitacich-firmy-sinclair/
  23. Grafika na osmibitových počítačích firmy Sinclair II
    https://www.root.cz/clanky/grafika-na-osmibitovych-pocitacich-firmy-sinclair-ii/
  24. HiSoft BASIC
    https://worldofspectrum.net/in­foseekid.cgi?id=0008249
  25. YS MegaBasic
    https://worldofspectrum.net/in­foseekid.cgi?id=0008997
  26. Beta Basic
    https://worldofspectrum.net/in­foseekid.cgi?id=0007956
  27. BASIC+
    https://worldofspectrum.net/in­foseekid.php?id=0014277
  28. Spectrum ROM Memory Map
    https://skoolkit.ca/disas­semblies/rom/maps/all.html
  29. Goto subroutine
    https://skoolkit.ca/disas­semblies/rom/asm/7783.html
  30. Spectrum Next: The Evolution of the Speccy
    https://www.specnext.com/about/
  31. Programovací jazyky používané na platformě osmibitových domácích mikropočítačů Atari
    https://www.root.cz/clanky/pro­gramovaci-jazyky-pouzivane-na-platforme-osmibitovych-domacich-mikropocitacu-atari/
  32. Programovací jazyky používané na platformě osmibitových domácích mikropočítačů Atari (2)
    https://www.root.cz/clanky/pro­gramovaci-jazyky-pouzivane-na-platforme-osmibitovych-domacich-mikropocitacu-atari-2/
  33. Sedmdesátiny assemblerů: lidsky čitelný strojový kód
    https://www.root.cz/clanky/sed­mdesatiny-assembleru-lidsky-citelny-strojovy-kod/
  34. Programovací jazyk BASIC na osmibitových mikropočítačích
    https://www.root.cz/clanky/pro­gramovaci-jazyk-basic-na-osmibitovych-mikropocitacich/
  35. Programovací jazyk BASIC na osmibitových mikropočítačích (2)
    https://www.root.cz/clanky/pro­gramovaci-jazyk-basic-na-osmibitovych-mikropocitacich-2/#k06
  36. Programovací jazyk BASIC na osmibitových mikropočítačích (3)
    https://www.root.cz/clanky/pro­gramovaci-jazyk-basic-na-osmibitovych-mikropocitacich-3/
  37. Programovací jazyk BASIC na herní konzoli Atari 2600
    https://www.root.cz/clanky/pro­gramovaci-jazyk-basic-na-herni-konzoli-atari-2600/
  38. A Tour of 6502 Cross-Assemblers
    https://bumbershootsoft.wor­dpress.com/2016/01/31/a-tour-of-6502-cross-assemblers/
  39. Which cross assembler/compiler do you use?
    https://atariage.com/forum­s/topic/195253-which-cross-assemblercompiler-do-you-use/
  40. Stránka magazínu (diskmagu) FLOP
    http://flop.atariportal.cz/
  41. Madass
    https://mads.atari8.info/
  42. MAD-ASSEMBLER 1.9.5
    https://mads.atari8.info/mad­s_eng.html
  43. Action (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Action
  44. Assembler (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Assembler
  45. Basic (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Basic
  46. C (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=C
  47. Forth (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Forth
  48. Fortran (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Fortran
  49. Lisp (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Lisp
  50. Logo (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Logo
  51. Pascal (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Pascal
  52. Pilot (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Pilot
  53. PL65 (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=PL65
  54. Quick (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=Quick
  55. WSFN (AtariWiki.org)
    https://atariwiki.org/wiki/Wi­ki.jsp?page=WSFN
  56. MAC/65 (Wikipedia)
    https://en.wikipedia.org/wiki/MAC/65
  57. Atari Assembler Editor
    https://en.wikipedia.org/wi­ki/Atari_Assembler_Editor#A­MAC
  58. cc65
    https://cc65.github.io/
  59. Grafika na osmibitových počítačích firmy Sinclair
    http://www.root.cz/clanky/grafika-na-osmibitovych-pocitacich-firmy-sinclair/
  60. Stránky RetroFestu
    http://retrofest.cz/
  61. RetroHerna
    http://retroherna.cz/
  62. BASIC
    http://cs.wikipedia.org/wiki/BASIC
  63. BASIC
    http://en.wikipedia.org/wiki/BASIC
  64. Rosetta Code – Category Basic
    http://rosettacode.org/wi­ki/Category:BASIC
  65. Dartmouth College Computation Center: 1964 – The original Dartmouth BASIC manual
    http://www.bitsavers.org/pdf/dar­tmouth/BASIC_Oct64.pdf
  66. The Original BASIC
    http://www.truebasic.com/
  67. BASIC – Beginners All-purpose Symbolic Instruction Code
    http://hopl.murdoch.edu.au­/showlanguage.prx?exp=176
  68. Turbo BASIC (Wikipedia CZ)
    http://cs.wikipedia.org/wi­ki/Turbo_BASIC
  69. Sinclair BASIC (Wikipedia CZ)
    http://cs.wikipedia.org/wi­ki/Sinclair_BASIC
  70. Action!
    https://atari8bitbot.com/action/
  71. Atari Logo
    https://atari8bitbot.com/atari-logo/
  72. Atari PILOT & Super PILOT
    https://atari8bitbot.com/atari-pilot/
  73. Turbo-BASIC XL
    https://atari8bitbot.com/turbo-basic-xl/
  74. Atari Assembler/Editor
    https://atari8bitbot.com/atari-assembler-editor/
  75. Strings in Atari BASIC
    http://www.cyberroach.com/a­nalog/an11/strings.htm
  76. String Arrays in Atari BASIC
    http://www.atarimagazines­.com/compute/issue11/52_1_STRIN­G_ARRAYS_IN_ATARI_BASIC.php
  77. An Atari BASIC Tutorial
    http://www.cyberroach.com/a­nalog/an25/basictutorial.htm
  78. Atari Logo
    https://en.wikipedia.org/wi­ki/Atari_Logo
  79. Computer art and animation: a user's guide to Atari logo
    https://archive.org/detail­s/Computer_Art_and_Animati­on
  80. Going into Action! with Atari XL/XE – Part 1 – Hello World!
    https://vintageisthenewold.com/going-into-action-with-atari-xl-xe-part-1-hello-world/
  81. Going into Action! with Atari XL/XE – Part 2 – Graphics
    https://vintageisthenewold.com/going-into-action-with-atari-xl-xe-part-2-graphics/
  82. Going into Action! with Atari XL/XE – Part 3 – More Variables, Memory and Pointers (ugh!)
    https://vintageisthenewold.com/going-into-action-with-atari-xl-xe-part-3-more-variables-memory-and-pointers-ugh/
  83. Going into Action! with Atari XL/XE – Part 4 – Using VSCode and Action! with syntax highlighting
    https://vintageisthenewold.com/going-into-action-with-atari-xl-xe-part-4-using-vscode-and-action-with-syntax-highlighting/
  84. Atari800 (emulátor)
    https://github.com/atari800/atari800
  85. Atari MAC/65 Tutorial
    https://www.youtube.com/wat­ch?v=RyBsGDJBXD0
  86. MAC/65 Manual
    http://www.mixinc.net/atari/mac65.htm
  87. BASIC 10 Liner Contest 2021
    https://atariage.com/forum­s/topic/316645-basic-10-liner-contest-2021/
  88. Hexadecimální prohlížeče a editory s textovým uživatelským rozhraním
    https://www.root.cz/clanky/he­xadecimalni-prohlizece-a-editory-s-textovym-uzivatelskym-rozhranim/
  89. Deep Blue C
    https://en.wikipedia.org/wi­ki/Deep_Blue_C
  90. Deep Blue C Compiler
    https://www.atariarchives­.org/APX/showinfo.php?cat=20166
  91. Historie vývoje počítačových her: simulace a strategické hry naprogramované Chrisem Crawfordem
    https://www.root.cz/clanky/historie-vyvoje-pocitacovych-her-simulace-a-strategicke-hry-naprogramovane-chrisem-crawfordem/
  92. Explore BASIC Programming Languages for the Atari 8-Bit Computers (30–60 mins)
    http://atariprojects.org/2020/08/29/ex­plore-different-basic-programming-languages-for-the-atari-8-bit-computers-30–60-mins/
  93. Learn How to Make a Game in BASIC XE (30–60 mins)
    http://atariprojects.org/2019/12/21/le­arn-how-to-make-a-game-in-basic-xe-30–60-mins/
  94. Atari BASIC XL (manuál)
    http://www.atarimania.com/8bit/fi­les/BASIC%20XL%20%C2%A4%20Se­cond%20Edition.pdf
  95. BASIC XE For Atari XL & XE
    https://www.atarimagazines­.com/compute/issue67/318_1_Re­views_BASIC_XE_For_Atari_XL_XE­.php
  96. BUG/65 (Reference manual)
    https://atariwiki.org/wiki/at­tach/Bug65/BUG-65%20Version%202.0%20manual-final%20with%20errorpage.pdf
  97. Cross compiler
    https://en.wikipedia.org/wi­ki/Cross_compiler
  98. Křížový překladač
    https://cs.wikipedia.org/wi­ki/K%C5%99%C3%AD%C5%BEov%C3%BD_p%C5%99e­klada%C4%8D
  99. ATasm
    https://atari.miribilist.com/atasm/
  100. ATasm v1.09 („Global Pandemic Release“)
    https://atari.miribilist.com/a­tasm/atasm.pdf
  101. DOS XL
    https://en.wikipedia.org/wiki/DOS_XL
  102. Aztec C online Museum
    https://www.clipshop.ca/Az­tec/index.htm
  103. Aztec C Compilers
    http://aztecmuseum.ca/compilers.htm
  104. Scratchbox
    http://scratchbox.org/
  105. History of PC based C-compilers
    https://web.archive.org/web/20071215083657/htt­p://www.itee.uq.edu.au/~csmweb/de­compilation/hist-c-pc.html
  106. PAL/NTSC Upgrade
    https://www.myatari.com/nirdary.html
  107. How can you measure time using BASIC on Atari XL computers?
    https://retrocomputing.stac­kexchange.com/questions/269/how-can-you-measure-time-using-basic-on-atari-xl-computers
  108. Atari Microsoft Basic manual
    http://www.atarimania.com/8bit/fi­les/Atari_Microsoft_Basic­.pdf
  109. Assembly Language: Still Relevant Today
    http://wilsonminesco.com/AssyDefense/
  110. Programovani v assembleru na OS Linux
    http://www.cs.vsb.cz/gryga­rek/asm/asmlinux.html
  111. Why Assembly Language Programming? (Why Learning Assembly Language Is Still a Good Idea)
    https://wdc65×x.com/market­s/education/why-assembly-language-programming/
  112. Low Fat Computing
    http://www.ultratechnology­.com/lowfat.htm
  113. Assembly Language
    https://www.cleverism.com/skills-and-tools/assembly-language/
  114. Why do we need assembly language?
    https://cs.stackexchange.com/qu­estions/13287/why-do-we-need-assembly-language
  115. Assembly language (Wikipedia)
    https://en.wikipedia.org/wi­ki/Assembly_language#Histo­rical_perspective
  116. Assembly languages
    https://curlie.org/Computer­s/Programming/Languages/As­sembly/
  117. vasm
    http://sun.hasenbraten.de/vasm/
  118. A86/A386 assembler and D86/D386 debugger
    http://eji.com/a86/
  119. FASM
    https://en.wikipedia.org/wiki/FASM
  120. NASM
    https://www.nasm.us/
  121. High Level Assembly (home page)
    http://plantation-productions.com/Webster/
  122. High Level Assembly (Wikipedia)
    https://en.wikipedia.org/wi­ki/High_Level_Assembly
  123. A86/A386 Features
    http://eji.com/a86/features­.htm#FeaturesA86
  124. Assembly language today
    http://beust.com/weblog/2004/06/23/as­sembly-language-today/
  125. B-ELITE
    https://jsj.itch.io/b-elite
  126. ZX-Spectrum Child
    http://www.dotkam.com/2008/11/19/zx-spectrum-child/
  127. Speccy.cz
    http://www.speccy.cz/
  128. Planet Sinclair
    http://www.nvg.ntnu.no/sinclair/
  129. World of Spectrum
    http://www.worldofspectrum.org/
  130. ZX81 BASIC Programming
    http://www.worldofspectrum­.org/ZX81BasicProgramming/
  131. Beta BASIC (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Beta_BASIC
  132. Beta BASIC (Wikipedia CZ)
    http://cs.wikipedia.org/wi­ki/Beta_BASIC
  133. BETA BASIC NEWSLETTER No 8
    http://spectrum128.ru/hel­p/BetaBasicNewsletter8.pdf

Autor článku

Pavel Tišnovský vystudoval VUT FIT a v současné době pracuje ve společnosti Red Hat, kde vyvíjí nástroje pro OpenShift.io.