MOS 6502
Jak si možná vzpomenete, opustil jsem javovou versi svého emulátoru poněkud znechucen z důvodu, že bez proprietárního blobu nelze zajistit synchronisaci mezi obrazem a zvukem, resp. vůbec souvislý a nepřerušovaný, výstupům hardwaru odpovídající zvukový proud. V JavaScriptu podobný problém existuje rovněž, avšak je, minimálně s moderními prohlížeči, řešitelný.
Jednou z nedávných vymožeností browserového API je totiž AudioWorkletNode, což je skript generující surový zvukový výstup, který běží v samostatném vlákně. Plynulý zvuk tak mohu zajistit tím, že hlavní event loop nechám pro interakci s uživatelem, emulaci hardwaru spustím ve workeru a ve třetím vlákně mi poběží zvuk. Druhé vlákno bude tomu třetímu posílat, jaký zvuk se má hrát, prostřednictvím message kanálu anebo sdíleným bufferem: obojí jsou víceméně ekvivalentní řešení, přičemž pro osmibitové počítače se jeví kanálové řešení zcela dostačujícím.
- Autor: Tomáš Pecina
- Kategorie: Hardware
- Počet zobrazení: 5067
Investuji
Je dobře zajistit se včas na stáří. Já jsem se rozhodl spojit příjemné s užitečným a zakoupil jsem tři investiční čipy Tesla MHB8048/18, každý v ceně 20 Kč. Pokud to dobře půjde, za 15–20 let by mohla jejich hodnota dosáhnout i stokoruny.
Kromě toho, že je budu mít uloženy v trésoru, mi pomohou s dokončováním emulátoru. Mikroprocesory, resp. mikrořadiče, v té době ještě poskytovaly fully static operation, což mi dovolí přesně otestovat každou instrukci s pomocí Arduina. Výsledkem by mohl být klasický instruction exerciser; uvidíme.
- Autor: Tomáš Pecina
- Kategorie: Hardware
- Počet zobrazení: 5201
Klávesové zkratky
Vleklá letní vedra, potažmo moje neschopnost dělat v nich něco pořádného, způsobila, že mám svůj emulátor již téměř zcela přepsán do JavaScriptu. Ten jsem si celkem oblíbil: má sice své quirks (česky bychom asi řekli neuralgické body
), nicméně nenutí autora aplikací podřizovat se téměř nábožensky pojatému prostředí a dává mu volnost koncipovat software podle svých představ, se zachováním rozumné rovnováhy mezi systematickým a praktickým.
Řeším tedy, předtím než emulátor otestuji a poté vypustím mezi uživatele (a na GitHub), poslední koncepční otázky. Jednou z nich je, jak pojmout klávesové zkratky. Počítače z 80. let neměly klávesnici podobnou té dnešní, jež je co do označení a funkce kláves dědicem legendární klávesnice IBM PC, a je tedy nutné zařídit co nejlepší namapování. Bez něj zbývá, minimálně na nedotykových displejích, ovládání klávesnice myší, což se omrzí nejpozději po dvou minutách; prakticky ověřeno.
V zásadě existují dvě možnost, jak to provést: mapovat znaky nebo stisky. První možnost se prima facie nejeví příliš vhodnou, protože bychom se vzdálili od originálu a nemohli emulovat různé dvoj-, troj- a vícehmaty, arci i druhá má své nedostatky. Tím hlavním jsou shiftované znaky: příkladmo PMD 85 má uvozovky na shiftované dvojce, kdežto moderní české klávesnice je mají na shiftovaném ů
, a neexistuje způsob, jak takové mapování v emulátoru zařídit.
V javové versi jsem vyšel z toho, že každou klávesu na PC budu mapovat na množinu znaků na cílové klávesnici, čímž dosáhnu aspoň částečného řešení: neumím sice mapovat shiftované klávesy, ale shiftovaná může být cílová klávesa. Příliš to nefungovalo, protože na PMD 85 byl problém se současným stiskem shiftu a klávesy, a hlavně bylo nastavování zkratek naprosto nepřehledné, jak je patrno z obrázku.
V JavaScriptu jsem proto řekl Ne! a model jsem ještě zjednodušil: jednu klávesu na PC lze nyní namapovat na jedinou klávesu na emulovaném stroji. To mi dovoluje zachytit nastavení na jediném obrázku, byť s určitými omezeními. A také je ještě na hranici přehlednosti modál, kterým se výběr provádí.
Obojí si můžete podrobně prohlédnout na obrázcích, a zakrátko i na živém emulátoru.
- Autor: Tomáš Pecina
- Kategorie: Úvahy a komentáře
- Počet zobrazení: 3086
Kosmos v. Petr anebo Když dva dělají totéž
A teď (na chvíli) o něčem úplně jiném…
V historii začátků osobních počítačů hrají svou roli i poněkud neobvyklé školní stroje, které nepracovaly přímo s instrukcemi mikroprocesoru, nýbrž implementovaly svou vlastní – emulovanou – instrukční sadu, obvykle jednodušší a vhodnější pro účely výuky např. tím, že používala nikoli hexadecimální, nýbrž dekadickou representaci číselných hodnot.
Popsané uspořádání bylo typické pro počítače využívající mikroprocesory/mikrořadiče s harvardskou architekturou, v nichž nebylo možné zapisovat do paměti programu; takovými byly např. řady Intel 8048/8051.
Na prvně jmenovaném mikrořadiči, resp. jeho variantách, jsou založeny dva počítače vyráběné v 80. letech: západoněmecký Kosmos CP1 a československý Petr.
- Autor: Tomáš Pecina
- Kategorie: Hardware
- Počet zobrazení: 3155
Preview
Zde se můžete podívat na živé preview PMI-80 v akci, zatím bez magnetofonu, debuggeru a dalších nezbytných funkcí; kod je nepochybně plný chyb, po hrubé konversi z Javy ho teprve budu čistit, smýčit a testovat, tak i v tomto případě prosím při posuzování díla o mírnost:
- Autor: Tomáš Pecina
- Kategorie: Hardware
- Počet zobrazení: 2697
1 / 6