28. 8. 2015

Magnetofon a klávesnice

Tesla PMD 85. Českoslovenští soudruzi
správně tušili, že by se mělo počkat
na celovodiče.
Nevím, kdo a kdy přesně přišel jako první s nápadem používat pro záznam dat z mikropočítače magnetofon, avšak nápad to byl jen částečně dobrý. Technologie záznamu informace na pohyblivý magnetický nosič byla sice již v době, kdy se objevily první mikroprocesory, značně rozvinutá, avšak jak již název onoho zařízení (magneto-FON) napovídá, magnetofony byly určeny pro záznam zvuku, nikoli digitální informace. Jejich láce a prevalence ovšem převážily a tak místo aby výrobci začali ke svým krásným novým osmibitovým strojům dodávat specialisovaná záznamová zařízení, nechali uživatele použít to, co mají doma.

Komerčně asi správné rozhodnutí. Z hlediska technologické čistoty a kvality řešení to arci byla katastrofa, protože technologie, plně schopná uspokojit potřeby tehdejšího mikropočítačového uživatele, tím byla degradována podobným způsobem, jako kdybychom místo volantu do automobilu namontovali dvě tlačítka, ZATOČ VLEVO a ZATOČ VPRAVO, a vyžadovali, aby je řidič pro rovnou jízdu střídavě mačkal.

Magnetofon zaznamenává zvuk a má z toho důvodu přenosové pásmo omezené z obou stran: horní mez je dána vlastnostmi záznamové technologie – omezenou rychlostí posuvu pásky a geometrií zapisovací hlavy – dolní je spíše umělá, vycházející z požadavku jednoduchosti konstrukce vstupního dílu přístroje a omezené schopnosti reproduktorů a sluchátek přenést věrně nízké frekvence.

Zvukový tlak má ovšem jednu vlastnost, která digitálním datům schází: nulovou stejnosměrnou (DC) složku. Kdybychom se pokoušeli nahrát data na magnetofon bez modulace, narazili bychom na dva problémy: vinou nenulové DC-složky bychom pásku velmi rychle přebudili, a protože není zajištěna ani přesná rychlost jejího posuvu, došlo by u bloků dat větších než několik bitů k chybám synchronisace. To vše jsou věci dobře známé z návrhu magnetopáskových jednotek, a jsou také spolehlivě vyřešeny vhodnou modulací signálu a vhodným, v optimálním případě samoopravným kodem.

U magnetofonu je situace tím složitější, že vstup prochází dalšími, pro účely datového záznamu zbytečnými, obvody a filtry, a proto, potřebujeme-li data převést na magneticky věrně zaznamenatelný zvuk, musíme volit specifickou modulaci a kod. Ty jsou arci u každého počítače jiné, a z toho plyne relativní složitost emulace magnetofonu.

Některé emulátory na tyto složitosti resignují a emulují magnetofonovou kasetu prostě jako sekvenci zapisovaných bytů, bez informace o poloze znaku a bez možnosti podpory nestandardních formátů (formát PMDTAPE Martina Malého). Jiné zaznamenávají aspoň údaj o tom, jak je záznam rozdělen do bloků (formát PTP Romana a Martina Bórikových), avšak chceme-li být obecní a podporovat např. i IQ 151, které vyžaduje mezery i mezi jednotlivými řádky basicového programu, aby je procesor mohl bez nutnosti bufferu pro celý program tokenisovat, musíme sáhnout po zcela universálním formátu, který bude zapisovat informace o poloze každého jednotlivého pulsu, resp. hrany.

Ve svém emulátoru podporuji pro každý model počítače několik formátů, abych umožnil nahrávat (a konvertovat) kasety s existujícími daty. Dva formáty jsem vytvořil sám:

1. Formát ukládaný do souboru XML, obsahujícího informace o každém pulsu, s přesností na jeden cyklus procesoru, přičemž se ukládá i informace o vzorkovací frekvenci; tento formát umožňuje zcela přesný záznam obsahu kasety, je arci značně neúsporný.

2. Formát PMT, který je úspornější, binární versi předešlého.

Tyto dva formáty jsou universální a mají je povoleny emulátory všech počítačů.

Dále podporuji ty formáty, které jsem našel na webu a o kterých předpokládám, že v nich uživatelé mají nebo by mohli potřebovat data. Pro PMI-80 je to PMITAPE a stařičký SAM, pro PMD 85 formáty PMDTAPE, PMD a PTP, pro IQ 151 CSW (a přirozeně IQTAPE, jakmile ho Martin Malý vytvoří ;-) ).

Jako třešničku na dortu podporuji pro všechny modely i zvukový formát WAV.

Zvažoval jsem podporu containerového a universálního formátu UEF/TZX, který je běžný ve světě spektristů, commodoristů a jim podobných osmibitistů, leč mám to za zbytečné, protože by šlo toliko o softwarové cvičení: žádný jiný mně známý emulátor československých počítačů tento formát ani nezapisuje, ani nečte.

Podporu magnetofonu mám za uspokojivě vyřešenu, poněkud jinak je tomu u podpory klávesnice.

Klávesnice PMD 85. Povšimněte si
uzamčené klávesy Shift na levé straně.
Tu lze relativně věrně podporovat v podobě grafického panelu, na kterém jednotlivé klávesy mačkáme myší, s možností je kliknutím s Ctrl uzamknout ve stlačené poloze pro dosažení dvoj-, troj- a vícehmatů (viz levý shift na obrázku).

Pro praktické používání emulátoru je arci nutné namapovat klávesy emulovaného stroje na klávesnici, a to pokud možno tak, aby bylo možné aktivovat více kláves současně.

To znamená, že mezi klávesnicí emulovanou a klávesnicí emulujícího stroje existuje vztah many-to-many: jednu a tutéž klávesu musí být možné aktivovat několika různými klávesami (např. z normální i numerické klávesnice), a zároveň musí existovat možnost implementovat na jedinou klávesu vícehmat (příkladmo stisknu-li na své klávesnici znak *, chci, aby se na klávesnici PMD stisknul Shift + :).

Zatím mám řešení one-to-many,
ale nejsem s ním spokojen.
To je značně komplikované zejména z hlediska rozhraní uživatelského nastavení (jež je s ohledem na multiplatformnost Javy nezbytností), ale budiž, omezím-li se v obecnosti řešení na maximálně dvojhmat, snad to nějak naprogramovat půjde.

Co vyřešit neumím a nevylučuji, že mi nápadem pomůže někdo z čtenářů, je problém modifikátorových kláves. Příkladmo, chtěl-li bych mít klávesu 5 namapovanou na pětce mé PC klávesnice, neumím zabránit tomu, aby se stisknutím shiftu aktivoval shift emulovaného stroje, a výsledkem by tedy nebyl znak 5, ale procento.

Tohle podle mne nemá žádné dobré řešení.

Aktualisováno.

Se zajímavým a poněkud nečekaným důsledkem použití magnetofonu pro záznam dat jsem se setkal u emulace PMD 85. V době, kdy má být na pásku ticho, tam PIT (8253) posílá frekvenci cca 60 kHz. Skutečný magnetofon ji samozřejmě nedokáže zaznamenat, ale můj emulovaný ano, takže když jsem 8253 naemuloval a zapojil, k mému zděšení byl začátek výstupu plný krátkých pulsů, po nich následovala nahrávka a další krátké pulsy. Budu tedy muset výstup z PMD, případně vstup na magnetofon, doplnit low-pass filtrem.

Žádné komentáře:

Okomentovat