Difference between revisions of "EPcompress leírás"

From Enterprise Wiki
Jump to: navigation, search
(Az m6 formátum definíció leírása)
Line 43: Line 43:
 
Paraméterek nélkül csak az -m6 a forráskódban található decompress_m6.s rutinnal kompatibilis formátumot állít be. Kis- és nagybetűk is használhatók.
 
Paraméterek nélkül csak az -m6 a forráskódban található decompress_m6.s rutinnal kompatibilis formátumot állít be. Kis- és nagybetűk is használhatók.
  
Általános paraméterek:
+
'''Általános paraméterek'''
  
 
* F: normál irány (forward), az LDIR-hez hasonlóan
 
* F: normál irány (forward), az LDIR-hez hasonlóan
Line 54: Line 54:
 
* 1: invertált jelzőbitek (1..10), a régebbi formátumok ezt használják
 
* 1: invertált jelzőbitek (1..10), a régebbi formátumok ezt használják
  
Hosszúság:
+
'''Hosszúság'''
  
 
Ez a tömörített sorozatok hosszúságának a kódolása, ami lehet egyszerűen "G" is, ez a már említett Elias gamma kódot állítja be ('0123456789ABCDEF", 1 és 65535 közötti hosszúságot támogat, 16 '0' bit a file végét jelzi), és többnyire elfogadható eredményt ad. A definíció működése talán megérthető az alábbi példa alapján, "0128" megadásakor:
 
Ez a tömörített sorozatok hosszúságának a kódolása, ami lehet egyszerűen "G" is, ez a már említett Elias gamma kódot állítja be ('0123456789ABCDEF", 1 és 65535 közötti hosszúságot támogat, 16 '0' bit a file végét jelzi), és többnyire elfogadható eredményt ad. A definíció működése talán megérthető az alábbi példa alapján, "0128" megadásakor:
Line 64: Line 64:
 
Ha a minimális hosszúság nagyobb 1-nél (lásd lent), akkor minden értéket megfelelően növelni kell.
 
Ha a minimális hosszúság nagyobb 1-nél (lásd lent), akkor minden értéket megfelelően növelni kell.
  
Távolság1:
+
'''Távolság1'''
  
 
Az 1 byte hosszúságú tömörített sorozatoknál a távolság kódolása. Ha üres, akkor az ilyenek nem támogatottak, és a minimális hosszúság 2 lesz. Lehet "I" és "X" közötti karakter, ami egyszerű fix méretű kódot jelent 1 és 16 bit között, például a "K" 3 bites, 1 és 8 közötti távolságot tesz lehetővé. Ebben a módban ha lehetséges, akkor az alsó 8 bitet (illetve "X"-nél a teljes értéket) egyszerű byte-ként írja ki az epcompress. Ez hasznos lehet akkor, ha a sebesség a fontos kicsomagolásnál. Egyébként a fentihez hasonló rendszer szerint írható le a kódolás, de "G" nem használható, és kissé eltér a kimeneti formátum. Például az '1234" ezt jelenti:
 
Az 1 byte hosszúságú tömörített sorozatoknál a távolság kódolása. Ha üres, akkor az ilyenek nem támogatottak, és a minimális hosszúság 2 lesz. Lehet "I" és "X" közötti karakter, ami egyszerű fix méretű kódot jelent 1 és 16 bit között, például a "K" 3 bites, 1 és 8 közötti távolságot tesz lehetővé. Ebben a módban ha lehetséges, akkor az alsó 8 bitet (illetve "X"-nél a teljes értéket) egyszerű byte-ként írja ki az epcompress. Ez hasznos lehet akkor, ha a sebesség a fontos kicsomagolásnál. Egyébként a fentihez hasonló rendszer szerint írható le a kódolás, de "G" nem használható, és kissé eltér a kimeneti formátum. Például az '1234" ezt jelenti:
Line 72: Line 72:
 
* 11b + 4 bit: 15-30
 
* 11b + 4 bit: 15-30
  
Távolság2:
+
'''Távolság2'''
Távolság3:
+
 
 +
'''Távolság3'''
  
 
Az előzőhöz hasonlóak, csak 2 byte, illetve 3 vagy hosszabb sorozatokhoz. Az utóbbi nem lehet üres, viszont ha az 1-es és a 2-es üres, akkor 3 lesz a minimális hosszúság.
 
Az előzőhöz hasonlóak, csak 2 byte, illetve 3 vagy hosszabb sorozatokhoz. Az utóbbi nem lehet üres, viszont ha az 1-es és a 2-es üres, akkor 3 lesz a minimális hosszúság.

Revision as of 09:30, 13 April 2019

epcompress [PARAMÉTEREK...] INFILE OUTFILE

Paraméterek

-h, -help, --help: Rövid leírást ír ki a program használatáról, és kilép.

--: Minden további paraméter fájl név.

-x: Tömörített fájl kicsomagolása.

-t: Fájl(ok) tesztelése.

-m0..m6: Formátum választása, az -m5 (ZLib) helyett használható -mz is, az alapértelmezés -m2, illetve a bemeneti fájl alapján automatikusan választott, ha az lehetséges.

-m6:ENCODING: -m6 módban a kódolást definiálja, ami alapértelmezés szerint "FG0L,G,,12345678,0123456789ABCDEF".

-1 ... -9 | -X: Gyorsabb vagy nagyobb hatásfokú tömörítés beállítása, az alapértelmezés 5. A nagyobb értékek egyes esetekben rosszabb fájl méretet is eredményezhetnek. -m0 és -mz formátumnál az -X nagyon lassú.

-fast: Gyors 4 szálú tömörítő használata, ez csak -raw -m2 és -mz módban lehetséges, és fix paramétereket tételez fel. Az ep128emu snapshot és PNG fájl mentésekor használja.

-raw | -noraw: EXOS fejlécek figyelmen kívül hagyása -raw esetén, az alapértelmezés -noraw, amit azonban csak az -m0, -m2, és -m3 formátumok támogatnak.

-a | -n: Archívum készítése több fájlból -a esetén, az alapértelmezés -n.

-minlen <N>: LZ77 minimális hosszúság 1 és 3 között, az alapértelmezés a formátum által támogatott legkisebb érték. A növelése rontja a fájl méretet, de gyorsítja a kicsomagolást.

-maxoffs <N>: LZ77 maximális távolság (szótár méret). Alapértelmezés szerint a legnagyobb, amit a formátum szabványosan támogat, általában 64 kilobájt. Kivétel az -mz (ZLib) formátum, ahol 32768 bájt, nagyobb érték pedig nem szabványos bővítést engedélyez. Az -m1, -m2, és -m4 esetében a maximum 524288 bájt, amit a Z80 rutinok azonban nem támogatnak. A csökkentése rontja a tömörítés hatékonyságát, 1 bájt egyszerű RLE eljárásnak felel meg. A távolság korlátozása hasznos lehet speciális esetben, például cirkuláris puffer használatakor.

-blocksize <N>: Tömörítésnél fix blokk méret használata. Az alapértelmezés 0, ami optimális módon próbálja blokkokra bontani a bemeneti adatot, ha ezt a választott formátum lehetővé teszi (az -m3 és -m6 nem), a keresés mélysége függ az -1..-X paramétertől.

-V: Több részre bontott bemeneti fájl, csak kicsomagolásnál és tesztelésnél.

-V <N>: Tömörítésnél a kimenet N kilobájt méretű részekre bontása.

-borderfx | -noborderfx: Önkicsomagoló programban a keretcsíkozás engedélyezése vagy tiltása.

-cleanup | -nocleanup: Önkicsomagoló programban a lapozás és veremmutató EXOS-hoz hasonló beállítása.

Az m6 formátum definíció leírása

-m6:ÁLTALÁNOS,HOSSZÚSÁG,TÁVOLSÁG1,TÁVOLSÁG2,TÁVOLSÁG3

Paraméterek nélkül csak az -m6 a forráskódban található decompress_m6.s rutinnal kompatibilis formátumot állít be. Kis- és nagybetűk is használhatók.

Általános paraméterek

  • F: normál irány (forward), az LDIR-hez hasonlóan
  • B: fordított irány (backward), ilyenkor az adatot a végétől visszafelé haladva kell kicsomagolni
  • 9: a tömöríthetetlen byte-ok egyszerűen 9 bitesek lesznek (1b + eredeti byte, a file elején nincs jelzőbit)
  • G: a tömöríthetetlen byte-okat sorozatként tárolja, először a hosszúság Elias gamma kódolással, majd az eredeti adat. Ezt mindig tömörített sorozat követi, és a file mindig ilyennel kezdődik. Tömörített sorozat után jelzőbit adja meg a következő sorozat típusát (1 = tömörítetlen)
  • L: a bitenként olvasott adatot balra kell léptetni (SLA)
  • R: a bitenként olvasott adatot jobbra kell léptetni (SRL)
  • 0: normál jelzőbitek (0..01)
  • 1: invertált jelzőbitek (1..10), a régebbi formátumok ezt használják

Hosszúság

Ez a tömörített sorozatok hosszúságának a kódolása, ami lehet egyszerűen "G" is, ez a már említett Elias gamma kódot állítja be ('0123456789ABCDEF", 1 és 65535 közötti hosszúságot támogat, 16 '0' bit a file végét jelzi), és többnyire elfogadható eredményt ad. A definíció működése talán megérthető az alábbi példa alapján, "0128" megadásakor:

  • 1b + 0 bit: 1
  • 01b + 1 bit: 2-3
  • 001b + 2 bit: 4-7
  • 0001b + 8 bit: 8-263
  • 0000b: file vége

Ha a minimális hosszúság nagyobb 1-nél (lásd lent), akkor minden értéket megfelelően növelni kell.

Távolság1

Az 1 byte hosszúságú tömörített sorozatoknál a távolság kódolása. Ha üres, akkor az ilyenek nem támogatottak, és a minimális hosszúság 2 lesz. Lehet "I" és "X" közötti karakter, ami egyszerű fix méretű kódot jelent 1 és 16 bit között, például a "K" 3 bites, 1 és 8 közötti távolságot tesz lehetővé. Ebben a módban ha lehetséges, akkor az alsó 8 bitet (illetve "X"-nél a teljes értéket) egyszerű byte-ként írja ki az epcompress. Ez hasznos lehet akkor, ha a sebesség a fontos kicsomagolásnál. Egyébként a fentihez hasonló rendszer szerint írható le a kódolás, de "G" nem használható, és kissé eltér a kimeneti formátum. Például az '1234" ezt jelenti:

  • 00b + 1 bit: 1-2
  • 01b + 2 bit: 3-6
  • 10b + 3 bit: 7-14
  • 11b + 4 bit: 15-30

Távolság2

Távolság3

Az előzőhöz hasonlóak, csak 2 byte, illetve 3 vagy hosszabb sorozatokhoz. Az utóbbi nem lehet üres, viszont ha az 1-es és a 2-es üres, akkor 3 lesz a minimális hosszúság.

Linkek

EP128Emu, a csomag tartalmazza az EPcompress aktuális verzióját

Z80 assembly rutinok