Super Packer

From Atariki

Revision as of 22:27, 20 lis 2022; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

Grafika:Super_packer.gif

Super Packer to jeden z pierwszych programów do pakowania plików binarnych przeznaczonych dla 8-bitowego Atari, który prezentował zupełnie inne podejście do kompresji plików niż istniejące wcześniej crunchery. Super Packer pozwala na zachowanie struktury oryginalnego pliku po spakowaniu. Jego kolejną zaletą jest możliwość kompresji programów, które wymagały do pracy DOSa.

Działanie programu można podzielić na kilka etapów. Jednym z nich jest wczytanie pliku do względnie niewielkiego bufora programu. Po tej operacji na ekranie możemy obejrzeć całą strukturę wczytanego pliku. Widzimy w jakie obszary pamięci ładuje się program, który będziemy poddawać kompresji. Każdy z segmentów pliku możemy poddać kompresji. Program umożliwia użycie trzech metod kompresji: RLE, LZ77 oraz Huffman. Przy każdym z pakowanych segmentów możemy wybrać typ kompresji, zastosowany przez packer. Domyślnym ustawieniem programu jest użycie wszystkich trzech sposobów w kolejności: RLE->LZ77->Huffman. Dodatkowo program może przeprowadzić test czy dane po spakowaniu nie okazały się dłuższe od danych wejściowych.

Oprócz swojego głównego zastosowania (kompresja) program bardzo dobrze może służyć jako bardzo wygodny w użyciu linker. Ma dość wygodny i intuicyjny interface. Jego niewątpliwą wadą jest dość mały bufor przeznaczony na dane wejściowe. Do działania program wymaga 64KB pamięci RAM i nie korzysta z żadnych rozszerzeń pamięci.

Autorem programu jest Jiří Bernášek z BeWeSoft. Super Packer powstał w 1993 roku. Był jednym z pierwszych programów stosujących odmienne podejście do procesu kompresji plików binarnych, a to tego tak zaawansowane algorytmy kompresji (wcześniejsze programy tego typu pozwalały jedynie na kompresje algorytmem RLE). Zyskał wielką popularność na polskiej scenie (w połowie lat 90. XX w.). Stosunkowo prosta była modyfikacja procedury dekompresującej, dzięki czemu przy dekompresji nie zawsze trzeba było oglądać "pasków" występujących podczas dekompresji segmentu danych.

Program oferuje 3 metody kompresji: RLE, LZ77, Static Huffman. O ile RLE i Huffman działają dość szybko, jednak implementacja LZ77 jest dość wolna (wolniejsza od "Crunchera 5.0" pracującego z "offset" ustawionym na 4). Ta najwolniejsza metoda jest w większości przypadków najbardziej skuteczna. Na szczęście autor umożliwił wybór metody kompresji użytkownikowi. Program ma wspaniałe możliwości edycji pliku binarnego (dodawanie bloków, init-ów, runów, procedur przepisujących). Jiří przeznaczył na słownik dla LZ77 bufor o wielkości 4 KB. Program niestety nie wykorzystuje pamięci pod systemem operacyjnym, mamy do dyspozycji około 30 KB bufora (od MEMLO do $97DC), zatem dla niektórych (dłuższych) programów bufor może być niewystarczający, co prawda autor wspomina o możliwości dzielenia pliku na kilka części i pakowaniu oddzielnie każdej z nich, wtedy należy usunąć z każdej (z wyjątkiem pierwszej) z tak spakowanej części dekompresor . To oczywiście wymagana o wiele większego nakładu pracy.

Super Packer ma również możliwość relokowania procedury dekompresującej pod dowolny adres. Program ten jednak posiada wiele zalet i można uznać, że mimo kilku drobnych wad jest bardo ciekawym rozwiązaniem. Po Super Packerze w 1995 roku pojawił się DJ Packer, a w 1996 roku Fox wypuścił swojego FlashPacka.

Linki


Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.

Personal tools