27. decembra 2008

QUIDO v1.2

Quido je pakovač, ktorý pri pakovaní kombinuje Shrinking s Implodingom a vyberie tú alternatívu, ktorá výjde lepšie. Jeho výsledky sú väčšinou lepšie ako pri pakovaní TurboImploderom (i keď niekedy s malým obmedzením).

Quido vznikol len preto, že pri prerábaní ruskej hry DIZZY-A z Betadisku na D40/D80 nebolo možné blok hry spakovať TurboImploderom (hlásil Pack Error) a Mr.Pack II dával veľmi slabý výsledok.

Quido vie pakovať v štyroch módoch a to čo bolo spakované ním, vie rozpakovať a podľa toho nastaviť pôvodné parametre. Bloky dát dokáže nahrávať z kazety (aj bezhlavičkové) a z D40/D80. Maximálna dĺžka bloku je 42240 Bytov, minimálna 168 Bytov. Umožňuje nastaviť adresu, kde bude rozpakovaný blok ležať a tiež adresu, kde bude ležať rozpakovacia rutina. Samozrejme, je možné nastaviť adresu, na ktorú sa skočí po rozpakovaní.

Klamal by som, keby som tvrdil, že som to celé vymyslel sám. Rozpakovaciu rutinu som okukal z ruských hier, skrátil a upravil pre svoju potrebu. Algoritmus Implodingu som si "prepožičal" z TurboImploderu a User Interface je od Georgea K. z jeho Tolkiena. Shrinking a všetko ostatné som s výdatnou pomocou rôznej literatúry spatlal sám.

Download:

rmteam_quido_v1.2.zip (6.2 kB)

Ovládanie:

  • Range - nastavenie parametrov pakovania
    • Begin - adresa začiatku bloku v pamäti. Na túto adresu sa nahraje pakovaný blok. Môže byť v intervale od 23296 do 65368. Zadanie 0 alebo odoslanie prázdneho riadku nastaví RAMTOP+1. Po spustení je nastavená na RAMTOP+1.
    • Length - dĺžka bloku pred alebo po spakovaní. Môže byť v intervale od 168 do 42240. Za normálnych okolností ju netreba zadávať, pretože je automaticky nastavená podľa dĺžky nahraného bloku. Po spustení je nastavená na 65536-Begin.
    • Running - adresa umiestnenia bloku pri rozpakovávaní. Blok sa teda bude pakovať na inom mieste v pamäti (Begin), ako sa v konečnom dôsledku bude ropakovávať (Running). Adresa môže byť maximálne taká, aby sa blok po rozpakovaní ešte vošiel do pamäti. Po spustení má hodnotu rovnakú ako Begin.
    • Routine - adresa, kde sa prenesie rozpakovacia rutina o dĺžke 80 bytov v módoch 1 a 3 a 82 Bytov v módoch 2 a 4. Táto adresa sa nekontroluje, to znamená, že si užívateľ musí skontrolovať sám, či rutina nebude ležať v mieste, kde sa blok bude rozpakovávať. Pri spustení má hodnotu 23456 (koniec Print Buffru).
    • Call - adresa, na ktorú sa skočí po rozpakovaní. Zadanie 0 znamená návrat (inštrukcia ret #C9). Po spustení je nastavená na 0.
  • Pack - pakovanie, rozpakovanie...
    • Mode - nastavenie módu pakovania 1, 2, 3 alebo 4.
    • Pack - spakuje blok na adrese Begin o dĺžke Length módom Mode. Počas pakovania je zobrazené koľko percent z dĺžky bloku je už spakovaných. Ak Quido blok nevie spakovať, vypíše obligátnu správu "Pack error. Data Lost".
    • Unpack - ak na adrese Begin je blok od dĺžke Length, ktorý spakoval Quido, rozpakuje ho a nastaví všetky parametre v menu Range a tiež mód, v ktorom bol blok spakovaný.
  • File - loadovanie, saveovanie...
    • Load
      • Tape: nahraje od adresy Begin hlavičkový blok typu Bytes a podľa jeho dĺžky nastaví Length. Pri chybe vypíše hlášku "Tape Error".
      • Disk: nahraje od adresy Begin blok typu .B a podľa jeho dĺžky nastaví Length. Pri chybe vypíše hlášku "Disk error".
      Ak má blok väčšiu dĺžku ako 65536-Begin, vypíše chybovú hlášku "Long error (xxxxx)", kde xxxxx je dĺžka nahrávaného bloku. Ak je blok kratší ako 168 Bytov, platí to isté.
    • Save - nahraje na kazetu, či disk, blok z pamäte na adrese Begin o dĺžke Length so zadaným menom. V hlavičke súboru je parameter začiatočná adresa z Running a tretí parameter má hodnotu 0, ak bol nahraný hlavičkový blok, alebo Leader z bezhlavičkového bloku. Ak na disku súbor z rovnakým menom už existuje, je vypísaná hláška "Overwrite?", na ktorú môžte kladne odpovedať stlačením "y". Ak je disk chránený proti zápisu, vypíše sa hláška "Disk error".
    • Load Hless - od adresy Begin nahraje bezhlavičkový blok o maximálnej dĺžke 65536-Begin a podľa jeho dĺžky nastaví Length. O dĺžke platí to isté ako pri Load, len ak sa blok nevôjde do pamäte, xxxxx je nahradené 00000, keďže skutočná dĺžka je neznáma.
    • Append - umožňuje pridať na koniec nahraného bloku blok vyplnený nulami a tým dosiahnuť spakovanie bloku, ktorý sa nedal spakovať v žiadnom móde. Dĺžka bloku Length sa zväčší o zadanú hodnotu a blok sa môže skúsiť spakovať v módoch 1 alebo 2. Ak sa za koniec bloku už požadovaný počet núl nevôjde, nič sa nestane.
    • Device - zadanie typu zariadenia pre Load a Save - TAP alebo D40. Diskové operácie nevyžadujú prítomnosť systémových premenných, ale nesmie dôjsť k "Retry" alebo "Proceed" chybám. Chyby "Drive is not ready" a "Disk is write protected" sú ošetrené. Ostatné môžu pri poškodených systémových premenných spôsobiť zrútenie systému.
  • Quit - ukončenie programu...
    • Basic - ak neboli poškodené systémové premenné, vráti sa do Basicu
    • Return - vráti sa do programu, z ktorého bol spustený
    • Reset

Žiadne komentáre:

Zverejnenie komentára