Tak, moji milí, doufám, že jste nažhavení do programování, že jste si oprášili stroják a že jste načerpali ducha jednodeskových počítačů z 80. let. Pojďme na to.
Nejprve pár věcí k samotné výzvě: rozhodl jsem se, že bude mít několik kol, a že bude mít dvě hlavní kategorie. První kategorií je Z80/8080, druhá kategorie je 6502. V každém kole zadám úkol, hodně volně, abych nechal prostor vaší tvůrčí energii a neotřelým myšlenkám, a každý, kdo úkol splní, dostane za dané kolo bod. Pokud udělá věci „nad plán“, dostane další body. Dva z vás (z každé kategorie jeden), co projdou celou výzvou a získají nejvíc bodů, na konci ode mne dostanou přesně ten jednodeskáč, co budu v průběhu celé výzvy stavět…
Podmínky jsou prosté. Píše se v assembleru pro ten který procesor, a soutěžní příspěvky musí být zveřejněny jako assemblerovský zdroják (tedy žádný HEX) v nějaké otevřené podobě. Ideálně na GitHubu jako repo nebo jako Gist. Do komentářů sem napište odkaz, a do zdrojáku pak nějaký kontakt na sebe. Nezapomeňte uvést licenci (doporučuju BSD, MIT nebo CC) a nezapomeňte na nějaký návod k obsluze.
Zadání pro první kolo je zde:
Máte holý počítač. To znamená jen procesor, paměti a jeden sériový port. Máte 1 kB RAM, 4 kB ROM a sériový obvod 6850 (nebojte, je velmi jednoduchý). Počítač nepoužívá přerušení. Napište pro takový počítač jednoduchý obslužný program (monitor), který bude umožňovat základní činnosti, tedy měnit obsah paměti a spouštět programy. Pokud zvládnete i víc funkcí, třeba debugování, breakpoint apod., budou body navíc.
Inspirace: třeba sériové rozhraní KIM-1…
Stroje:
Z80: 4kB ROM (0000h-0fffh), 1 kB RAM (8000h-83ffh), 6850 zapojena na IO portech 00h (řízení/status) a 01h (data).
6502: 4kB ROM (f000h-ffffh), 1kB RAM (0000h-03ffh), 6850 zapojena na adresách a000h (řízení / status) a a001h (data).
Pro jednoduchost prosím inicializujte 6850 pomocí zápisu hodnoty 15h do řídicího registru. Bližší info najdete třeba na Strojáku. Chybové stavy 6850 můžete ignorovat.
Vše je jasné? Tedy vzhůru do toho! Držím palce!
Příště: sedmisegmentovky a klávesnice.
PS: Můžete psát a ladit v online IDE ASM80.com – zde je návod, jak si nastavit virtuální stroj…