Nový firmware pro emulátor kazeťáku UniCMT v0.5

Chvíli to trvalo, ale dočkali jsme se. NOBOMI odladil novou verzi firmwaru pro UniCMT, kde najdete nejen dlouho očekávané ukládání (SAVE), ale i pár nových překvapení. S novým firmwarem se UniCMT stává perfektně použitelným samostatným zařízením, se kterým můžete načítat i ukládat programy nebo jejich data, jako dřív s kazeťákem. Jen teď většinou „malinko“ rychleji než za starých časů na skutečném kazeťáku.

O UniCMT jsem už psal před rokem, takže teď se soustředím jen na novinky.

Asi nejnovější a očekávanou vlastností je ukládání. Ukládat na virtuální kazetu můžete ze kteréhokoli programu na SHARPu, který to podporuje a můžete ukládat libovolnou rychlostí. UniCMT si to přebere a Vaše data uloží do souboru třeba LINEDEMO.BAS_____#002.MZF. Začátek jména souboru je dán jménem, které si zvolíte při ukládání a je uložené i v MZF hlavičce souboru. Na konci jména je číslo verze souboru. Začne se s #001 a když už soubor se stejným jménem existuje, přičte se jednička. Můžete tak mít až 999 verzí soubor. To by snad mělo stačit každému, i když o 640 kB se to taky povídalo 😉

No, ale jak teď s uloženým souborem do BASICu? Když v BASICu zadáte příkaz LOAD „LINEDEMO.BAS“ nic se nenačte, protože soubor není ve virtuálním kazeťáku připravený a BASIC informaci, který soubor chce nikam ven nepošle, jen zapne motor a poslouchá na pinech kazeťáku, co se mu pošle. To se ovšem dá snadno napravit. Stačí se vrátit do UniCMT manažeru a „spustit“ dříve uložený soubor klávesou <CR>. Manažer podle prvního bytu souboru (05) pozná, že je to BASIC a spustí tedy BASIC. Uložený soubor připraví do virtuálního kazeťáku k nahrávání. Jak mile se BASIC spustí, což trvá jen pár vteřin, protože se nahrává zrychleně, stačí zadat LOAD a dříve uložený soubor máte za chvíli načtený.

Nebyl by to Bohouš, aby tohle celé ještě nevylepšil. BASIC uložený v UniCMT nahrává i ukládá asi 7,5× rychleji než původní a navíc automaticky po startu spustí RUN „CMT:“, takže se vám váš program nejen rychle nahraje, ale rovnou i spustí. Dělá to vlastně přesně to, co uživatel chce. V manažeru klepne na program, který chce spustit a on se spustí. Akorát když je to BASIC, tak se ještě mezi tím natáhne ten BASIC. Jednodušeji už to asi nejde.

No a aby BASIC nebyl ve velké flash paměti STM32 sám, Bohouš přidal ještě textový editor FET. Když klepnete na soubor s prvním bytem FE, spustí se FET. Tam už musíte sami zadat ESC G pro načtení z kazeťáku, ale i tak je to příjemné.

Ale co když budete chtít takto otevírat data z více a jiných programů než jen typu 05 a FE. I na to má Bohouš v novém firmwaru řešení. Stačí do složky /unicmt uložit soubor run.cfg s konfigurací, kde můžete jednoduše nadefinovat, který typ souboru načítat kterým programem a jakou rychlostí. Soubor uvnitř může vypadat třeba nějak takto:

; JAPAN MZ-700 Hu-BASIC programs
[02]
RUN=/unicmt/Hu-BASIC v2.0a.mzt
LH=470
LL=120
SH=240
SL=278

; English MZ-800 BASIC programs (fast load/save)
[05]
RUN=/unicmt/1z-016a_run_max_speed.mzf 
LH=85
LL=25
SH=18
SL=65

; Czech MZ-800 FET editor text files
[FE]
RUN=/unicmt/Fet-3-2.mzf
LH=470
LL=120
SH=240
SL=278

Konstanty jsou v mikrosekundách a odpovídají náčrtku z technical reference manuálu.

Mírného vylepšení se dočkalo i používání SRAM disku a RAM disku. Pomocí klávesy F2 uložíte manažer do SRAM disku. Další start manažeru je tak po resetu okamžitý. Práce s RAM diskem je od SRAM disku zcela oddělená, takže pomocí F8 (SHIFT+F3) můžete zinicializovat poslední stránku RAM disku, na ni pak pomocí F5 nakopírovat data (obvykle BASIC programy) a následně s nimi v BASICu pohodlně pracovat. Poslední stránka je navolena i při spouštění programu. To zajistí, že u zálohovaného RAM disku z české výroby, který emuluje v jedné paměti oboje (a emuluje ho třeba i Unikarta) se vám nenaboří nultá stránka s manažerem. Vše funguje hladce například i s novým RAM diskem MZ-1ARM18.

U Unikarty je drobný zádrhel při spouštění, kdy se Unikarta snaží dělat všechno pro to, aby se spustil její manažer za všech okolností (a dalo to dost práce). Podvrhuje tak SHARPu virtuální SRAM disk, který není obsahem emulovaného RAM disku, takže UniCMT manažer se musí spouštět pomocí stisknutí klávesy C, jejím podržením a současný zmáčknutím tlačítka reset. Tím systém donutíte nabootovat z kazeťáku i při aktivní Unikartě a můžete oba používat společně.

Asi už jste si ze screenshotů všimli, že úpravy resp. pročištění se dočkaly popisky funkčních kláves a texty jsou lépe vypovídající. Trochu to prořídlo, ale aspoň je vidět, že prostoru na nové funkce je ještě dost. V souladu s tím se změnila i nápověda.

Větší důležitost má teď program unicmt-date-time.mzf, který slouží pro nastavení interních hodin UniCMT. Ty se používají při ukládání souborů pro nastavení času uložení. Pokud tuto funkci nevyužijete, není potřeba osazovat ani baterii CR1220, aspoň vám nevyteče, když náhodou odložíte SHARPa na pár let do skříně 😉

Skvělou funkcí je i rychlé třídění, které už je v UniCMT nějakou dobu, ale pokud si někdo nezobrazí nápovědu, tak si možná funkce klávesy BLANK ani nevšimne. A už vůbec není každému patrné, že po souborech se nemusí běhat jen kurzorovými klávesami, ale dá se stisknout písmeno a kurzor skáče mezi soubory začínajícími tímto písmenem. Tohle bude muset „někdo“ zapracovat i do Unicard manažera, je to super a silně návykové.

Aby byly všechny informace pohromadě, sepsal jsem návod na hardware i software UniCMT, který si můžete stáhnout jako PDF soubor:

UniCMT_quick_guide_rev1_CZ.pdf

Mírně detailněji jsem vše rozepsal i online na sharpwiki.cz, kde se dá nejnovější firmware 0.5 také stáhnout. Najdete tam i vzorové obsahy USB flash disku pro jednotlivé počítače SHARP MZ-700 JP i EU, MZ-800 a MZ-1500 s ukázkovými programy a přizpůsobeným konfiguračním souborem run.cfg. Ke stažení jsou i modely krabiček pro tisk na 3D tiskárně. Elektroniky UniCMT mám, takže pokud někdo z CZ nebo SK máte zájem, ozvěte se mi. Pro zbytek světa brzy naskladním co zbude na eshop retrocomp.cz.

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

29 komentářů: Nový firmware pro emulátor kazeťáku UniCMT v0.5

  1. Bohuš N. napsal:

    Ahoj,
    výborný nápad i jeho realizace. Mám zájem o UniCMT k MZ-800, pokud možno i s krabičkou. Poslal jsem mail.
    Zdravím, Bohuš N.

  2. Milsa napsal:

    UniCMT sa dostáva na vysokú úroveň, ten firmvér ho oživil perfektne.

    Mám jednu špeciálnu prosbu, teda dve:
    1. Možnosť nahrať program s adresárom alebo súborom nie podľa typu, ale podľa prvých písmen mena. Príklad: Mesto robotu vytvorí 7 súborov typu 01h a teda nie je možné to asociovať.
    2. Keby to na základe nastavenia rovno nahrávalo MZT:

    ; Mesto robotu – nazov suboru zacina na MR00
    [MR00*]
    RUN=/unicmt/mestorobotu.mzf
    FILE=MZT
    LH=470
    LL=120
    SH=240
    SL=278

    • Martin napsal:

      Moc nechápu rozdíl mezi body 1 a 2, oboje je spouštění na základě jména souboru, ne? Potencionálně je to možné.

      Je to trochu krkolomné dělat to vždycky, ale můžeš si udělat MZT soubor, kde na začátku bude Město robotů program a pak ty data pro ně.

      • Milsa napsal:

        Áno, keď to čítam po sebe tak to mýli, vlastne rozdiel je len ten, že bod 2 hovorí o MZT a bod 1 je vlastne tá asociáca na meno súboru. Ten konfigurák vlastne spojil body dohromady.

        Dobre, zatiaľ to viem teda riešiť aspoň tak ako píšeš.

        Ak by sa v budúcnosti urobila táto úprava, tak by to vlastne uložilo MZT a pri novom štarte hry cez ten MZT súbor by som ho mal pripravený a nemusel by som v počítači vyrábať MZT. Asociácia by len zariadila, aby sa spustila hra. Ja viem MR je špecifický, ale vlastne by to umožnilo pri iných programoch mať priamo pripravený adresár pre program aj pre tie programy, čo nerozlišujú tie typy v hlavičke.

        • Martin napsal:

          Abych se přiznal, tak teď jsem to nepochopil už vůbec. MZT UniCMT neuloží namá žádné info, jak dát víc souborů k sobě. Leda to dělat nějak tlačítky. Nebo jsem to fakt nepochopil.

  3. Leonard napsal:

    UniCMT je skvelá náhrada magnetofónu, je to detail, ale predsa sa mi nepodarilo s ním nahrať do Sharpa Interkarate+, súbory som pospájal ale loader v hre nedokáže načítať zvyšné súbory inter2-screen a inter3-samotné interkarate, bez problémov to dokáže emulátor na PC MZ-800 s pomocou virtuálneho magnetofónu, ináč zatiaľ som na žiadne ďalšie problémy nenarazil, takže ak niekto vie ako na to nech dá vedieť.

  4. Leonard napsal:

    Ďakujem Interkarate už mi ide aj na UniCMT.

  5. Dominik napsal:

    Ahoj, skvělá práce!
    Je ten projekt i opensource? Chtěl bych si to zkusit postavit.

  6. Pingback: SHARP setkání Vrbice – jaro 2025 | Martinův 8-bitový blog

  7. Kypo napsal:

    Pěkně prosím podporu pro Pezík nezálohovaný RamDisk

    • dex napsal:

      V čem by ta podpora měla spočívat?
      Třeba mně to vůbec není jasné.

      • Kypo napsal:

        Má prosba patřila Martinovi ten jistě ví co myslím tou „podporou“ a doufal jsem, že se někdo připojí aby se mu s tím chtělo zabývat
        ale vidím, že je to asi marné a jsem jen sám ten zoufalec

        • Mikeš napsal:

          Já asi také vím, co je tím myšleno, ale moc mi to nedává smysl. A autorem není jen Martin, lví podíl na tom má nobomi.
          K té podpoře, šlo by upravit sw tak, aby spolupracoval s ramdiskem Pežík, ale:
          – nahrát UC manažer na ramdisk by šlo, ale nespustil by se, protože ROM po RESETu s ním nespolupracuje
          – nahrát soubory na ramdisk by šlo taky, ale BASIC by s nimi neuměl spolupracovat
          – nefungovaly by příkazy z ROM, napříklas EB (a další), pak to postrádá smysl
          Tak o jakou podporu pro ramdisk Pežík ti tedy jde? Tak nevím, k čemu bych se mohl případně připojit. Ale možná mi to taky jen není jasné.
          Ramdisk Pežík mám taky, ale mám ho uložený v krabici/vitríně a na nějaké využití jsem za těch >30 let nepřišel.

          • Martin napsal:

            Já to chápu jako nostalgii. Kypo nenapsal, že má historicky PEZIK a má pro něj upravený BASIC. Takže by se mu hodilo kopírovat soubory mezi UniCMT a BASICem. Ono to teda stejně jde zatím jen na RD a ne zpět. Já mu psal, že by byl asi jediný na světě a ta změna není na jednom místě, navíc pak udržovat zdrojáky pro více verzí a v manažeru už není ani dost místa, pokud ho chceme držet pod dolní ROM. Zkrátka by to bylo dost práce a pro nikoho jiného by to nemělo moc smysl. Zvlášť když většina lidí má Unikartu a dá se dnes snadno postavit MZ-1R18 nebo koupit MZ-1ARM18.

  8. Kypo napsal:

    Dík za odpovědi , tak mi zůstanou jen oči pro pláč ale svět se mi nezboří.

    • Martin napsal:

      Unikarta? Postavit MZ-1R18 nebo koupit MZ-1ARM18? Ještě si můžeš upravit v tom BASICu rutiny pro čtení a ukládání a rychleji načítat a ukládat z/na UniCMT.

      • Kypo napsal:

        Unikarta je sice super ale to jsou další nemalé náklady manželka by mě zabila, težko strávila UniCMT.
        Ta změna rutiny pro rychlejší save/load by mě potešila.

  9. Žebrák Milan napsal:

    Po cca 35 letech jsem opět zapnul MZ-800 a jede, pouze já jsem toho již mnoho za ta léta zapoměl. Nicméně dosluhující původní CMT jsem nahradil UniCMT a jsem nadmíru spokojen. Nyní mé staré výplody v [01] pracně nahrávám z kazet do Sharpu a pak je zpět ukládám na PC přes zvukovku a AudaCity. Následná konverze pomocí PCM2MZF je bez problému. Abych mohl nahrávat do PC, přidal jsem do konektoru u původního CMT do prázdného pinu 9 vodič ze starého JST kablíku a zapojil na interní write na desce CMT. Tím po zasunutí konektoru dojde k propojení na extwrite a záznam jde přes externí konektor na zvukovku. Potud vše super a ok. Mám ale zásadní problém: jak nahrát z UniCMT binárni soubor [01] třeba do Demona nebo jiného editoru. Přes run.cfg mi to nefunguje, binárni soubor se vždy načte a rovnou spustí. Jako by run.cfg ignoroval návěští [01].
    Poradí mi někdo?
    Díky Milan

    • Martin napsal:

      [01] asi takhle spouštět nepůjde, protože se to bere jako spustitelný program. Udělal bych si dvousouborové MZT, první soubor v MZT ten ten editor a druhý soubor ty [01] „data“. MZT je prosté spojení dvou MZF za sebe, jde to přes příkazovou řádku nebo to třeba umí QDTool https://github.com/mlukasek/QDTool.

      • Žebrák Milan napsal:

        Díky moc za radu, každopádně to zkusím. Ale napadá mě, zda by nešlo udělat, že pokud bude binární typ [01] uveden v run.cfg, tak zpracování podle run.cfg bude mít přednost před automatickým spuštěním. Natahování takových souborů do editoru je podle mne celkem běžné v případě programování.
        V souvislosti s tímto problémem mě napadá, jak tedy používat například Turbo Copy.mzf, protože ten tedy také žádné soubory z UniCMT nenačte. Nicméně tento typ programů již asi ve spolupráci s UniCMT ztrácí smysl. Vzpoměl jsem si na něj, protože je v tom vzorovém obsahu pro usb.
        Moc díky, Milan

        • Martin napsal:

          To by se pak nespouštělo nic, všechno by šlo do „editoru“. To MZT je na to IMHO lepší. Pro Turbo Copy to stejné, navíc se do MZT dají dát hlavičky na zrychelní přenosu před další soubory.

          • Milan napsal:

            Tak to je fakt, to by se nespustil ani ten editor. Takže skutečně pomocí MZT a pokud by bylo nutno neustále ukládat a natahovat soubory okamžitě v průběhu editace, tak se vždy může použít PC nebo NB jako externí kazeťák.

          • Martin napsal:

            No, nedal by se spustit samostně. Pro opakované ukládání a načítání souboru plánujeme použít tlačítka, aby se dalo dát do kazeťáku naposledy uložený soubor, ale zatím nejsou lidi 😉

  10. Milan napsal:

    Dobrý den, prosím ještě o jedno info k UniCMT. Jaký adresní prostor zaujímá vlastní UniCMT Manager? Abych se vyhnul případným konfliktům v adresním prostoru.
    Pokoušel jsem se to dohledat na webu, ale neúspěšně.
    Díky Milan

    • Martin napsal:

      Žádný 😉 Manažer loaduje malá rutinka, která je součástí CMT hlavičky. Zavaděč tělo ani žádné nemá 😉 Hlavička se nahrává od 10F0 a přímo její součástí je krátká rutina, která vlastní manažer nahraje od 0000 pod dolní ROM. Takže klasicky od 1200 můžete mít vlastní program a manažer by vám ho neměl rozbít. Pokud tedy mezi tím nespustíte jiný program, co se tam nahraje.

Napsat komentář: Milan Zrušit odpověď na komentář

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