 Ezzel  a  cikkel  azoknak szeretnék segítséget nyújtani, akik már kész forrás-
file-jukat  szeretnék  a  gép  által assembler nélkül is futtatható formába el-
menteni, de nem tudják hogyan kell ezt megtenni.

 Ezt  a  formát  "kézzel" szinte lehetetlen létrehozni, ehhez egy tömörítő (sű-
rítő,packer,cruncher)  programra  van  szükség.  Ez abból is előnyös, hogy nem-
csak futtathatóvá, hanem rövidebbé is teszi a munkánkat.
 Ebben  a  cikkben  a  gép DOS-CLI-jéből közvetlenül indítható file-ok létreho-
zásával foglalkozunk.

 Először  is nézzük meg, hogyan mentsük el forráskódunkat az assemblerből.  (Mi
a legelterjedtebb Seka assemblert használtuk):

 Ha  készen  vagyunk a forrásfile-lal és le is teszteltük, következhet a sűrítő
számára való elmentés (a forráskód elmentése).

 Abban  az  esetben, ha fix memória címre fordítottuk a forrást és töltöttük az
extern  file-okat (ez a gyakorlatban az "org" és a "load" pszeudó   (assembler)
parancsok  használatát  jelenti)  a  "wi"  parancs   segítségével   menthetünk.
Természetesen  a  paramétereket  (kezdet és vég) nekünk kell tudni és arra min-
dig  ügyeljünk,  hogy  az  elsőtől az utolsó extern file-ig mentve legyen, mert
anélkül hiába várnánk munkánk tökéletes működését.

 (Ha  nem  fix  címre  "pakoltuk" a forrást és a hozzá tartozó extern file-okat
akkor  objectfile-ként  mentsünk ("wo" parancs).  Egyébként egyetlen "org-load"
párral fix-címre tehető nem fix-címes forrásunk.)
 
 Használjuk  a  fix-címes módszert demoink írásakor, mert így mindig tudjuk "mi
hol van"!  (Mi is ez alapján követjük végig a tömörítést.)

 Ez alapján pl. kezdhetjük munkánkat így az assemblerben:

    >extern "blablalabla",$60000 ;extern-file $60000-re  pl.egy grafika
    org	 $40000                  ;a program $40000-ről indul
    load $40000

    movem.l	a0-a6/d0-d7,-(a7)        ;regiszterek mentése a verembe  
    move	#$4000,$dff09a           ;forrásprogram kezdete
    move.l	copperlista,$dff084
    .	
    .
    .stb                                 ;saját programrész
    .
    .
    movem.l	(a7)+,a0-a6/d0-d7	;regiszterek visszamentése a veremből
    rts    				;kilépés 

 Legcélszerűbb,  ha  kitisztítva  a memóriát (pl.  Hard-Reset) állítjuk össze a
kimentendő  file-unkat,  és így mentünk, mivel így rövidebb lesz a kész file és
kisebb a hibalehetőség és áttekinthetőbb a munkánk.

 Az  is  célszerű  ha  programozás  közben  állandóan használunk egy MemPeek-et
(pl.Guru  II/2-ben ismertetettet), mert így szépen "látjuk" hogy mi hol helyez-
kedik el a gép memóriájában, és a forráskód hosszának kijelölése is könnyebb.

 Ezzel elő is készítettük a tömörítéshez a forrásunkat.

 Most jön a nagy dilemma! Melyik tömörítőt használjuk?
 
 Általános  vélemény  ezen  a téren szinte nincs, mindenkinek megvan a maga el-
képzelése arról, hogy melyik a jó és melyik a nullát sem érő tömörítő.

 Mi  a  használhatóság  és  hatékonyság  mellett annak elterjedtségét is figye-
lembe vettük.  Ez alapján állítottuk össze ezt a rangsort:
 
 1. Tetra Packer Vx.y  (lehetőleg V2.0-tól)         ;fix- és objectfile-okhoz
 2. (Turbo) Imploder                                ;csak objectfile-hoz
 3. Power Packer                                    ;csak objectfile-hoz
 4. Titanics Cruncher                               ;csak objectfile-hoz
 5. Double Action

 A Tetra Packer alkalmazható a legszélesebb körben, gyorsan és   áttekinthetően
kezelhető,  és  az  eredmény is gyors.  Mi ennek leírását közöljük. (a többi jó
része  csak objectfile-okat és relokálható (már futtatható)  fileokat  tömörít,
és valamivel lasabbak).

 (Ha valakinek akkora objectfile-ja lenne, hogy "nem fér be a DOS mellé", akkor
a Titanics-ot használja, ami igaz kissé lassú.)

                    Tetra Packer kezelése  (Fix-file)

-A  Tetra  Packer  bejelentkezésekor választhatunk arról, hogy több file-t aka-
runk-e  tömöríteni  egymás után (Megacrunch?).  Ez általában Megademok írásakor
hatékony,  mivel az összes részt bepakolja a memóriába (csak 1MB-os gépeken fut
ez az opció!).  Mi itt "N"-nel válaszoljunk.

-Most  adjuk  meg  a  munkaterületet  (amitől ameddig mentettük a forráskódot).
Majd  a  memoriát tisztítja ki és foglalja le a program.  (Ez mindig más mint a
munkaterület, csak a nagysága egyezik meg vele, de ne törődjünk vele!)

-A  "Scan  Widht"(Offset)  a  tömörítés hatékonyságát állítja, amit optimálisan
"$0100"  és "$0800" között adjunk meg.  Ha nagyon sietünk ez alatti, illetve ha
ráérünk,  e fölötti (bár nem lesz sokkal rövidebb a file-unk, csak a tömörítési
művelet hosszabb) értéket írjunk.  (Min.  "$0010",max.  "$8000" között.)

-Ezután  adjuk  meg a betöltendő file típusát (általában a mi esetünkben):  "o"
válasszal.   (Ha  futtatható  (relokálható)  file-t  akarunk  még jobban össze-
nyomni, akkor "r".)

-Ezután  a  filenév  és a töltési cím következik (utóbbi megegyezik általában a
munkaterület  alsó  határával.   Most  szépen betölt, majd megkérdezi, hogy még
akarunk-e vmit hozzáfűzni.  (Ha esetleg egy extern file-t elfelejtettünk volna.
Itt mindig azt a töltési címet írjuk - megfelelő munkaterületválasztás esetén -
ahová  normál  assemblerben töltenénk a file-t).  Itt nyomjunk "enter"-t, mivel
minden (remélhetőleg) egy file-ban van.

-És  máris  kezdődik  a show!  (Ilyenkor elmehetünk vacsorázni, vagy kutyát sé-
táltatni, mert jó pár percbe beletelhet mire megszüli a művet a gép.)

-Miután  kész,  kiírja milyen hatékonyan dolgozott, s már csak pár dolog maradt
hátra.
 
-A  "JMP  TO"  kérdésre  írjuk  be, hogy hol indul a programkód (a forrásnál az
"org"-gal  megadott  helyen  és nem mindig a töltési címnél, pl.  a fenti "pél-
dakezdetben" "$40000"-t írnánk.)
 
-Már csak egy dolog maradt:  kiválasztani a megfelelő sűrítési effektet (melyik
színregiszterbe  pakoljon  a  sűrítő pufferja majd kitömörítésnél, azaz "hol,és
hogyan csíkozzon".)
 
-(A  "PRO-DECRUNCHER"  a  mi  szempontunkból  közömbös, "N") Ennek hasznát ált.
Megademok készítésekor vesszük, ill.  amikor pl.  zene vagy scroll, stb.  alatt
tömörít ki, mert itt megadható a "kitömörítési környezet".

-Mentsünk és végül megtekinthetjük művünket.


A  kész  file -  ha minden összejött - szépen fut, és CLI-ből is majd indítható
egy RESET után.

Néhány jótanács:

-A  tömörítővel  párhuzamosan  ne  hagyjunk  más  multitasking  programot a me-
móriában, mert ebből csak gondok lehetnek.

-Ha van memóriabővítőnk, akkor mindig olyan kiépítésben használjuk a tömörítőt,
amiben futtatni akarjuk a kész programot.  Pl.  ha 0.5 MB-on is használni akar-
juk, kapcsoljuk ki(!) a bővítőt (software v.  hardware úton) a sűrítő betöltése
előtt.(Általaban célszerű úgy írni a programokat, hogy fél megán is fussanak)

-Ha esteleg nem szépen lépne vissza a programunk a CLI-be, akkor meg kell vizs-
gálnunk  a  kilépő  rutinunkat (eredeti Copperlista visszaírása, megszakítások,
DMA,  stb..) Ill.  célszerű egy regisztermentést végezni a programba való belé-
péskor és visszamentést kilépéskor (movem.l parancs, lásd fenti példa)

-Ha  be  sem  lépne kitömörítés után a rendszer a mi programunkba, akkor reset-
eljünk  (ilyenkor már ki van pakolva a program) és MemPeek-el nézelődjünk, hogy
minden  megvan-e.   (Elképzelhető, hogy pont a programkód hiányzik  és  szegény
gép a mi mentési hiányosságaink miatt olvassa majd a GURU-t.)


Végezetül  mindenkinek  gyakorlásként  ajánlom  a lemezen található "raszteref-
fekt.S" nevű forrásfile tömörítését az alábbi műveletekkel:

(a továbbiakban: (e)="enter")

Seka-ban:
- f (e)  $50000 (e)  $53000 (e)    ;a memória tisztítása az aktuális helyen
- r (e)	 rasztereffekt (e)         ;forrás beolvasása
- a (e) (e)                        ;befordítása
- y (e)                            ;extern-file-ok töltése a megadott helyre  
- js (e)                           ;tesztelés
- wi (e) raszter (e) $50000 (e)  $53000 (e)    
                                   ;mentés a tömörítőnek fix-fileként
RESET
- (0.5 MByte üzemmód!)

Tetra Packer:

- Megacrunch (Y/N):  N  (e)
- Lowmem: $50000   (e)    Highmem: $53000  (e)  ;munkaterület
- Scan Widht: $0100	(e)			;hatékonyság
- Filetype: o (e)                               ;sima,fix-file tipus
- Filename: raszter (e)                         ;file-név
- Load address: $50000  (e)                     ;töltési cím
- (e)                                           ;nincs hozzáfűzés

sűrítés után:

- JMP TO:  $50000 (e)		;indítócím
- coloreffekt: 0  (e)           ;háttér csíkozás
- PRO-DECRUNCHER: N (e)	
- Filename:   rasztereff  (e)      ;elmentés
- Save again?: N (e)               ;elég egyszer menteni
- Run now?:    Y (e)               ;lefuttatás

Ha jó (márpedig annak kell lennie) akkor sima CLI-ből is futtathatjuk.

Hát  ennyi lett volna ez a kis mai műsor, remélem mindenkinek sikerülni fog sa-
ját  művének  tömörítése  és  futtathatóvá  tétele.   Sok  sikert  mindenkinek,
üdvözlettel:
                                                      Matrix of Grace ®1991    
