Cat Food

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:27, 2 lip 2024
Mono (Dyskusja | wkład)
(styl + link)
← Previous diff
Wersja z dnia 17:16, 2 lip 2024
Mono (Dyskusja | wkład)
(sekwencje które nie są generowane)
Next diff →
Linia 1: Linia 1:
-Opublikowany w [[Tajemnice Atari|Tajemnicach Atari]] nr [http://tajemnice.atari8.info/6-7_93/6-7_93.html 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ę i ustawiając odpowiednio wskaźnik MEMLO.+Opublikowany w [[Tajemnice Atari|Tajemnicach Atari]] nr [http://tajemnice.atari8.info/6-7_93/6-7_93.html 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.+Pliki podlegają kompresji w czasie zapisu na urządzenie F:, a dekompresja następuje automatycznie przy wczytywaniu z niego.
-Jako nazwę pliku po nazwie urządzenia F: należy podać specyfikację pliku np. "F:D8:DOWOL.TXT", kiedy to 'CatFood' będzie odwoływał się do pliku "DOWOL.TXT" w ramdysku.+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. Deinstalacja sterownika następuje po powtórnym wczytaniu.
-Kompresor rozpoznaje powtórzenia bajtów i zastępuje je blokiem:+== Algorytm i format ==
 + 
 +Kompresor rozpoznaje powtórzenia minimum 3 bajtów i zastępuje je blokiem:
* $E0 byte count - powtórzenia dowolnego bajtu * $E0 byte count - powtórzenia dowolnego bajtu
-* $FB count - powtórzenia spacji ($20 ATASCII)+* $FB count - powtórzenia spacji (kod $20 [[ATASCII]])
-natomiast pozostałe bajty są do pliku wypisywane jak leci. Wyjątkiem są bajty markerów bloków $E0 i $FB zastępowane odpowiednio przez:+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 $E0 count
* $E0 $FB count * $E0 $FB count
-Liczność 'count' zawsze jest niezerowa, co pozwala w jednym bloku zapisać maksymalnie 255 powtórzeń. Wartość 0 w tym miejscu spowoduje zignorowanie bloku, aczkolwiek kompresor nigdy takiej sekwencji nie generuje.+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 Assembler]]em pozwalając na nieco optymalniejszy zapis plików źródłowych [[ASM]]. Specjalny blok powtórzeń spacji zapewne predestynował sterownik do współpracy z [[Quick Assembler]]em pozwalając na nieco optymalniejszy zapis plików źródłowych [[ASM]].
[[Kategoria:Oprogramowanie Atari 8-bit]] [[Kategoria:Oprogramowanie Atari 8-bit]]

Wersja z dnia 17:16, 2 lip 2024

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.

Personal tools