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