Historie | Programování | Pojďme programovat elektroniku

Programujeme ZX Spectrum: Ten nejhloupější možný program v Basicu

Ačkoliv je někdejší celoplanetární sláva osmibitových počítačů dávnou minulostí, komunita skalních fanoušků a pamětníků je kupodivu i v 21. století poměrně živá a internet je plný nejrůznějších emulátorů, které dnes díky jejich jednoduchosti spustíte opravdu na čemkoliv.

Ve čtvrtek nás v 81 letech opustil Clive Sinclair, tvůrce dnes už legendární řady britských osmibitových počítačů ZX Spectrum, které se v osmdesátých letech minulého století dostaly všemožnými cestičkami i do leckteré československé domácnosti. Později pak i jeho československé klony Didaktik. Jeden z nich se krátce ohřál i u nás doma.

Komunita se shlukuje třeba na portálu worldofspectrum.org a v případě Česka stojí za zmínku stránky zx-spectrum.cz s odkazy na hry, emulátory a k dispozici je tu i diskusní fórum.

Emulátor v prohlížeči

Jelikož je počítač ZX Spectrum opravdu jednoduchý, můžete si jej vyzkoušet v některém z javascriptových emulátorů přímo ve webovém prohlížeči. Funguje třeba JSSpeccy 3 nebo Qaop.

6df2fdbc-1b18-44cc-8154-99ebc18659f70b6fc19a-a25b-4e46-9208-8b27f2a4ee26
ZX Spectrum ve webovém emulátoru JSSpeccy 3

Když v menu spustíte nahrávání programu do RAM z virtuálního kazetového přehrávače (Tape Loader) a v zápatí webového emulátoru vyberete z vlastního počítače soubor s virtuální kazetou ve formátu TAP, která obsahuje hru, bude to teprve zábava.

985aea81-d05b-4628-9c72-03b6a946d186
A ještě jednou, tentokrát ve webovém emulátoru Qoap

Kde ty soubory TAP a další obsah najít? Třeba právě na obou zmiňovaných webech, anebo kdekoliv na širém internetu. Stačí použít Google.

Fuse pro desktop i mobil

Pro desktopy je tu zástup mnohem pokročilejších emulátorů, které nabízejí i hromadu expertních funkcí pro vývojáře – třeba pohled na to, co se právě teď děje v RAM a jaké instrukce procesoru se zpracovávají.

7edb937d-ed40-416a-86b7-8b42b7ab8b1ca0116d2e-ebef-4261-9c1f-a835d6f2fcc300d9e242-7141-4347-8358-b1db77f7ef6d
Nahrání virtuální kazety s hrou ve formátu TAP v emulátoru Fuse

Jedním z nejznámějších je Fuse, který je k dispozici prakticky pro libovolnou platformu od Androidu po Windows a některé herní konzole.

Můžete do něj nahrát hru ze stažené virtuální kazety, anebo třeba spustit jeho jednoduchý interpret jazyka Basic a vytvářet v něm programy, které budou kreslit po monitoru kružnice a provádět další lumpárny.

Pokud se budete přes víkend nudit, manuál se všemi příkazy a jednoduchou dokumentací pro starší 48 BASIC najdete zde. Pro novější a lépe ovladatelný 128 BASIC pak hledejte vše potřebné rovnou v dokumentaci počítače Spectrum 128K.

Náš vlastní program v Basicu

A teď se už pojďme podívat na primitivní program v Basicu pro Spectrum 128K.  Nejprve v emulátoru Fuse nastartujeme z nabídky vhodný virtuální počítač, který má k dispozici veškerou potřebnou softwarovou výbavu

cd8ed577-efe3-44ff-9237-1c5aac546190
Spustíme Fuse a z výchozího počítače Spectrum 48K se přepneme do Spectrum 128K

Po naběhnutí se ukáže obrazovka s možností nahrání programu na kazetě, spuštění kalkulačky a dvou verzí Basicu. My zvolíme ten pokročilejší 128 BASIC.

349b055e-2ac5-45e8-8f1b-c7d23b64d0d8
Vybereme 128 BASIC s jednodušším uživatelským rozhraním

Kreslíme kružnici

Klepnutím na klávesnici se rozbliká kurzor interpretu. Můžeme rovnou napsat nějaký příkaz, který se okamžitě zpracuje po stisknutí ENTER. Třeba:

CIRCLE 50,100,25

Na souřadnicích 50,100 (počítá se od levého spodního okraje) se poté vykreslí kružnice s průměrem 25 bodů, přičemž souřadnice odpovídají středu této kružnice.

89350ca4-2680-4648-bd4c-ed5e9dbf55a9
Naše první instrukce! To byla jedna z těch mála, kterou jsem jako osmiletý špunt ovládal na našem rodinném Didaktiku M (československá kopie ZX Spectrum)

Více řádků

No dobrá, ale co když se náš program skládá z více řádků? Je to jednoduché, stačí příkaz uvést číslem řádku. Po klepnutí na ENTER se pak instrukce jen uloží do paměti, vypíše v horní části a interpret bude čekat, dokud celou sekvenci ručně nespustíme.

Tímto způsobem můžeme napsat třeba:

10 PRINT "AHOJ, TADY ZIVE.CZ"
20 FOR I=1 TO 5
30 PRINT "KRUH=";I
50 CIRCLE 100,100,I*10
60 NEXT I

Co se stane? Nejprve na prvním řádku vypíšeme zdravici „AHOJ, TADY ZIVE.CZ.“ Dále spustíme smyčku FOR od 1 do 5. Vypíšeme v ní text „KRUH=“ doplněný aktuální hodnotou proměnné I, no a poté nakreslíme samotný kruh, jehož průměr se bude postupně navyšovat, protože bude odpovídat násobku I * 10. K hodnotě proměnné I se po každém průběhu smyčky připočítá 1.

Na závěr smyčku uzavřeme příkazem NEXT I, kterým dáváme interpretu najevo, že má zpracovat další průběh.

edb2a230-444e-41c8-9667-99f087c9662f
Píšeme program ve 128 BASIC. S rozložením odlišné klávesnice nám pomůže nápověda

Příkaz RUN

Program je hotový a nyní řádky jeden po druhém konečně zpracujeme příkazem RUN a už bez úvodního určení čísla/adresy řádku:

RUN

Takto by měl vypadat výsledek:

Mimochodem, okno emulátoru se spustí v původním malém rozlišení, ale můžete jej libovolně roztáhnout, aby na něj bylo vůbec vidět.

314dcf5c-ea2a-408e-b003-bb531d8ab507
Náš první program v Basicu na ZX Spectrum 128K

Jak napsat speciální znaky jako + nebo třeba "

Pozor, současná klávesnice není kompatibilní s tou prehistorickou na ZX Spectrum, proto pomůže nápověda s maličkým náhledem rozložení dostupná v menu emulátoru Fuse Help→Keyboard.

Červené znaky vyvoláte s pomocnou klávesou CTRL, takže třeba znak anglických uvozovek " napíšeme stisknutím CTRL+P, znak + stisknutím CTRL+K a tak dále.

963c1f63-5613-4cfa-aaeb-e0bcf092498b
Rozložení kláves na Spectru (červené znaky jsou dostupné s CTRL)

Mezi řádky programu můžete šipkami nakonec procházet a dodatečně je upravovat.

Jak to uložit a zase otevřít?

Kód bychom měli, ale jak ten náš slavný program uložit a znovu vyvolat někdy později a klidně i na jiném počítači? Jelikož pracujeme jen s virtuální mašinou ZX Spectrum, v praxi bude zdaleka nejjednodušší vytvořit paměťový snapshot – prostě uložíme stav maličké RAM do souboru ve formátech SZX, Z80 a dalších dle podpory v emulátoru pomocí nabídky File→Save Snapshot...

3180a7b6-f461-4d1d-a2a0-2a97587874a8865d8c01-7f48-4569-83ba-fec59d995e8c
Uložení obrazu RAM a jeho opětovné načtení v formátu SZX

Ve Windows se pak poklepáním na soubor rovnou otevře Fuse s virtuálním Spectrem a naší RAM ve stavu, kdy jsme ji uložili. Druhou možností je soubor se záznamem operační paměti načíst v menu File→Open.

Takto vytvořený obraz je zpravidla možné načíst i v mnoha dalších emulátorech včetně těch webových, který jsme si ukázali v úvodu. Qaop si bude rozumět s formátem Z80.

4d47cc9d-e8cf-4d5c-ab72-3baf92ceb54ce627834f-b4cd-4c81-bfb0-06e31d3e3ffa
Nahráli jsme obraz RAM ve formátu Z80 s naším programem do webového emulátoru Qoap

Zvládnete v Basicu ukuchtit něco lepšího? Pochlubte se nám i ostatním čtenářům třeba odkazem na váš vlastní paměťový snapshot.

Diskuze (20) Další článek: Poslední aktualizace Windows znemožnily na mnoha počítačích tisk na síťové tiskárně

Témata článku: , , , , , , , , , , , , , , , , , , , , , , , , ,