Cruncher 4.64
From Atariki
Cruncher 4.64 był pierwszym z prawdziwego zdarzenia programem kompresującym dla małego ATARI. Nie chodzi tu jednak o zastosowany algorytm kompresji a o nowatorskie jak na tamte czasy rozwiązanie przez Magnusa problemów z kompresją „nieprzewidywalnego zachowania” programów w formacie binarnym. Spowodowało to iż był to pierwowzór dla osób tworzących później podobne oprogramowanie. Ową innowacją był podział kompresji na dwa etapy. W pierwszym etapie program był wczytywany do pamięci i kompresowany, a następnie skompresowane dane były zapisywane na specjalnie przygotowany dysk, natomiast drugim etapem było dołączenie do spakowanych danych procedur dekompresji i zapis wyników pracy na dysk w postaci plikowej. Cruncher 4.64 stosował dość prosty algorytm kompresji nazywany przez niektórych „Char Pack”, a była to specyficzne odmiana algorytmu RLE. Kompresja programu binarnego przez Cruncher 4.64 polegała na wczytaniu do pamięci kompresowanego programu przez bardzo krótki loader, a następnie zawartość całej pamięci (również tej po ROMem komputera) była kompresowana, dane skompresowane były następnie zapisywane na dyskietce z Cruncherem jako ciąg sektorów na dyskietce. W następnym kroku po restarcie ponownym uruchomieniu komputera należało uruchomić linker który dokonywał połączenia tak skompresowanych danych z procedurami dekompresji. Jedną z wad takiego działania było to iż oryginalna struktura kompresowanego pliku była bezpowrotnie tracona. Jednak w przypadku dem czy gier nie miało to większego znaczenia. Jedynym problemem było tylko iż gdy oryginalny program przed kompresją zawierał jakąś czołówkę lub obrazek podczas ładowania, po kompresji już jej nie było widać ponieważ Cruncher, zachowywał stan pamięci tuż z przed uruchomienia programu. Nie pozwalało to na kompresję programów korzystających z DOS'a, ponieważ w trakcie dekompresji obszar zajmowany przez DOS był bezpowrotnie niszczony. Jednak Magnus próbując rozwiązać ten problem, umożliwił wybór dolnej granicy pamięci od której następowała kompresja pliku. W normalnym przypadku, (czyli kompresja całej pamięci) obszar kompresowany musiał znajdować się w adresach: $0480-$06FF, $0C00-$CFFF, oraz $D800-$FFFF. W przypadku użycia opcji „USE DOS” obszar poddawany kompresji znajdował się w zakresie $0480-$06FF, $1D00-$CFFF oraz $D800-$FFFF. Było to rozwiązanie mało eleganckie ze względu na sztywne ustalenie dolnej granicy kompresowanego pliku, jednak z DOSem, który posiadał MEMLO poniżej obszaru $1D00 tak skompresowany program miał szansę na działanie. Niestety pozostałe obszary pamięci, powyżej adresu $1D00 były bezpowrotnie niszczone przy dekompresji. Jednak kompresja programów dla DOS przez Crunchera 4.64 nie była głównym zamierzeniem autora, a ta funkcjonalność została prawdopodobnie dodana tylko po to aby kompresować programy, które po swoim uruchomieniu używały załadowanego do pamięci DOSa jako systemu umożliwiającego zapis/odczyt plików. Dobrym przykładem tego typu może być Future Composer lub wszelakie programy graficzne, np. XL-Art. Po uruchomieniu takiego programu powrót do DOSa był niemożliwy, a jego funkcje ograniczały się do zapisu wykonanej pracy na dyskietce. Następcą Crunchera 4.64 był Cruncher 5.0, ten program jeszcze bardziej zrewolucjonizował kompresję plików na ATARI, ponieważ jako pierwszy wykorzystywał zaawansowany algorytm kompresji i umożliwiał znaczne skrócenie kompresowanych programów. Możliwość kompresji programów DOSowych w Cruncherze 5.0 została porzucona. Przed Cruncherem 4.64 istniała jeszcze jedna wersja znana wersja programu, a był to Cruncher 2.69.
Zobacz także
Ten artykuł to tylko zalążek. Możesz pomóc rozwojowi Atariki poprzez rozszerzenie go o więcej informacji.