Jak MXTracker ukládá hudbu
25. 8. 2026

Plugin pro podporu ZIP souborů jsem začal psát prakticky ve chvíli, kdy jsem do Calm Commanderu zavedl systém pluginů. A popravdě – nebyla to zrovna ta část vývoje, u které bych si každých pět minut říkal, jaká je to nádhera. Několikrát jsem měl chuť celý ZIP plugin zahodit a věnovat se něčemu zábavnějšímu (což jsem ve výsledku několikrát udělal). Nakonec jsem to ale nevzdal, k pluginu se několikrát vrátil a podařilo se ho dotáhnout do stavu, kdy umí archivy nejen prohlížet, ale také přímo na ZX Spetru Next rozbalovat.

Calm Commander / verze 1.6

Calm Commander 1.6 – archivy SCL a soubory ZIP

Plugin pro podporu ZIP souborů jsem začal psát prakticky ve chvíli, kdy jsem do Calm Commanderu zavedl systém pluginů. A popravdě – nebyla to zrovna ta část vývoje, u které bych si každých pět minut říkal, jaká je to nádhera. Několikrát jsem měl chuť celý ZIP plugin zahodit a věnovat se něčemu zábavnějšímu (což jsem ve výsledku několikrát udělal). Nakonec jsem to ale nevzdal, k pluginu se několikrát vrátil a podařilo se ho dotáhnout do stavu, kdy umí archivy nejen prohlížet, ale také přímo na ZX Spetru Next rozbalovat.

Podpora SCL naopak vychází z už existujícího pluginu pro diskové obrazy TRD. Oba formáty mají dost společného, takže dávalo smysl rozšířit stávající prohlížeč místo psaní dalšího téměř stejného nástroje od začátku.

Archivy SCL

Soubory SCL nyní otevírá stejný plugin, který se stará o diskové obrazy TR-DOSu, takže všechno, co znáte z prohlížeče TRD, funguje i tady. SCL je ve své podstatě jednodušší archiv souborů z TR-DOS disku, proto šlo velkou část existujícího kódu použít i pro něj.

  • Ve výpisu je u každého souboru jméno, typ a délka spolu s počtem sektorů, které zabírá. SCL neobsahuje jmenovku disku, geometrii ani volné místo, takže tyto údaje ve výpisu nejsou.
  • Rozbalení je stejné jako u TRD: e zapíše položku pod kurzorem, Caps+e všechny a d zapíná a vypíná +3DOS hlavičku.
  • Položky s nulovou délkou se rozbalí podle počtu sektorů, takže výsledný soubor vyjde celý.

Soubory ZIP

Soubory s příponou .zip otevírá nový prohlížeč, který vypíše obsah archivu a umí ho rozbalit na SD kartu. Není k tomu potřeba žádný externí nástroj ani počítač.

  • U každé položky je původní velikost, velikost po kompresi a písmeno určující způsob uložení: S nekomprimovaně, D deflate, X zašifrovaná, / složka a ? nepodporovaná kompresní metoda.
  • Panel vpravo ukazuje jméno, které soubor dostane, jeho délku a typ, takže je předem jasné, co na kartě vznikne.
  • e rozbalí položku pod kurzorem, Caps+e celý archiv.
  • Zašifrované položky a neznámé kompresní metody se vypíšou, ale nerozbalují se. ZIP64 plugin odmítne se srozumitelnou hláškou.

Jak to funguje

ZIP má svůj rejstřík až na úplném konci souboru, což je na počítači, který si do paměti načte vždy jen malou část souboru, nepříjemné. Plugin proto rejstřík čte přímo z karty na pozici, kde skutečně leží, a stejně postupuje i u každého souboru, který pak rozbaluje.

Komprimované položky rozbaluje přímo Spectrum plnohodnotným dekodérem deflate. Výstup vzniká v 32K okně v přídavné paměti, které zároveň slouží jako okno, do kterého se deflate odkazuje zpět, a po osmikilových blocích se předává na kartu.

Díky tomu není potřeba držet celý rozbalovaný soubor v paměti najednou. Velké soubory tedy nejsou omezené běžnou RAM programu – například 640K obraz disku lze rozbalovat stejně jako malý soubor.

Každý rozbalený soubor se kontroluje proti CRC32 uloženému v archivu, takže poškozená data se ohlásí místo toho, aby po sobě plugin tiše nechal vadný soubor. U větších souborů se průběžně zobrazuje počet zapsaných bajtů i množství komprimovaných dat, která ještě zbývá přečíst. Klávesou BREAK lze rozbalování kdykoliv zastavit.

Složky uvnitř archivů

Jedno omezení je dobré znát dopředu, protože jde o vědomé rozhodnutí, ne o opomenutí: adresářová struktura archivu se zatím nevytváří.

  • Každý rozbalený soubor vznikne přímo v adresáři zobrazeném v aktivním panelu. Cesta uvnitř archivu se zahodí a použije se jen samotné jméno souboru zkrácené do tvaru 8.3. Položka demos/1997/screen.scr tedy přistane jako SCREEN.SCR.
  • Položky složek jsou ve výpisu vidět, označené /, ale při rozbalování se přeskakují a žádné adresáře se nevytvářejí.
  • Dva soubory se stejným jménem v různých složkách se při Caps+e navzájem přepíšou. V takovém případě je lepší rozbalit je jednotlivě klávesou e do zvolených adresářů.

Obnovování stromu adresářů bych rád doplnil někdy později. Zatím rozbalení do aktuálního adresáře pokrývá to, k čemu se archivy na Spectru obvykle používají – pár dem, obrazovek nebo obrazů disků, které chcete dostat na kartu. Úkoly do budoucna jsou jasné - rozšířit podporu adresářů a LFN názvů do ZIP pluginu. Ale zítra, odjíždíme s rodinou na 4 dny pryč mimo civilizaci (tzn. neberu si sebou žádné ZX Spectrum :) ), takže se bude jen relaxovat.

Calm Commander 1.6

Stahovat můžete jako vždy zde: https://shrek128.itch.io/calmcommander

Snímek obrazovky 2026-08-25 141053

Napsat komentář

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