Cat Food
From Atariki
Opublikowany w Tajemnicach Atari nr 7/1993 sterownik (handler) obsługujący w locie kompresję i dekompresję plików. Pracuje pod kontrolą DOS 2.5 z CP relokując się na dół pamięci i ustawiając odpowiednio wskaźnik MEMLO.
Pliki podlegają kompresji w czasie zapisu na urządzenie F:, a dekompresja następuje automatycznie przy wczytywaniu z niego.
Jako nazwę pliku należy po nazwie urządzenia "F:" podać specyfikację pliku docelowego np. "F:D8:DOWOL.TXT", kiedy to CatFood będzie odwoływał się do pliku "DOWOL.TXT" w ramdysku.
Deinstalacja sterownika następuje po powtórnym wczytaniu.
Algorytm i format
Kompresor rozpoznaje powtórzenia minimum 3 bajtów i zastępuje je blokiem:
- $E0 byte count - powtórzenia dowolnego bajtu
- $FB count - powtórzenia spacji (kod $20 ATASCII)
W przypadku mniejszej liczby powtórzeń dane w niezmienionej postaci są wypisywane do pliku jak leci. Wyjątkiem są bajty markerów bloków $E0 i $FB zastępowane odpowiednio przez:
- $E0 $E0 count
- $E0 $FB count
gdzie count może być też mniejsza niż 3.
Liczność count zawsze jest niezerowa, co pozwala jednym blokiem zastąpić maksymalnie 255 powtórzeń. Wartość 0 w tym miejscu spowoduje zignorowanie bloku, aczkolwiek kompresor nigdy takiej sekwencji nie generuje.
Nie generuje też sekwencji:
- $FB $01
- $FB $02
oraz:
- $E0 byte $01
- $E0 byte $02
z wyłączeniem opisanych wyżej markerów $E0 i $FB, co daje pole do ewentualnych rozszerzeń.
Trivia
Specjalny blok powtórzeń spacji zapewne predestynował sterownik do współpracy z Quick Assemblerem pozwalając na nieco optymalniejszy zapis plików źródłowych ASM.