Exomizer 2 Z80
--------------
T&J/GPA le 18/01/2008, mis  jour le 23/03/2008

Exomizer est un compacteur de programmes puissant provenant du monde C64.
C'est plus exactement un Cross-cruncher (programme de compression sur PC,
programme de decompression sur n'importe quel ordinateur).

Comme d'autres compacteurs (Pucrunch, BitBuster), un portage Z80 de la
routine de decompression a ete realisee, cette fois-ci par un espagnol de
la scene Spectrum, MetalBrain. Il a cree plusieurs versions du decompacteur,

Ce petit document vous explique comment utiliser Exomizer sur un CPC, et
profiter ainsi du taux de compactage impressionnant de ce logiciel, le
meilleur au jour de la redaction de ce texte :-).

A la demande de Nicolas Leonet, j'ai rajoute dans l'archive les versions
optimisees des routines. Ces derniere necessitent l'usage d'un deuxieme
executable apres EXOMIZER, qui reorganise le fichier compresse.


L'archive contient les fichiers suivants :

EXOMIZER.TXT	: le texte que vous lisez
EXOMIZER.DSK	: image disque CPC avec des sources Maxam et un exemple
                  de compactage de page ecran.
EXO_V3.ZIP	: les sources de MetalBrain
EXO20BETA6.EXE  : programmes, sources du compacteur Exomizer 2.
METALBRAIN.TXT  : un post de l'auteur, expliquant le fonctionnement de ses
                  routines. On se demande au passage pourquoi ces
                  informations ne figurent pas avec ses programmes.



1) Preparer un repertoire de travail
------------------------------------
Creer un repertoire EXO sur un volume de votre disque dur (ou sur une
disquette si vous avec un PC1512 :-) ).

Ouvrir l'archive EXO20BETA6.EXE, recopier le fichier EXOMIZER.EXE (DOS ou
32 bits, selon l'age de votre systeme d'exploitation PC) dans le repertoire
EXO.

OUvrir l'archive EXO_V3, recopier le fichier EXOOPT.EXE dans le repertoire
EXO. C'est prt !



2) Transferer sur PC le fichier a compacter
-------------------------------------------
Le plus simple est d'utiliser ManageDsk, et d'exporter le fichier binaire
SANS EN-TETE dans le meme repertoire que l'executable d'Exomizer 2.



3) Compactage avec Exomizer 2
-----------------------------
Le seul mode qui soit utilisable sur un CPC est le mode RAW. Le reste
est specifique au monde Commodore.

Syntaxe de la commande pour le fichier BOULDER.BIN

EXOMIZER raw BOULDER.BIN

Le programme compacte, et cree un fichier A.OUT, qui correspond au
code compacte.

Verifiez dans le message final que le code compacte n'utilise pas de
"literal". Si c'est le cas, il faudra utiliser uniquement les sources
EXOMIZE1.ASM ou EXOMIZE3.ASM. (voir paragraphe 5). Vous pouvez a la
rigueur desactiver l'utilisation des "literal sequences" dans Exomizer
avec l'option -C (a taper avant le nom du programme a compacter).


Si vous utilisez une routine optimisee (EXOMIZE3.ASM ou EXOMIZE4.ASM),
il faut ensuite reorganiser le fichier compacte avec le programme
EXOOPT.EXE, comme ceci :

EXOOPT A.OUT BOULDER.PCK

Le fichier optimise n'est alors plus compatible avec les routines
standards. Il faut utiliser OBLIGATOIREMENT une des routines optimisees.



4) On transfert sur CPC le fichier compacte
-------------------------------------------
Hop, on sort ManageDsk du placard, et on fait le transfert inverse de la
phase 1.  Il faut choisir l'option "Forcer Binaire" pour l'import.



5) Compilation de la routine de decompression
---------------------------------------------
Les source Maxam sont fournis dans l'archive EXOMIZER.DSK. Il suffit de
rajouter au debut du source les adresses d'implantation memoire du code
compacte dans HL et du code a decompacter dans DE. Compilez le source,
vous obtenez un fichier EXOMIZER.BIN. Il est par defaut implante en &A000
pour l'exemple choisi sur la disquette (page ecran C64).

Exomizer1.asm : correspond a la routine deexo.asm en mode normal.
Exomizer2.asm : correspond a la routine deexo_simple.asm en mode normal.

Exomizer3.asm : correspond a la routine deexo.asm en mode optimise.
Exomizer4.asm : correspond a la routien deexo_simple.asm en mode optimise.

Objectivement, je ne vois pas trop l'interet des modes "simples", qui ne
sont pas franchement plus rapides que les versions normales, et qui presentent
le defaut d'utiliser un buffer forcement dans une plage de 256 octets. Apres,
c'est vous qui voyez :-).

Les version optimisees semblent un peu plus rapides a la decompression et 
sont plus compactes (gain de &12 octets entre EXOMIZER1.ASM et EXOMIZER3.ASM
par exemple).


6) Creation d'un petit loader Basic ou binaire
----------------------------------------------
Il ne reste plus qu'a charger en memoire le code compacte, la routine de
decompression, l'executer, puis executer le programme decompacte s'il s'agit
d'un executable.
Pour plus d'explications, je vous incite a lire la notice de la routine de 
decompactage de PUCRUNCH, sur http://tj.gpa.free.fr.

Bon crunchage !
