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 ]