UniCMT – náhrada kazeťáku pro SHARP MZ

UniCMT je další kouzelný NOBOMI-ho počin. Jedná se o jednoduchou náhradu kazetového magnetofonu pro počítače SHARP MZ-700, MZ-800 nebo MZ-1500. Kromě vlastní emulace kazetového magnetofonu umí UniCMT i velmi rychlé spouštění programů a práci s RAM diskem, čímž výrazně zrychluje a zpříjemňuje práci s počítači řady MZ-700/800/1500.

UniCMT se zapojuje do 9-pinového konektoru SHARP MZ místo standardního kazetového magnetofonu. Nevyžaduje žádné úpravy počítače. Dokáže přehrávat soubory MZF (MZT, M12, …) rychlostí asi 55x rychlejší než standardní kazeťák. Například hra Flappy, jejíž načtení normálně trvá asi 5 minut, se na SHARP MZ-800 spustí asi za 6 sekund. UniCMT si poradí i s vícedílnými soubory MZT. První část se načítá zrychlenou rychlostí, zatímco ostatní části se načítají standardní rychlostí.

Update: protože bylo pár dotazů, popíšu rychlosti konkrétněji. Na každém stroji je to trochu jinak, záleží na brzdění od GDG, ale např. na Japonském (NTSC) MZ-700 je průměrná přenosová rychlost při spouštění programů z manažera asi 66692 Bd. Standardní rychlost kazeťáku na PAL MZ-800 je asi 1160 Bd, ale i zde je prostor k zrychlení a bity se dají zkrátit. Takže i ve chvílích, kdy UniCMT přenáší data pomalu „standardní“ rychlostí, je přenos i tak lehce zrychlený a to na cca 1593 Bd, tj. asi o 37%.

Instalace je velmi jednoduchá, jen odšroubujete 2 šroubky, které drží kazetový magnetofon, vysunete kabel z konektoru v desce MZ a do něj zasunete konektor UniCMT. Konektor UniCMT je trochu jiný než originální, nemá zámek, proto je potřeba pohlídat aby kabel nebyl překroucený, musí jít rovně z UniCMT do desky SHARP MZ bez otočení.

UniCMT načítá soubory z USB flash disku se souborovým systémem FAT32. K prohlížení a spouštění souborů se používá UniCMT manažer. Manažer se načte do čistého počítače jako první program i bez přítomnosti USB flash disku a po spuštění vás vyzve k jeho vložení.

Update: Nebyl by to Bohouš, aby i tady nebyly vychytávky. Manažer se musí načítat standardní rychlostí, přes standardní ROM, protože počítač není nijak modifikovaný. Aby se celý proces co nejvíce zrychlil, načítá se jen hlavička programu, ve které je rovnou umístěn loader manažeru, který už načte vlastní manažer zrychleně. Ač to zní jednoduše, jednoduché to vůbec nebylo. UniCMT je kompatibilní s počítači SHARP MZ-700, 800 i 1500, japonskými i evropskými a ty mají různé ROM a různě přistupují k chování zavaděče. MZ-700 například odmítá spouštět program pod adresou 1200h, tak Bohouš využívá toho, že se jméno programu vypisuje na obrazovku a spouští ho z video RAM. Kumšt byl najít a použít jen takové instrukce, které se vhodně překódují při převodu mezi SHARP ASCII. Proto na MZ-700 je na obrazovku vypisované jméno programu při načítání poněkud zvláštní, resp. jsou to zdánlivě nesmyslné znaky. Na MZ-800 zase počítač program s délkou nula zkusí i tak přesunout, čímž okopíruje 64 kB paměti sama na sebe a při té přiležitosti „navalí“ porty mapované do paměti, takže je potřeba je znovu zinicializovat.

Na disku tak není nutné vytvářet jakékoli struktury nebo umisťovat nějaké pevně dané soubory. Co si na něj nahrajete, to pak můžete prohlížet v manažeru a spouštět. Existuje jedna výjimka – firmware update. Firmware obsahuje i manažer, takže aktualizace firmwaru obvykle znamená i aktualizaci manažera. Pro aktualizaci firmwaru je potřeba umístit do rootu USB flash disku soubor unicmt.app a počítač zapnout při zmáčknutém šedém tlačítku. Rozbliká se levá LED červeně, pak zablikají červeně obě, následně zablikají zeleně a zůstanou zeleně svítit. To znamená, že firmware byl úspěšně aktualizovaný. Pak stačí stisknout pravé červené tlačítko a tím přepnout UniCMT do běžného provozního režimu. Nebo zapnout a vypnout počítač.

Význam LED diod je následující:

  • levá červená – není vložený USB flash disk nebo nemá souborový systém FAT32
  • levá zelená – je vložený USB flash disk s rozpoznaným souborovým systémem
  • pravá nesvítí – nic se neděje, nejsou další data, bude se načítat manažer
  • pravá svítí zeleně – jsou další data (multi file MZT), na signál motoru se začne přehrávat
  • pravá svítí červeně – ukončeno přehrávání, nic se neposílá na výstup do signalizace motoru
  • pravá bliká oranžově – načítá se z emulovaného kazetového magnetofonu

Tlačítka v aktuálním firmware zatím nemají žádnou další funkci, kromě zmíněné aktualizace firmwaru. Počítá se s jejich použitím ve vícesouborových MZT nebo pro pohyb ve frontě souborů na přehrávání, ale tato funkce zatím nebyla implementována. Veškeré ovládání se děje přes UC manažer. V současné verzi firmware není zatím implementováno ani nahrávání z počítače do UniCMT, s touto funkcí se ale počítá v blízké budoucnosti.

Na zadní straně UniCMT najde 4-pozicový DIP přepínač. Prozatím má rozumný význam pouze pozice 4, která zapíná režim MZ-700. Pro správnou funkci UniCMT v MZ-700 přepněte tento přepínač na ON.

Krabičku si můžete snadno vytisknout sami ve svých oblíbených barvách na 3D tiskárně nebo si budete moci objednat UniCMT s vytištěnou krabičkou. Soubory .3MF (dvoubarevné) a .STL pro náhradní krabičky kazetových magnetofonů jsou volně k dispozici ke stažení na stránce UniCMT na retrocomp.cz nebo i tady:

MZ700cassetteboxARGO_2color_3mf.zip
MZ700cassetteboxARGO_2color_stl.zip
MZ800-CMT-HOUSE4_2color_3mf.zip
MZ800-CMT-HOUSE4_2color_stl.zip

Pro tisk krabičky na MZ-800 se mi osvědčilo Béžové PLA z Plasty Mladeč u nového SHARP MZ-800. Na starý zažloutlý stroj mi barevně ladí skoro perfektně Bambu Lab ABS Beige.

Po zapnutí počítače stačí stisknout C u MZ-800 nebo zadat příkaz L u MZ-700 a naběhne vám UC manažer. USB flash disk můžete klidně za chodu vysunout, manažer si pouze řekne o jeho zasunutí a po pár sekundách ho načte a zobrazí obsah. Tohle je důležité, abyste za chodu mohli pohodlně přemisťovat USB flash disk mezi PC a UniCMT, protože není k dispozici síť nebo sériové USB propojení, jako na Unikartě.

Manažer běží ve znakovém režimu 40×25 a vypadá stejně na MZ-700, MZ-800 i MZ-1500. Šipkami nahoru a dolu chodíte po souborech nebo adresářích, doleva a doprava po stránkách.

Stisknutím klávesy CR na MZF (MZT, M12, …) souboru jednoduše spustíte program. Program je zaváděn manažerem ve zrychleném režimu a spuštění jakéhokoli programu je tak velmi rychlé.

Bohouš implementoval i velmi rychlé třídění, které se přepíná klávesou BLANK. Stiskem klávesy F1 se dá zobrazit i stručná nápověda. Něco napovídají i F-klávesy zobrazené ve spodní liště, ale ne všechny (zatím) fungují.

Pokud máte RAM disk kompatibilní se SRAM diskem (např. MZ-1ARM18) můžete pomocí klávesy F2 uložit manažer do SRAM disku. Tím zrychlíte jeho načítání z asi 3s na okamžité. Ovšem pozor, některé programy RAM disk používají a „zboří“ vám ho, takže pak musíte ty 3s zase čekat 😉 Pokud jste na MZ-800, manažer před spuštěním programu přepne na druhou stránku a tím zamezí inicializaci stránky první, kde je manažer. Druhá stránka RAM se navíc používá pro BASIC programy. Pokud najedete na BASIC program nebo data, můžete ho stisknutím klávesy F5 okopírovat do RAM disku. Pokud si takto nakopírujete BASIC programy, které potřebujete a následně zrychleně spustíte BASIC, máte jeho programy předpřipravené v RAM disku a můžete si je vypsat příkazem DIR „RAM:“ nebo zrychleně DIRRAM. Z výpisu pak snadno a rychle příslušný program načtete nebo spustíte pomocí známých příkazů LOAD nebo RUN.

Například spuštění známého BASIC dema na SHARP MZ-800 trvá z kazety asi 12 minut. Musíte načíst BASIC, načíst demo, demo si pak ještě načítá svoji datovou část. Na UniCMT celý proces, včetně spuštění manažera, nakopírování programu a dat do RAM disku, spuštění BASICu a spuštění dema trvá asi 40s, viz. video výše.

UniCMT je perfektní pro ty, kdo nevyužijí Unikartu, nepotřebují emulaci Floppy disku, Quick disky, VGA výstup, nepotřebují LAN a USB spojení s PC, zkrátka chtějí jen spouštět programy. Neužijete si CP/M, ale pokud chcete jen hry a chcete si hrát v BASICu, není nic jednoduššího.

UniCMT umí i jednu věc, kterou Unikarta neumí. Tou je spouštění vícedílných her a programů. Unikarta není napojená na piny kazetového magnetofonu a neemuluje tak přímo kazetový magnetofon, na rozdíl od UniCMT. Pokud si připravíte MZT soubor tak, že do něj za sebe naskládáte jednotlivé MZF soubory, UniCMT bude jednotlivé části přehrávat postupně. Po nahrání první části zrychleně a jejím spuštění se pravá LED rozsvítí zeleně na znamení, že existuje a je připravená další dohrávka a pokud SHARP spustí motor kazeťáku (příkazem LOAD nebo jeho obdobou v kódu) začne UniCMT posílat data standardní rychlostí. Tady přehrávání trvá, resp. je stejně rychlé, jako z originálního kazeťáku, protože data načítá spuštěný program a ten nepočítá s něčím, jako je UniCMT.

UniCMT bude brzy k dispozici na retrocomp.cz a věřím, že bude dostupnější než Unikarta. Kromě výhodnější ceny ho Bohouš od začátku navrhnul tak, aby bylo jednoduché na výrobu, THT součástek je méně, takže dostupnost by měla být lepší. Ale i Unikarty budou 🙂

Příspěvek byl publikován v rubrice MZ-1500, MZ-700, MZ-800, SHARP se štítky , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

14 komentářů: UniCMT – náhrada kazeťáku pro SHARP MZ

  1. Milsa napsal:

    Napadlo ma, že by sa možno dalo skúsiť, že o koľko je MZ schopné zvýšiť rýchlosť nahrávania. Monitor myslím po zistení bitu 1 alebo 0 čaká na koniec bitu a potom má časovú slučku, aby opäť načítal nový bit 0 alebo 1. Skúšal niekto pomaličky skracovať koniec daného bitu, že o koľko je teoreticky možné zvýšiť rýchlosť nahrávania? Možno by sme sa dostali z priemernej rýchlosti 1200 na 1400, možno menej, ale čas načítania by bol o málinko kratší.

    • Martin napsal:

      Nikdy nepodceňuj Bohouše 😉 Toto je tam samozřejmě naimplementované. Reálná „pomalá“ rychlost je asi 1593 Bd, proti standardním cca 1160 Bd u PAL MZ, což je cca 37% zrychlení. A to je jen část vychytávek. Mrkni na videa, jak rychle se načte manažer. To je taky normální rychlostí standardní ROMky 😉 Doplním do článku detaily.

    • Martin napsal:

      Do článku jsem doplnil detailnější info ohledně rychlostí a vychytávek při spouštění manažera.

    • Aleš Zíka napsal:

      Kdysi jsem se ve čtecí rutině MGF docela hrabal a znal ji skoro nazpaměť. Byly dva způsoby čtení – originální rutina SHARPa počkala na náběžnou hranu pulsu, potom čekala ve smyčce stanovený čas a pak otestovala výstup z MGF, jestli tam je 0, nebo 1. Jiný způsob používala rutina, která zobrazovala pruhy do borderu – ta po náběžné hraně pořád sledovala výstup z MGF, počítala čas a čekala na sestupnou hranu, vlastně tak rovnou měřila délku pulsu.
      Pak se jen uložil puls, případně celý byte, inkrementovaly a dekrementovaly se nějaké čítače a čekalo se na další náběžnou hranu, nebylo to moc instrukcí. Dá se to spočítat, kolik času potřebujete, abyste neprošvihl další náběžnou hranu a jak moc můžete zkrátil druhou část pulsu. Kopírákem TurboCopy jsme nahrávali trojnásobnou rychlostí a SHARP to v pohodě stíhal přečíst, tam už to přestával zvládat kazeťák, slušně spolehlivá se nám jevila 2.5násobná rychlost.
      Dělaly se i nějaké pokusy se zkracováním druhé půlky pulsu při zápisu na kazetu, ale nesmělo se to přehánět, vyrábíte tím signál se stejnosměrnou složkou a zhoršujete záznam.
      TurboCopy také používalo fintu, že napřed nahrálo krátký program, který upravil nahrávací rutinu a vlastní program se pak nahrával zvýšenou rychlostí.

    • hlide fremen napsal:

      One technique is to copy the monitor to DRAM at the same address and patch the read/write time (bearing in mind that DRAM executes faster than ROM, which adds a T-state to each instruction). I was able to get to X3 and X4 with an Arduino MEGA. But the problem is that if the DRAM is overwritten and you switch back to ROM, you lose this possibility. Not to mention the fact that some BASICs manage read/write to tape themselves.

  2. Dalibor Popželev napsal:

    Zdravím Martine,
    ještě jednou dík za UniCMT. Dokonce se mi podařilo to rozchodit, což je u mně obdivuhodné. Jen se zeptám, pochopil jsem dobře, že zpětně na USB Flash nemohu nahrát prográmek od BASIC?
    Pravděpodobně to jde na Unikartu, ale to mám ještě před sebou jako výzvu.
    Budu se muset přihlásit do nějakého začátečnického kurzu.

    • Martin napsal:

      Zatím to nejde. Na Unikartě to jde při použití BASICu upraveného pro Unicard. Je součástí ukázkového obsahu na sharpwiki.cz. Místo QD má naimplementovaný file system Unikarty na mikroSD kartě, takže se z nějak dají načítat i ukládat prográmky pomocí příkazů LOAD, RUN, SAVE.

    • Mikeš napsal:

      Také jde nahrávat BASICové programy na image(obraz) QD/FD disku, které jsou uložené na unikartě. Jen se to potom trochu složitěji přehrává třeba do PC, ale jde to. Ovšem, jak už tady zaznělo, je to řešení určené pro unikartu.

  3. Petr Žydek napsal:

    Smekám před Bohoušovou genialitou 🙂 a láteřím nad svou leností. 🙁 Ta schránka vypadá skoro jako originál, jako kdyby byla vyrobená v profi formě, ve vstřikolisu. Jakým způsobem jsou udělané ty montážní body pro upevnění desky samořeznými vruty? Jsou to duté distanční válce, vytvořené jako součást hlavního tělesa při 3D tisku? Nebo je tam kydnuto „tavkou“ a sprostě prošroubováno? Schránka vypadá tak pěkně, že to přímo volá po modifikaci – líbil by se mi výřez pro disketovku 3,5″ (na pravoboku), plus nějaký podpůrný plast pro její upevnění (Chinon FZ-357 by se tam vešel).. Ale třeba jsem příliš optimistický a naivní…

    • Martin napsal:

      Jsou tam vytištěné distančky, takže se jen pohodlně přišroubuje tišťák. Na Floppy by to určitě upravit šlo. Ale je otázka, jestli to má smysl s Unikartou. Bohouš mi třeba udělal prostřední díl na jednu MZ-700, který mi chyběl.

  4. Pingback: CM4 adaptér a I/O board pro Amiga PiStorm32-Lite | Martinův 8-bitový blog

  5. Dalibor Popželev napsal:

    Zdravím Martine,
    nikde na stránkách jsem nenašel soubor unicmt.app pro Uni CMT, v té poslední verzi. Dalo by se s tím prosím něco dělat?
    Děkuji

    • Martin napsal:

      Nový firmware ještě není dokončený, až bude, určitě zveřejním. Pošlu Ti do mailu lehce novější, ale moc se funkčně neliší, od toho, co máš.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *