Cat Food: Różnice pomiędzy wersjami

Z Atariki
Przejdź do nawigacji Przejdź do wyszukiwania
Mono (dyskusja | edycje)
m styl + link
Mono (dyskusja | edycje)
m sekwencje które nie są generowane
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 2 lip 2024, 18:16

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.