17. 5. 2014

V osidlech dokonalosti aneb Útrapy perfekcionistovy

Dobrá rada všem perfekcionistům a perfekcionistkám: nikdy neemulujte, zejména ne osmibitový hardware. Jinak skončíte, tak jako já, v zajetí věčného dilematu.

Příkladmo panel PMI-80. Jak známo, použil se pro něj díl z jakési obskurní kapesní kalkulačky, a panel samotný byl vyroben z nevábného kusu plastu. Můj emulátor má panel z kartáčovaného kovu, tedy takový, jaký nikdy žádné péemíčko nemělo a mít nebude. Prostě jsem si nemohl pomoci.

A ještě hůř jsem dopadl s východoněmeckým multimetrem. Začalo to tím, že se mi nelíbilo, jestliže soudruzi z NDR na panelu použili anglické popisky (vyjma názvu přístroje), ale v číslech psali desetinné čárky místo teček. Opravil jsem. Pak improvisace, o které jsem psal na druhém blogu: odmítl jsem principiálně takové technicky pokleslé řešení implementovat a oba přístroje, multimetr i čítač, vybavil LED-kou sice ve stejné žlutozelené barvě jako sedmisegmenty, ale v rozumné velikosti a na správném, opticky korektním místě. Nebo popiska tlačítka ~: místo nevkusné tildy jsem panel popsal znakem, který je pro označení střídavých veličin správný.

A konečně, původní měřák měl funkci AC, ale jako převážná většina podobných přístrojů neměřil True RMS napětí a proudy, ale za AC zesilovačem měl prostý integrátor a usměrňovač, takže hodnota RMS souhlasila pouze pro přesně sinusové průběhy. Zde bych soudruhy z NDR nevinil, není snadné takovou konversi realisovat, zejména se součástkami dostupnými v 80. letech. Používaly se pro to různé konstrukce, např. resistor propojený s thermistorem, později se začala druhá mocnina vyrábět analogově tak, že se napětí zlogarithmovalo na operačním zesilovači s polovodivým přechodem ve zpětné vazbě a v dalším stupni se opačným postupem odlogarithmovalo; dnešní True RMS měřáky, mimochodem nijak levné, pracují digitálně a umocňují i odmocňují mikroprocesorem.

V případě emulátoru je výpočet RMS hodnoty hračkou: emulované měření sestává v akumulaci integrálu napětí v době mezi dvěma zápisy na port DAC, stačí tedy do akumulátoru přičítat integrál jeho druhé mocniny, což je s ohledem na exponenciální průběh napětí za RC high-passem triviální úloha.

Stojím tedy před dilematem, a i když jsem se zatím přiměl k tomu, že můj přístroj ukazuje takové hodnoty střídavého napětí jako jeho vzor, tuším, že tuto bitvu prohraji a vytvořím nakonec místo věrného emulátoru historického měřicího přístroje technologický kitsch podobný těm historickým automobilům, do kterých namontují moderní motor a vozí v nich po Praze turisty.

22. 4. 2014

Jak efektivně emulovat osmibitový hardware

Jelikož můj emulátor počítače PMI-80 funguje již řadu týdnů beze změn a pracuji pouze na systému rozšiřujících zařízení (add-ons), mohu některá technická řešení pokládat za definitivní a podělit se s čtenáři o to, jakými úvahami jsem byl při programování veden a pro které z dostupných variant se rozhodl.

11. 4. 2014

Vítejte!

Blog založen, vážení čtenáři přivítáni, a můžeme pokračovat, kde jsme přestali:

Javový emulátor PMI-80 mám téměř hotov, zdržel jsem se arci tím, že jsem k němu vytvořil daleko víc periferií, než jsem původně zamýšlel. Samotné PMI je hardwarově chudičké, má vedle procesoru toliko jednu 8255 (a místo, případně sokl pro druhou), klávesnici s pětadvaceti tlačítky a neplnohodnotný displej, který je nutné neustále refreshovat, jinak na něm svítí jediná posice.

Prvotním cílem mé emulace bylo naučit se Javu, což se mi snad podařilo (budete moci sami posoudit ze zdrojáků, ježto projekt je vydáván pod GNU GPL). Kromě toho jsem se, jako vedlejší produkt, naučil XML Schema, na což jsem se stejně už několik let chystal – a byla ostuda, jestliže jsem v předchozích aplikacích popisoval XML soubory v DTD.

Tedy popořadě, s obrázky.