HRA

Tomb of Horror
Herní styl RPG 3D
Multiplayer Bez multiplayeru
Rok vydání 1988
Programátor Cleveland M. Blakemore
Grafik Cleveland M. Blakemore

INTRO

Jaký použít editor k programování C64?

Úvodem chystaného seriálu o programování (hantýrkou "kódování") v assembleru na C64 bych popsal několik editorů, které jsem k tomuto účelu používal nebo používám. Můj výčet nemá ambice být kompletní jak do šířky, tak i do různých řekněme úrovní programování a někteří z vás budou mít možná námitky, ale cílem je poskytnout začátečníkům informace o tom, v čem mohou programovat. A jelikož se jedná o úvodní článek, budu se maximálně snažit prozatím vyvarovat výpisů zdrojového kódu.
Nehodlám zde popisovat techniku ukládání strojového kódu do basicovské proměnné data a jeho následné kopírování do paměti v basicovské smyčce ani jiná podobná zvěrstva (tzv. lo-level techniky), ale začnu "až" od monitoru. Monitor ve spojitosti s assemblerem znamená jednoduchý editor pro výpis a editování paměti ve formě assembleru (jazyka symbolických zkratek) nebo strojového kódu (výpis bytů paměti v hexadecimální soustavě). Pokud takový program nahrajete z diskety (např. CMON, HESMON, MAGICMON a další), většinou je jeho počáteční adresa i adresou startovací. Např. pokud má load adresu $8000, spustíte ho příkazem SYS $8000 ( = SYS4096*8). Po startu se vypíší stavy různých registrů počítače a můžete zadávat příkazy. Mezi základní příkazy patří D pro vylistování paměti, A pro zápis assembleru, M pro výpis a editaci ve strojovém kódu, X pro exit, L a S pro load a save a další. Pokud pomocí příkazu A píšete program, má to tu nevýhodu, že se vše ukládá přímo do paměti; monitor nezná žádné proměnné ani návěstí, kromě instrukce se mu musí zadat i adresa v paměti, na které bude uložena. Pokud si později vzpomenete, že byste do prostřed programu chtěli přidat nějaké instrukce, musíte si celý program ručně přesunout anebo máte smůlu. Kromě toho vyžaduje dost přesnou syntaxi (tam kde očekává číslo např. 05 nemůžete napsat pouze 5 atd.) a zná pouze hex. (šestnáctkovou) soustavu. Proto tvořit rozsáhlejší programy v monitoru je nemyslitelné, ale pro začátečníka má tu výhodu, že je jednoduchý. I přes výše popisovaná negativa má monitor při programování na C64 nenahraditelnou roli. Existuje totiž několik cartridgů, které monitor obsahují. Hlavní výhoda monitoru v cartridgi je, že je přímo v něm a tudíž nezabírá paměť C64, jako když ho nahrajete z diskety. Navíc některé monitory (např. v FC3 nebo AR6) mají rozšířené příkazy o několik užitečných funkcí (tu více, tu méně kvalitních), konkrétní popis najdete v dokumentaci k příslušnému cartridgi. Hlavní smysl používání monitoru je v tom, že si můžete okamžitě a relativně jednoduše projít a editovat část paměti C64, kterou zrovna potřebujete (většinou program, který jste dělali v nějakém lepším editoru a jehož některé části potřebujete vidět tak, jak jsou přímo v paměti). Jako nejlepší z monitorů bych nazval ten, co je v AR6 (nebo vyšší), přičemž jako měřítko kvality používám užitečnost jeho rozšířených příkazů a práci s ROMkou C64. A jako jeden z mála vůbec je přístupný i z freezeru - můžete libovolný program freeznout, v monitoru prohlédnout aktuální stav a zase ho pustit.

Mé další kroky na pomyslné stupnici editorů se ubíraly k Turboassembleru. Nejznámější editor, kterého existuje nespočet verzí, některé mají různé specifické možnosti, další jsou "ušité" na míru k nějakému hardwaru. Ve většině případů je i jeho load adresa ta startovací. Zásadní rozdíl oproti monitoru je ten, že se váš program nezapisuje přímo do paměti, ale už zde hovoříme o zdrojovém kódu, tedy textovém souboru, který je kompilován. Při psaní není nutné specifikovat adresu pro každou instrukci, ale pouze počáteční adresu/adresy, je možné psát instrukce už do stávajícího programu a Turboassembler podporuje i labely. Má i vstup/výstup do Ascii, práci s bloky nebo funkční klávesy, některé vylepšené verze podporují i makra. Kromě toho existují různé utility pro konverzi, tisk nebo diassemblování (vytažení hotového programu z paměti do zdrojového kódu). Turboassembler umožňuje i volnější syntaxi, není nutné psát počáteční nuly, umí krom HEX soustavy i DEC a BIN, přípustné jsou i jednodušší rovnice, symbolické konstanty a další. Značnou nevýhodou tohoto editoru je přespřílišná paměťová náročnost, která vzrůstá s velikostí zdrojové kódu (kromě na poměry C64 velkého editoru je v paměti i zdrojový kód a musí se tam vejít i výsledný program a to i s případnou grafikou, hudbou a dalšímy daty). Proto vznikaly verze pro určitý hardware, které měly tento problém odstranit. Např. Turboassembler pro expansion ram, pro dva C64 spojené user portem, pro C128 v módu C64. Můj nejoblíbenější je ovšem pro +60kB. Krom toho, že editor samotný je značně debugovaný (oproti klasickým verzím) je dle mého názoru +60kB RAM nejlépe dostupný hardware. Jak jsem zmínil, některé starší verze Turboassembleru nejsou příliš stabilní. Tento fakt mě svého času dohnal k alternativě s názvem Assblaster. Editor postavený na myšlence Turboasíku, ale stabilnější a s několika vylepšeními (např. ovládání je realizováno přes pulldown menu, oproti Turboassemleru, kde musíte znát spoustu klávesových zkratek, klíčovou klávesou je "šipka vlevo"). Na druhou stranu, některé funkce byly zase horší (např. operace s bloky), hardwarová podpora byla pouze pro Flash8 (předchůdce SuperCPU), cartridge, který jsem nikdy ani neviděl a celkově nezískal takovou popularitu jako Turboassembler. Doporučoval bych začátčníkům získat alespoň nějaké základy v programování v monitoru, jinak by vám smysl Turboassembleru nemusel být hned jasný.

Pomyslně nejvyšším programováním C64 je programování na pc. V tomto ohledu existuje mnoho možností, z nichž já zmíním jen zlomek. Probíhá úplně stejně jako programování v (nejen) assembleru pro pc, tedy máte nějaký překladač, který se volá s parametry a předává se mu textový soubor se zdrojovým kódem. Pro tyto účely jsem používal Crimson editor, který je extrémně jednoduchý pro konfiguraci jak editoru, tak volání překladače s parametrem. Překladač samotný pak může být např. DreamAss nebo Asm64 (je i spousta dalších, některé mi nevyhovavaly, další jsem ani nezkoušel). Překladače jsou psané většinou v Ansi Céčku, tudíž je možné je přeložit na všech systémech, případně si předělat nebo dopsat některé funkce. Emulátor WinVice je také možné volat s parametrem, např. s programem, který se má nahrát, a tak při šikovné konfiguraci můžete přeložený program rovnou spustit v emulátoru. Pc překladače umožňují další vylepšení v podobě robustních maker (na způsob Céčkovských funkcí), includování souborů, podmíněného překladu a dalších funkcí převzatých z Céčka. Ikdyž je tento článek o assembelru, dovolil bych si na závěr odbočku. Na pc existuje Céčko, které se kompiluje do assembleru C64, má většinu klasické Céčkovské syntaxe, pouze postrádá destinná čísla. Osobně jsem s tímto programem nepřišel do styku, proto bych případné zájemce přesměroval na Visáče.

Tento článek by měl sloužit pouze jako povrchní úvod, v dalších pokračováních nejspíše bude popsáno používání konkrétního editoru v konkrétní situaci, případně bych mohl některý z dalších článků věnovat některému z vybraných editorů.

LHS

Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

Advert

Hardcode and datamining by PCH of UNREAL, Hardware guru by RAY of UNREAL, Bugs report by SILLICON of UNREAL
UNREAL 2014-2021 Czech republic