La compression de fichiers texte




OBJECTIF
--------

     Nous allons  voir rapidement comment faire une petite routine
de compression de texte. Je dis rapidement et petite car écrire ce
genre  d'algorithme est très simple et accessible à tous. Et puis,
c'est  un  bon  moyen  de commencer dans la compression de données
sans s'attaquer tout de suite a un gros morceau...

     Pour compresser c'est assez simple. Je vais prendre l'exemple
de  la  prise  de notes. On remplace souvant un mot par une lettre
pour  aller plus rapidement. Ainsi, on écrit généralement 'm' pour
'même'  ou  comme en math ou en physique : 'W' pour 'travail', 'D'
pour 'domaine', etc.


METHODE
-------

     Notre  routine utilisera le même principe. C'est assez simple
en  codant  des séquences répétitives par des codes ASCII non uti-
lisés.  Par  exemple,  on  remarque  que la sequence 'ENT' revient
souvent.  Les  codes  ASCII courament utilisés allant de 32 a 140,
il  nous  reste donc les codes de 141 a 255. Ce qui nous permet de
coder 115 séquences différentes.

     Il  nous  faut donc une table contenant toutes ces séquences,
le code ASCII par lequel nous les remplacerons et un autre paramè-
tre : leur  taille.  Celle-ci  nous permettra de savoir de combien
avancer dans la table à chaque comparaison de nouvelle sequence.


SOURCE:
-------

     Je  vous  laisse le soin de regarder les sources, suffisament
commentés... Ils sont au nombre de 3:

     PACK.S         routine de compression
     UNPACK.S       routine de décompression
     COMPRESS.S     programme d'exemple

Plus deux fichiers:

     SEQUENCE.ASC   la table des séquences à inclure
     SEQUENCE.BIN   même chose déjà assemblée

     Les séquences à coder sont au label 'séquences'. La table ac-
tuelle  n'est  nullement la meilleure et la plus rapide. A vous de
trouver  les  séquences  les plus courament utilisées Vous pourrez
ainsi  éditer  votre  table, puis la sauver sous 'sequence.asc' et
l'inclure  dans  votre source. Une fois que vous aurez définitive-
ment  créer  votre  table,  assemblez-la  puis faites un incbin de
celle-ci...


APPLICATION:
------------

     Ces  routines  seront  utiles  dans  les jeux d'aventure, par
exemple.  Ceux-ci utilisent beaucoup les fichiers texte. En créant
une  routine détournant le TRAP #1, on pourra décompresser les fi-
chiers  textes  pendant l'exécution du jeu. A moins, bien sûr, que
vous n'ayez fait votre propre soft et que vous y intégrez les rou-
tines (pour les fichiers d'aide par exemple...). C'est aussi utile
pour  les diskmags... (pub!). Cela peut aussi être utile pour com-
presser  des fichiers sources comme l'assembleur. En effet, celui-
ci  comporte  environ  70  mnémoniques d'une longueur moyenne de 3
octets  chacune...  On gagnera ainsi énormément de place en codant
toutes  ces mnémoniques! Allez, utilisez ces routines sans scrupu-
les dans vos soft!


                                                        Supernova
                                                       (3615 RTEL)



[ Retour au sommaire ]