Poznámkový notes

Zápisník seniora

Retro bity do bytu

Z80 retroSpectrum

     S oblibou říkávám, že se počítačům nevěnuji příliš dlouho, slabých šedesát let. Už jako žák a později student jsem s údivem a pokorou mohl nejprve sledovat a poté si i maloulinko vyzkoušet práci na sálovém počítači - vskutku úsměvné, porovnám-li to s možnostmi dnešních předškoláků. Můj táta měl totiž významnou zásluhu na vybudování prvního výpočetního střediska s prvními sálovými počítači v jabloneckém okrese v šedesátých letech minulého století. Oborové výpočetní středisko vznikalo při výrobně hospodářské jednotce a posléze rozvíjelo ve státním podniku a konečně v koncernu Jablonecká bižuterie. Jablonecký bižuterní průmysl měl tehdy pozici světově uznávaného výrobce s vynikající tradiční kvalitou a pověstí. Za významnou zmínku stojí skutečnost, že bižuterní výpočetní středisko bylo vybavováno počítači tehdy nejpřednostnějšího amerického výrobce, firmou UNIVAC.

     Za ta léta strávená s informačními technologiemi a jejich programováním obzvlášť jsem poznal mnoho programovacích technik a využíval řadu programovacích jazyků. Vždy však na pomyslném piedestalu stály jazyky symbolických adres, a to i tehdy, kdy je bylo možné ve vyšším programovacím jazyce využít jen minimálně. Podstavec nejvýznačnější pak zaujímaly assemblery PLAN pro ODRU 1305 a mnemonika symbolického kódu zařízení vybavených mikroprocesorem Z80. ODRA 1305 byl skvělý počítač, nicméně z dnešního úhlu pohledu už přece jen představuje počítačový pravěk. Zato osmibitový mikroprocesor Z80 má i dnes své uplatnění v mnohých technických zařízeních a literatury o něm je plný internet. Není proto divu, že se i senior po něm po dlouhé odmlce opět nostalgicky ohlédl.

     Kdybych měl doporučit začínajícímu programátoru assembleru Z80 úvodní literaturu v češtině ke studiu, byl by to titul Bity do bytu , který byl vydán v roce 1988, a je nyní volně k dispozici na internetu. Název této velmi kvalitně napsané knihy jsem si vypůjčil, jak je vidno, pro nadpis hned dvou rubrik poznámkového notesu. Na internetu lze nalézt řadu dalších publikací, osobně dávám přednost klasickým starším knihám, např. Programming the Z80  z roku 1982 nebo z roku 1983 sbírku užitečných subrutin Z80 Assembly Language Subroutines .

      O programování v assembleru si nestačí jen číst, je třeba být aktivním praktikujícím tvůrcem programů. K tomu účelu vede řada cest. Mně se jevilo být vhodným využít obrovského potenciálu mikropočítače ZX Spectrum, jehož srdcem byl právě mikroprocesor Z80. Tento osmibitový domácí počítač, uvedený na trh v roce 1982, byl vyrobený ve Velké Británii firmou Sinclair Research Ltd., již vlastnil sir Clive Sinclair. Dodnes existuje celá plejáda fanoušků tohoto mikropočítače nebo jeho variant, intimně nazývaných Speccy. Na internetu lze nalézt o ZX Spectru doslova haldu materiálu. Někdy začátkem druhé poloviny 80. let jsem se i já stal majitelem ZX Spectra 48K.

     Pochopitelně nemám na mysli programování na skutečném reálném ZX Spectru, ten už dávno nemám. Na internetu však lze pořídit celou řadu emulátorů Spectra prakticky pro jakoukoli počítačovou platformu. Můžete se hned podívat na stránky ZX Spectrum 4 , kde naleznete graficky zvlášť povedené varianty. Stáhněte si některou free verzi (plnou verzi lze pořídit za přijatelný obolus), spouštíte-li emulátor na osobním počítači, upravte případně parametr screenFactor=3 v souboru config, a z přibalených příkladů her spusťte Manic Miner.tzx (metodou drag and drop) . Vychutnáte si rovněž dobu, po kterou se program typu .tzx nahrával z kazety reálného Spectra. I já, notorický nepařmen, jsem v osmdesátých letech honil šíleného horníka Willyho po jeho slojích.

      Rozhodně není mým cílem psát programy pro ZX Spectrum jako takovému. Jde mi o vnitřní logiku a krásu assembleru mikroprocesoru Z80, Speccy je pouze užitečným prostředkem. Nicméně musím mít o Spectru jisté informace. K tomu mně velmi dobře slouží kompletní Spectrum ROM Diassembly resp. perfektně zpracované následující webovské stránky obdobného názvu.

      K jakémukoli programování, tedy i mikroprocesoru Z80, je nezbytné vývojové prostředí, nejlépe IDE, tj. Integrated Development Environment: za prvé editor zdrojových programů, za druhé kompilátor a v případě emulace také za třetí emulátor zkompilovaných programů. V prostředí Windows 10 na počítači s 64-bitovým mikroprocesorem používám následující soupravu (vše ve free verzi):

1.  Původně jsem využíval mé oblíbené textové editory Notepad++ resp. PSPad. Když jsem objevil dnes stále vyvíjené Visual Studio Code , musel jsem Microsoft pochválit za dobře odvedenou práci. Program je nejen volně k dispozici, ale je určen pro všechny běžné počítačové platformy a programovací jazyky, je k dispozici bezpočet rozšíření (např. Z80 macro-assembler),... Má rovněž vestavěný Terminál, tak to si jen napíšete jednoduchý .bat soubor ke spouštění kompilátoru resp. emulátoru z prostředí VS Code, a hned máte IDE. Zkrátka, jasná volba.

2.  Jako kompilátor se mi osvědčil sjasmplus , který je podporován rozšířením Z80 macro-assembler z editoru VS Code, a je nyní dostupný ve verzi v1.18.2  .

3.  Z celé řady emulátorů jsem si nakonec vybral ZXSpin , který je velmi snadno konfigurovatelný, má vestavěný debugger a disassembler.

     Následující jednoduchý příklad z80spectrum.asm názorně ukazuje, že se vlastnosti mikropočítače ZX Spectrum při obecném programování mikroprocesoru Z80 respektovat musí, je-li přeložený program spouštěn v emulátoru ZX Spectra. Při tvorbě programů se však subrutiny v ROM Spectra využívat mohou, ale nemusí. Vždy při řešení konkrétních programátorských problémů vede mnoho cest do Říma. Právě v tom tkví nenapodobitelná krása programátorského řemesla. Základní informace, nutné k pochopení příkladů, které zde uvádím, najdete např. v příručce ZX ROM poznámky . Ve zhuštěné podobě zde např. zjistíte, jak je organizována paměť Spectra, jak jeho klávesnice, získáte informace o důležitých podprogramech ROMu či jeho systémových proměnných, atd. Zná někdo úžasnější jazyk, než je náš národní, čeština? Já nikoli. Ke komentování zdrojových kódů programů napsaných v assembleru se však o malinko lépe hodí jednoduchá angličtina,

     Můžete si první program z80spectrum.tap stáhnout a spustit (drag and drop) v emulátoru ještě předtím, než si jej napíšete v editoru a zkompilujete. Já vím, nic moc, ale šlo mi skutečně pouze o nezbytné seznámení s architekturou ZX Spectra.

Příklad 1: z80spectrun.asm - výpis zdrojového programu

     Přidám ještě program z80specCharMode.asm, který je prakticky ze stejného soudku jako ten první. Ačkoli počítačové hry nehraji, zvolil jsem velmi jednoduchou "střílečku", avšak ve znakovém režimu, tedy ve videoramu s dvaceti čtyřmi řádky a třiceti dvěma sloupci. Zelení nepřátelští vojáci, modrý mírumilovný kanon i žluté střely jsou rovněž znaky v rastru 8x8 bitů, ovšem jako UDG (user-defined graphics). Ke zjištění stejné pozice těchto znaků ve videoramu slouží porovnání jejich attributů. Můžete si opět program z80specCharMode.tap stáhnout a spustit v emulátoru.

Příklad 2: z80specCharMode.asm - výpis zdrojového programu

     Kvalitnější hry se pochopitelně píší v grafickém režimu 192=24*8x256=32*8 pixelů. Problém pro programátory spočívá v tom, že sir Clive Sinclair nezamýšlel Spectrum jako hráčskou konzoli. V ROMu proto není po ruce vhodná podpora pro grafiku nehledě na to, že rozložení pixelových bajtů v paměti není na první pohled zřetelné. Programátor si musí vypracovat řadu rutin využívajících různé triky vycházející z vlastností Spectra. Nebudu zde proto uvádět příklady grafických programů. Pouze jediný následující velmi jednoduchý z80specGraphMode.asm, který vykresluje postavičku horníka Willyho z výše uvedené hry Manic Miner. Program z80specGraphMode.tap si můžete stáhnout a spustit v emulátoru.

Příklad 3: z80specGraphMode.asm - výpis zdrojového programu



Na začátek stránky
©    Poznámkový notes  -  Zápisník seniora