EPcompress leírás
Contents
Parancssor, paraméterek
epcompress [PARAMÉTEREK...] INFILE[...] OUTFILE
Általános
- -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.
Fájl formátum
- -raw | -noraw: EXOS fejlécek figyelmen kívül hagyása -raw esetén, az alapértelmezés -noraw. Támogatott EXOS modul típusok:
- 05h: Új alkalmazói program (-m0, -m2, -m3), a mérete a szabványosnál nagyobb is lehet, kicsomagolva a 3. lapot is használhatja
- 06h: Abszolút rendszerbővítő (-m2, -m3)
- 49h: IVIEW kép (-m0, -m2, -m3, a CVIEW bővítő azonban csak az -m2-t támogatja)
- -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 (lásd lent), ami alapértelmezés szerint "FG0L,G,,12345678,0123456789ABCDEF".
- -a | -n: Archívum készítése több fájlból -a esetén, az alapértelmezés -n.
- -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. N csak 4 többszöröse lehet.
Tömörítési paraméterek
- -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.
- -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>: 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.
Önkicsomagoló programok paraméterei
- -borderfx | -noborderfx: A keretcsíkozás engedélyezése vagy tiltása.
- -cleanup | -nocleanup: A lapozás és veremmutató EXOS-hoz hasonló beállítása.
Tömörített formátumok leírá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