Softwarová archeologie – moje kompresní programy pro ZX Spectrum

Před dávnými časy v jedné vzdálené galaxii vyšel disketový magazín.

Mám na mysli český disketový magazín pro Sinclair ZX Spectrum a kompatibilní pojmenovaný Restore.

Abych vás nalákal nahrát ho na disketu, vložit do mechaniky a na svém ZX Spectru přečíst, přináším vám z něj malou ochutnávku, jak jinak než mého článku.

Určitě si ale Restore #1 z letošního 23. dubna, kdy bylo 39. výročí zahájení prodeje ZX Spectra, přečtěte celé, najdete v něm toho víc.

A najdete i věci, které si přečíst nemůžete, jako třeba AY hudbu.

Ne že bych nechtěl Restore dělat reklamu, ale chci.

Softwarová archeologie – moje kompresní programy pro ZX Spectrum

Kompresních programů pro ZX Spectrum existuje celá řada, ale tehdy kolem roku 1994 toho k dispozici moc nebylo.

Programy z Ruska se k nám teprve měly začít dostávat (slavná výprava skupiny K3L na Enlight v Sankt Petěrburgu se konala až roku 1997), jejich použití bylo limitované výhradní orientací na Betadisk.

Jen pomalu se rozšiřoval Turbo Imploder z roku 1992, který od roku 1993 inzerovala firma Perpetum, a jen někteří tušili, že existuje Tompacker, Char press, PKLite (dodnes je nenajdete na WOSu ani na Spectrum Computing).

Od roku 1993 nabízela i Proxima svůj komplet User 2, jehož součástí byl program Mr. Pack II, poslední vývojový stupeň programů All packer, Pack maker, Mr. Pack a Mr. Pack I od Mixoftu, jehož základním znakem byl poměrně efektní, ale ve výsledku poměrně zdržující pomalý depak se sršením v borderu obrazovky.

Dalším velkým počinem Proximy byla textovka Heroes 92, při jejíž tvorbě použil George K. vlastní program pro pakování textů s názvem Tolkien (ZX Magazín 1993/1 strana 8, 1993/4 strana 9), ale ten nebyl běžně dostupný a Proxima jej neprodávala.

Bez návodu si s ním ovšem nikdo nevěděl rady, viz zmínka v ZX Magazínu 1999/3-4, strana 13.

Jen ke mně se Tolkien dostal až kolem roku 1996 a používat jsem se ho naučil až v dubnu 1998 – viz návod v ZX Magazínu 2000/1-2, strana 22.

Ovšem stejně, jako se podařilo navrátit na světlo světa můj X-System-Pro pro tvorbu textovek, vrátily se z temné minulosti i oba kompresní programy, které jsem tehdy vytvořil.

A to jsem je ani nemusel dolovat z disket, na kterých se mi dochovaly, protože jsem je našel na internetu i s návody!

Dnes už, kromě digitální archeologie, k ničemu užitečnému nejsou, ale aspoň se můžeme prsit, jak jsme tehdy před lety byli dobří koumáci (a teď už nejsme, bejvávalo)!

První kompresní program byl z roku 1995.

Jmenoval se Horatius, ovládal se v jakémsi grafickém rozhraní šipkou řízenou klávesnicí, joystickem nebo A-myší.

Založen byl na RLE rutině od Busysoftu, která byla publikovaná v časopise Bit v seriálu někde mezi číslem 1994/6 a 1994/11.

Rutinu mi přinesl Matsoft na listu oxeroxovaném z časopisu a já kolem toho postavil už jen to prostředí, což bylo zmíněno i v ZX Magazínu 1999/2, strana 7.

Zabalení není nejrychlejší, protože program zkouší všech 256 možností značkového bajtu (zmínka v ZX Magazínu 1999/2, strana 8).

Balí jen soubory do délky 16384 bajtů (uchovává v paměti rozbalenou předlohu i zabalený blok), takže se hodí na balení kratších kódů, jako jsou obrázky nebo stránky ZX Spectra 128.

V ZX Magazínu se sice píše, že vzniklý blok nebyl relokovatelný, ale v návodu se zas píše, že byl relokovatelný.

Rozbalení je rychlé, a protože jsme v té době to pršení v borderu u programu Mr. Pack II obdivovali a chtěli napodobit, srší v borderu i Horatius, jak je možné se přesvědčit při nahrávání mých her, jmenovitě u hry Fervor a původního vydání Mezi věžemi.

Program pracoval s kazetou nebo s D40.

Pro diskové operace jsem tehdy použil legálně koupený D40 BIOS od Miroslava Beníčka, který jsem asi neuměl dobře použít, protože při pokusu o vypsání obsahu diskety se některé soubory zobrazovaly dvakrát, a tato negativní zkušenost byla jedním ze tří faktorů, proč jsem si nekoupil i ochraný systém Leopold (druhé dvě byly pořizovací cena 15 000 korun a fakt, že Tritolsoft už tehdy Leopolda po třech dnech a nocích beze spánku cracknul).

S MB-02+ Horatius nepracoval, a to ani s emulací magnetofonu – volal nahrávací rutinu s pevně nastavenou délkou 16384 jako maximální možnou, což na magnetofonu kratším souborům nevadí, delší utnou nahrávání po načtení uvedené délky, ale MB-02+ soubor načte jen když je jeho délka přesně 16384 bajtů.

Ke stažení je Horatius na https://cs.speccy.cz/?scn=3.

Druhý program se jmenuje Caesar a je datován rokem 1996.

Trochu mne jeho nález překvapil, žil jsem v domnění, že jsem ho nejspíš nedokončil.

Protože se mi někdy tou dobou dostal do ruky i Tolkien od George K., který bez návodu neuměl nikdo použít, rozhodl jsem se vytvořit vlastní podobný packer, který by umožnil čtení zabalených textů bez nutnosti je rozbalovat do paměti.

Vyšel jsem z rutiny pro výpis komprimovaných textů v prvním díle knihy Assembler a ZX Spectrum a v podstatě jsem se snažil vytvořit protipól – komprimační rutinu, která text zabalí tak, aby jej rutina z knihy mohla přečíst a vypsat.

Popis, jak jsem postupoval, je popsán v ZX Magazínu 1999/2, strana 9 a 10 – abych uvolnil kódy 128-255 pro odkaz na pořadí vloženého slova ve slovníku, přenesl jsem znaky desktopáckého kódování češtiny do kódů 1-16, ENTER jsme musel přesunout na hodnotu 31, nula byla použita jako oddělovač slov.

Nevýhodou je, že Caesar neučiní zabalený text zcela nečitelným oku pirátovu tak, jak to dělá Tolkien.

Caesar je uložen v obrazovce, takže má k dispozici většinu paměti, text balí tam, kde je, takže by se vešly i velmi dlouhé texty.

Tím, že se celý vejde do obrazovky (a dokonce ještě místo zbude), odpadá ovládání pomocí nějakých myší a podobně.

Program pracuje jen s D40/80 – po spuštění totiž aktivuje stránkování ROM D40 pomocí USR 0, což na počítačích bez příslušného řadiče způsobí reset.

U souboru je uložen i zdrojový text rozbalovací rutiny pro assembler Prometheus, kterou si měl uživatel vložit do svého programu, třeba textové hry.

Dokonce se dochoval i zdroják k samotnému Caesarovi (ve formátu assembleru Prometheus pro D80).

I Caesar je ke stažení na https://cs.speccy.cz/?scn=3.