XPK inaczej

W wielu pismach komputerowych i magazynach ukazywaîy sië juû publikacje dotyczâce wykorzystania popularnych bibliotek XPK. Oczywiôcie, sam temat jest wdziëczny, moûna go wiëc przedstawiaê i rozwijaê w nieskoïczonoôê. Wielu z 'wtajemniczonych' wykorzystuje wiedzë i XPK podczas pracy codziennej, zaprzegajâc je do pracy w systemie Amigi. Sâ jednak osoby, dla których wykorzystanie XPK jest jeszcze zbyt wysokâ 'szkoîâ jazdy'.

Wbrew powszechnie gîoszonym opiniom, nie jest to skomplikowana sprawa, zrozumiaîa po przekopaniu sië przez dziesiâtki tomów z dokumentacjâ. Warto jednak pokazaê,iû z pozoru zawiîe opisy i dziesiâtki wskaúników efektywnoôci przedstawiane w najróûniejszych formach graficznych przez 'statystykomanów' moûna ograniczyê do jednego, krótkiego i îatwego testu wywoîywanego klikniëciem myszki w wskazanâ opcjë.

Co wiëcej - moûna zaprzâc do pracy biblioteki XPK prawie bez naszego udziaîu. Na system zrzucimy caîâ odpowiedzialnoôê zwiâzanâ z ich obsîugâ.

Uprzedzam, iû ze wzglëdu na obszernoôê tematu nie bëdë wyjaôniaî co to jest XPK, jak dziaîa i dlaczego tak îatwo itp, itp. Aby jednak uîatwiê sprawë ewentualnych porównaï i analogii przedstawië swój sprzët, oraz posiadany software. Otóû wszelakie testy wykonywane byîy na CD-32 + SX-1, 8 MB Fast 40 ns, oraz dysku twardym Conner 540 MB. Partycje testowe wykorzystywaîy system FFS International. Aby nie wprowadzaê przekîamaï, programy pakujâce byîy jedynymi dziaîajâcymi taskami (oczywiôcie oprócz systemu), oraz nie byîy wykorzystywane partycje sformatowane w systemie AFS.

Posiadane biblioteki:

xpkmaster.library - v2.4
oraz podbiblioteki:

  xpkBLZW.library   Bryan's Turbo Charged LZW ver.2.0              
  xpkCBR0.library   CMP Byte Run 0 Packer     ver.1.0
  xpkCRM2.library   CRM.Library               ver.1.1
  xpkCRMS.library   SubLib CrM Sample-Mode    ver.1.1
  xpkDLTA.library   Delta Encryption          ver.0.1                
  xpkFAST.library   Fast                      ver.1.6
  xpkFEAL.library   Fast Encryption Algorithm ver.1.3               
  xpkGZIP.library   Gzip 68020+               ver.1.0
  xpkHFMN.library   Huffman Encoding 68020+   ver.1.36               
  xpkHUFF.library   Huffman                   ver.0.6
  xpkIDEA.library   IDEA encoding             ver.1.0         
  xpkILZR.library   Lempel Ziv Renau          ver.1.2
  xpkIMPL.library   Turbo Imploding           ver.0.15               
  xpkMASH.library   Mash 68020+               ver.1.98
  xpkNONE.library   No Packer                 ver.1.0               
  xpkNUKE.library   Nuke                      ver.1.0
  xpkPWPK.library   PowerPacker               ver.0.93               
  xpkRAKE.library   Rake 68020+               ver.1.7
  xpkRDCN.library   Ross Data Compression     ver.1.2               
  xpkRLEN.library   Run Length                ver.1.2
  xpkSHRI.library   Shrink                    ver.2.2                
  xpkSMPL.library   Sample Packer             ver.1.0
  xpkSQSH.library   Squash                    ver.1.10               

Jak widzicie, oddzielnie zaznaczam wersje bibliotek przeznaczone dla procesorów 68020 i wyûszych. Niestety (dla posiadaczy innych procesorów), tylko takimi bibliotekami dysponuje, lecz ich róûnorakie wersje sâ dostëpne np. na Aminecie w katalogu 'util/pack'. Tam teû równieû pojawiajâ sië ich nowsze, lub przepisane w asemblerze (przyspieszenie!) wersje. Warto wiëc od czasu do czasu przejrzeê zawartoôê tego katalogu.

Jednakûe nie samymi bibliotekami czîowiek ûyje. Aby je rozsâdnie wykorzystaê potrzebne sâ jeszcze odpowiednie to tego celu programy. Podczas moich wëdrówek na Aminecie znalazîem ich kilka. Chciaîbym w tym artykule przedstawiê co najmniej 2 z nich, z których korzystam w pracy codziennej.

Pierwszy to XKPatana autorstwa Erica Sauvegeau dostëpny w wersji 1.1. Jakie moûliwoôci posiada ten program? Otóû stanowi on doskonaîâ alternatywë dla wszelakich nakîadek umoûliwiajâcych korzystanie z systemu XPK. Umoûliwia on pakowanie lub rozpakowanie dowolnego zbioru za pomocâ wybranej biblioteki, z peînym uwzglëdnieniem jej konfiguracji. Dowiemy sië zatem wszystkiego o danej bibliotece (czas pakowania, rozpakowywania, iloôê potrzebnej pamiëci), moûemy ustawiê skutecznoôê kompresji (oddzielnie dla kaûdej biblioteki), a takûe zaszyfrowywanie obrabianych danych wybranym przez nas hasîem.

W przypadku braku wolnej pamiëci program pozwala na obniûenie skutecznoôci kompresji (automatycznie lub z zapytaniem uûytkownika), tak aby maksymalnie wykorzystaê zasoby pamiëciowe systemu. Dla odwaûnych: program umoûliwia takûe korzystanie z podbibliotek pakujâcych z tzw. utratâ informacji (podobnie jak JPEG). Automatycznie zadba takûe o usuwanie lub dopisywanie przyrostka .xpk do obrabianego pliku. W przypadku kompresowania duûej liczby zbiorów pozwala na nadpisywanie ich na zbiorach ze starymi nazwami.

Dla ARexxo-maniaków program udostëpnia port ARexxa, a takûe dopuszcza wykonywanie skryptów, niezwykle pomocnych przy obróbce wiëkszej iloôci plików.

W najnowszej wersji (która dotarîa do mnie przed kilkoma dniami - tj. 1.1) doîâczono opcjë korzystania przy rozpakowywaniu z podbibliotek zawartych w systemie XFD (ale to juû temat na inny artykuî).

Program posiada bardzo îadne GUI, dopasowujâce sië do wymiarów wybranej rozdzielczoôci ekranu oraz uûywanych na nim czcionek domyôlnych. Co wiëcej, w doskonale skonfigurowanych, a co waûniejsze - logicznie uîoûonych oknach widniejâ wszystkie potrzebne szaremu uûytkownikowi informacje: tj. nazwy plików, wybrane biblioteki wraz z dodatkowym infem, dane dotyczâce dîugoôê pliku przed operacjë, po jej zakoïczeniu, ratio (w procentach), skutecznoôê (efficiency) operacji, szybkoôê pakowania i rozpakowywania podawana w KB/sek, oraz status wykonywanych operacji.

Do tego dane o przebiegu operacji podawane sâ w zarówno w formie graficznej (wskaúniki-gauge) jak i cyfrowej (liczby, procenty). Jeûeli chodzi o podobieïstwa, to program ten jest zbliûony wyglâdem do znanego wszystkim Diavolo Backupa 3.2 Pro.

Ale nie tylko pakowaniem i rozpakowywaniem czîowiek ûyje. Czasem chciaîby sië wiedzieê, jaki zastosowaê rodzaj kompresji do wybranego przez nas pliku (plików). Wiadomo, iû innym kompresorem warto przejechaê moduîy, innym teksty, a jeszcze innym pliki wykonywalne. Dotychczas naleûaîo taki plik przepakowywaê kilka lub kilkanaôcie razy, za kaûdym razem notujâc czas,i dîugoôci plików. Maîo komu sië to uômiechaîo.

Jednakûe XPKatana posiada uûytecznâ opcjë TEST, dziëki której moûemy sië szybko przekonaê który z wybranych packerów jest najodpowiedniejszy. Po prostu wybieramy plik, nastëpnie wybieramy packery, które chcemy przetestowaê (dowolnâ iloôê z dostëpnych) i wybieramy 'TEST'. Po zakoïczeniu testu program wygeneruje nam raport w postaci pliku tekstowego, w którym przedstawi nam najistotniejsze dla nas dane, to jest: dîugoôê pliku po kompresji oraz jej czas. Wskaûe nam takûe najszybszy oraz najefektywniejszy packer, automatycznie przeîâczajâc go w opcjach pakowania, tak aby po przejrzeniu wyników nie trzeba byîo ponownie grzebaê w preferencjach.

Nie muszë wam wyjaôniaê jak bardzo sië przydajâ takie 'namacalne' wyniki - ot choêby do sprawdzenia czym spakowaê swoje moduîy czy teksty. A wiedza o wybranym rodzaju kompresji bëdzie nam potrzebna do uûytkowania nastëpnego programu, czy teû raczej systemu. A jest nim pakiet XPK w wersji 2.5

Zapewne wielu uûytkowników twardzieli po poczâtkowym euforycznym stanie zapychania swoich dysków twardych zaczynajâ jak zmory nawiedzaê komunikaty w stylu 'Volume XXXX is full'. To po prostu daje o sobie znaê nasza chëê posiadania wielu (czasami zbyt wielu) rzeczy na raz.

Ot chociaûby moduîy. Dziô dostajë do rëki kilka nowych pîytek CD ze ôwietnymi moduîami. I jak tu sobie odmówiê przegrania tych kilku najlepszych na twardy dysk, aby byîy zawsze pod rëkâ?

Kaûdy fanatyk trzyma je wiëc na dysku w postaci spakowanej. Czasami jest to PowerPacker, którego zaletâ jest duûa uniwersalnoôê w stosunku do aplikacji go uûywajâcych. Wadâ natomiast jest zbyt maîa skutecznoôê oraz tzw. 'dziurawienie pamiëci' (czyli nieefektywne zarzâdzanie zasobami pamiëciowymi), co przy przesîuchaniu np. 10 dîugich moduîów nawet na 8 MB zaczyna owocowaê komunikatem 'Out of Memory'. I cóû z tego, ûe wolnej pamiëci jest jeszcze 7.5 MB, skoro najwiëkszy dostëpny blok wynosi np. 200 KB?

Dlatego teû wielu uûytkowników uûywa do pakowania swoich moduîów packera 'Crunchmania' w wersji 1.9. Niestety, zmniejsza sië wtedy uniwersalnoôê tak spakowanych danych, gdyû jedynie dobre i rozbudowane playery posiadajâ moûliwoôê jej obsîugi (np. Aplayer korzystajâcy z unpack.library), D.S.M.P. (wymaga MUI), Hippoplayer 2.21, lub Rolls-Royce wôród playerów - DeliTracker 2.14. Na takowe zaô nie zawsze starczy pamiëci.

Jej zaletâ jest jednak doôê dobra kompresja (lepsza niû PP). Do wad zaliczyîbym szybkoôê dekompresji (odrobinë zbyt wolna), maîâ uniwersalnoôê odczytywania spakowanych niâ danych przez róûnorodne aplikacje, oraz niemoûnoôê dokonywania automatycznej dekompresji spakowanych niâ rzeczy (bez instalowania patcha w stylu 'RTDD'). Ze znanych i popularnych programów (i nie mówië tu o specjalizowanych decruncherach) jedynie 'Filemaster 2.02' umoûliwia dekompresjë danych spakowanych za pomocâ crm.library (obecnie pojawiî sië jednak maîy programik 'FindCrunch', rozpakowujâcy prawie wszystko).

Niezîym wyjôciem jest wiëc korzystanie z bibliotek XPK, z których przynajmniej kilka jest specjalnie przystosowanych do kompresji sampli, i moduîów. Jak wykazaîy testy wykonane za pomocâ 'XPKatana', najlepszâ bibliotekâ do pakowania moduîów okazaîa sië biblioteka SQSH. Dziëki niej moûna wyciâgnâê i do 15% wiëcej niû np. 'PowerPacker'. Czas oczekiwania na dekompresjë moduîu jest takûe lepszy od np. CRM2 i CRMS (2-3 razy szybciej). To juû jest coô. Jednakûe dalej mamy nierozwiâzany problem wymiany danych pomiëdzy aplikacjami nie obsîugujâcymi XPK (Protracker Rulez).

A np. w wypadku gdy mamy popakowane wszystkie sample i jesteômy w trakcie ich obróbki programem AudioMaster IV? Jesteômy zmuszeni do rozpakowania tych kilku (-nastu? -dziesiëciu?) wybranych plików, a po ich obróbce do ponownego spakowania i umieszczenia ich w poprzednim miejscu. Czy to przypadkiem nie jest strata czasu?

A jeûeli nawet starczy nam czasu - to czyû nie chciaîo by sië wczytaê kiedyô moduliku jako np. efekt muzyczny w tworzonej przez nas prezentacji na Scali? I co? Rozpakowywaê te 5 moduîów? Nie szkoda miejsca?

Z pomocâ przychodzi nam pakiet XPK 2.5, a konkretnie urzâdzenie XFH.handler. Za jego pomocâ moûemy stworzyê urzâdzenie logiczne o dowolnej nazwie ('XPK' lub lepiej 'DH3' lub 'DH4') przeznaczone do przechowywania danych potraktowanych kompresjâ XPK. Jak dziaîa takie urzâdzenie?

Otóû na samym poczâtku musimy wybraê dowolny katalog jako nasze urzâdzenie docelowe. Powiedzmy iû bëdzie to katalog 'dh1:Modules', do którego tworzymy assigna np. 'assign MOD: dh1:modules' (nazwa 'assigna' musi byê 3 literowa). Nastëpnie za pomocâ dostarczonych poniûej przykîadów tworzymy urzâdzenie np. XP0 i umieszczamy je w katalogu Devs/Dosdrivers tak aby po kaûdym restarcie systemu nie montowaê ich rëcznie. (posiadacze systemu innego niû 3.0 i 3.1 muszâ umieôciê poniûsze linie w mountliôcie).

/* Dane dla urzâdzenia XP0 */

    FileSystem = L:XFH-handler
    Unit = 0
    Priority = 4
    Mount = 1
    Stacksize = 6000
    GlobVec = -1
    Device = "dummy.device"
    LowCyl = 0
    HighCyl = 0
    BlocksPerTrack = 0
    Surfaces = 0
    Flags = 0
    Reserved = 0
    Interleave = 0
    Buffers = 0
    BufMemType = 0

To jak na razie dopiero poîowa sukcesu. Teraz naleûy odpowiednio prze edytowaê plik o nazwie '.xrhrc_0' (dla Unixowców - brzmi znajomo, nie?). Odpowiednio przeedytowany plik zapisujemy w katalogu 's:' w podkatalogu 'xfh'. Dla roztargnionych podajë ôcieûkë: 's:xfh/.xrhrc_0'. Nie zapomnijcie kropki na poczâtku pliku!

A oto jak wyglâdaîby nasz przykîadowy plik '.xrhrc_0'.

ROOTDIR=MOD:
VOLUMENAME=Modules
AUTOCOMPRESS=YES
PACKMODE=SQSH
STEPDOWN=YES

Po kolei wyjaônimy sobie co jest co. Pierwsza linia 'RootDir=MOD:' okreôla nam ôcieûkë do katalogu który bëdzie naszym urzâdzenie. Poniewaû ja zaasygnowaîem 'MOD:' do 'dh1: Modules' - ten wîaônie katalog bëdzie uûywany. Oczywiôcie wy moûecie podaê dowolnâ ôcieûkë. Naleûy jednak poprawnie ustawiê do niej 'assigna'.

Nastëpna opcja okreôla nam nazwë naszego 'quasi-urzâdzonka'. Proponujë dla moduîów zostawiê nazwë: Modules. Moûna jednak podaê dowolnâ innâ (dla sampli np. 'Samples', dla tekstów np. 'Texts', itp.) UWAGA! BEZ SPACJI!

Opcja 'AutoCompress' mówi naszemu urzâdzonku czy w przypadku zapisu do niego dane majâ byê automatycznie kompresowane. Polecam zostawienie tej opcji na 'YES', któû bowiem zapamiëta czy ostatnio skopiowane tam moduîy zostaîy spakowane czy nie?

Jako 'PACKMODE' dla moduîów i kolekcji sampli polecam ustawienie 'SQSH'. Dla innych plików najlepiej jest sprawdziê kompresjë poszczególnych bibliotek i wstawiê tam odpowiedniâ nazwë (do tego wîaônie przyda nam sië programik XPKatana).

Ostatnia opcja umoûliwia urzâdzeniu automatycznâ zmianë stopnia kompresji na niûszy w przypadku wystâpienia komunikatu o braku pamiëci. Polecam ustawienie tej opcji na 'YES', gdyû wtedy bëdziemy bardziej pewni o nasze dane.

Po zapisaniu tego pliku w odpowiednie miejsce wykonujemy restart systemu. Jeûeli wszystko wykonaliômy poprawnie powinniômy posiadaê nowe urzâdzenie o XP0 o nazwie 'MODULES'. Moûna to sprawdziê wywoîujâc polecenie 'INFO'. Oto co ja otrzymaîem:

Mounted disks:
Unit    Size    Used     Free Full Errs    Status   Name
XP1:    300M  533618    81260  87%    0  Read/Write Documents
XP0:    300M  533618    81260  87%    0  Read/Write Modules
RAM:     14K      14       0  100%    0  Read/Write Ram Disk
DH0:     40M   77432     5222  94%    0  Read/Write Workbench
DF0:     No disk present
DF1:     No disk present
DH1:    300M  533618    81260  87%    0  Read/Write Work
DH2:    162M  201987   130112  61%    0  Read/Write ARC
CD0:     No disk present
CD1:     No disk present

Volumes available:
Ram Disk [Mounted]
Documents [Mounted]
Modules [Mounted]
ARC [Mounted]
Work [Mounted]
Workbench [Mounted]

Jak widaê posiadam trzy partycje na twardzielu (Workbench, Work, ARC), oraz dwa urzâdzenia logiczne o nazwach XP0 i XP1. Ich nazwy odpowiednio to 'Modules' i 'Documents'.

Do plików zawartych w takim urzâdzeniu moûemy odwoîaê sië w dwojaki sposób: normalnie np. 'dh1:modules/mod.All_the_way'. W wyniku tego otrzymamy plik SPAKOWANY (!!!) xpkSQSH. Tak naleûy np. korzystaê podczas sîuchania moduîów playerem który radzi sobie z bibliotekami XPK (w ten sposób omijamy nasze urzâdzonko odwoîujâc sië bezpoôrednio do pliku na dysku.)

A co np. z Protrackerem, który nie rozpozna XPK? Naleûy sië odwoîaê w ten sposób: 'XP0:mod.All_The_Way', lub 'Modules:mod.All_The_way'. W obydwu przypadkach Protracker otrzyma ROZPAKOWANE juû dane.

Zapisujâc natomiast do urzâdzenia 'XP0:' wszystkie dane zostanâ automatycznie spakowane wybranym przez nas w konfiguracji rodzajem kompresji.

Oczywiôcie, nikt nas nie ogranicza co do rodzaju danych oraz zastosowanej kompresji. Naleûy jednak pamiëtaê aby nie uûywaê packerów pakujâcych z utratâ danych, gdyû w ten sposób z naszej ukochanej gry moûna otrzymaê îadnâ sieczkë.

Nic jednak nie stoi na przeszkodzie aby pakowaê dane graficzne np. iff24 (True Color), które jak wiemy potrafiâ w standardowym trybie 640x480 siëgaê i 1 MB. Te same obrazki po zapisaniu w formie JPG zajmujâ juû tylko 80 kB. Nie kaûdy jednak ma ochotë na utratë jakoôci (co w przypadku JPEG-ów jest nieuniknione - Quality 100% nie daje bowiem prawie ûadnej kompresji). Nie naleûy jednak przesadzaê - w przypadku posiadania maîej iloôci pamiëci (1-2 MB) jest to doôê ryzykowne. Równieû stosowanie tego systemu bez twardego dysku (tj. na goîych Amigach) jest raczej bezsensowne.

Aha - system jest w miarë bezpieczny (w przeciwieïstwie np. do programików DoubleSpace lub Stackera dla komputerów klasy PC, lub systemu 'Compress' napisanego dla Amigi). Gdy padnie nam konfiguracja - odzyskanie plików polega na przepakowaniu ich dowolnym programem (XPackIt, XPKatana, DosControl 5.2) do normalnego formatu. Podczas 5 miesiëcznego uûywania takowego systemu nie zauwaûyîem wiëkszych wad (oprócz jednej - o tym za chwilë) lub uchybieï, które naraziîyby nasze cenne dane na szwank.

Co do wad, (tylko czy moûna to nazwaê wadâ?) podczas zapisu do takowego urzâdzonka caîy system na chwilë staje. Czas tej zwîoki jest zaleûny od szybkoôci komputera, wielkoôci pliku, rodzaju packera oraz stopnia efektywnoôci. Oczywiôcie spowodowane to jest wysokim priorytetem urzâdzenia (+4). Nie polecam jednakûe eksperymentów z jego obniûaniem gdyû moûe to spowodowaê przekîamania w zapisie (osobiôcie nie stwierdziîem). Natomiast podczas odczytywania z urzâdzenia nic takiego nie wystëpuje. Ale, w sumie - pakuje sië tylko raz :).

To wszystko w dzisiejszym odcinku. Mam nadziejë iû 'przestrzeï ûyciowa' na twardych dyskach nagle sië powiëkszy. Ja stosujâc dwa takowe urzâdzenia (dla moduîów i tekstów) z 60 MB uzyskaîem ponad 37 MB wolnego. Spowolnienia systemu nie zauwaûyîem (tak jakbyôcie uûywali np. PowerPackera lub Crunchmanii). Wykonaîem nawet eksperyment polegajâcy na bezczelnym zresetowaniu komputera w czasie zapisu do urzâdzenia. Efekt byî îatwy do przewidzenia - automatyczna walidacja twardziela... i to wszystko. Radzë jednak nie naraûaê systemu na 'niespotykane' resety podczas zapisu lub odczytu danych (juû widzë podobny system dla Windows'95, he he).

W nastëpnym numerze - trochë wiëcej o XPK.

Quetzalcoatl
1996.02.08

E - mail:
docent@pluton.pol.lublin.pl
docent@pentak.pol.lublin.pl