Jak se vám to rýmuje? Mně kupodivu docela dobře…

Zaprvé: Vezmete Arduino Uno.

Zadruhé: Použijete kód emulátoru 8080, co je pod licencí GPLv2 dostupný v rámci emulátoru Altairu 8800. Stačí jen samotný emulátor.

Zatřetí: Napíšete jednoduchý HAL – Hardware Abstraction Layer. V něm definujete, jak se čte z paměti, zapisuje do paměti a jak se pracuje s periferiemi. Já si nadefinoval, že v prostoru 0x0000-0x0fff bude ROM (tedy PROGMEM), v prostoru 0x1000-0x13ff bude RAM (vlastně jen pole hodnot byte).

RAM by šla zvětšit na 1.5kB, i když překladač píše varování. Zkuste si to, a nezapomeňte změnit příslušné hodnoty ve zdrojáku BASICu.

Za čtvrté: Otestujete si, jak to běhá, jednoduchým příkladem ve strojáku do ROM.

Za páté: Přidáte obsluhu portů. Port 1 budiž sériový port, port 0xFE bude ovládat LEDku na Arduinu. Jen tak, pro radost. Stgrojákem ověříte, že to šlape.

Za šesté: Popadne vás pejcha a řeknete si: Však proč nepoužít Tiny BASIC? Je to jednoduché, stačí implementovat jen čtení ze sériové linky a zápis do ní. Zdrojáky jsou…

Za sedmé: Celé si to přeložíte vlastním online assemblerem. Stačilo jen upravit syntax makra a na několika místech změnit apostrofy na uvozovky (DB ‚,‘ na DB „,“).

Za osmé: převedete výsledný HEX na sérii čísel, kterou includnete do toho arduinského .ino tam, kde má být ROMka.

Za deváté: Sebevědomě to celé přeložíte, spustíte – a ono to funguje!

Přiznávám, že kdyby to nefungovalo, tak by mi to asi sebralo trochu elánu, ale ono to fungovalo.

Za desáté: Zkusíte si přeložit i TinyBASIC verze 2. Nefunguje na první dobrou, protože musíte ještě změnit komunikační porty, ale pokud to uděláte stejně jako ve verzi 1, tak se to zase rozeběhne.

Nakonec z toho celého uděláte balíček a publikujete na GitHubu.

Dejte si taky!