CODINGCLASSEURS WEKA ★ Comment exploiter toutes les ressources et augmenter les performances de votre AMSTRAD CPC ★

5/10.3.1 - Compactage filiforme (!)|1er Complément)Coding Classeurs Weka

5/10.3.1 Compactage filiforme

Nous allons étudier :

  1. Le principe de compactage d'objets filiformes.
  2. Le principe de décompactage et d'affichage de fichiers filiformes.

I. Le compacteur

Les dessins monochromes définis par leurs contours (dessins du genre « fil de fer ») pourront être énormément compactés (jusqu'à un facteur 20 !) par le programme qui va suivre.

Le procédé de compactage est très simple. Il consiste en :

  • la définition d'un point quelconque appartenant au dessin,
  • le codage de la direction dans laquelle il faut se déplacer pour atteindre le point suivant.

Le programme de compactage filiforme défini est écrit en BASIC et occupe les lignes 1200 à 1450.

Entrez le nom de l'écran à compacter. Cet écran aura été créé par le programme de tracé défini au chapitre 10.1 de la partie 5.

Déplacez ensuite le curseur graphique (grâce aux touches-flèches) jusqu'à rencontrer un point allumé sur le dessin.

Appuyez sur la touche « ENTER ». Le programme trace alors d'une autre couleur (PEN 2) le contour de la forme jusqu'à aboutir à une discontinuité. Arrivé à ce point, le tracé s'arrête. Il faut alors déplacer le curseur pour « sauter » la discontinuité. Dès que le curseur se trouve sur un autre point (voisin) du dessin, appuyez sur la touche « ENTER », et ainsi de suite jusqu'à ce que tout l'objet ait changé de couleur.

Appuyez alors deux fois sur la touche « ESC ». Le programme indique la place occupée par le fichier compacté et propose une sauvegarde magnétique ou un retour au compactage (appui sur « ENTER »).

Le programme de compactage est le suivant :

1000 REM ****************
1010 REM Codage de formes
1020 REM ****************
1030 '
[INCOMPLET]

Lignes 1070 à 1090 : Chargement des sous-programmes Assembleur
Lignes 1110 à 1160 : Initialisation du programme
Lignes 1200 à 1390 : Codage de la forme
Lignes 1430 à 1450 : Calcul optimal du prochain point
Lignes 1490 à 1630 : Positionnement du curseur graphique sur le prochain départ
Ligne 1710 : Retour au compactage si appui sur ENTER
Ligne 1720 : ou sortie avec sauvegarde du fichier compacté

Une technique intéressante employée dans ce programme est la recherche du prochain point à allumer en créant le moins possible de discontinuités. Cette technique est basée sur le principe suivant :

Tout point de l'écran peut être entouré de huit façons différentes :

Appelons « t » le contexte actuel, « t + 1 » le contexte après un déplacement, et « t + n » le contexte après n déplacements.

Si, pour chacun de ces huit points, nous calculons le nombre de points immédiatement contigus P(i) (et donc le nombre de déplacements possibles en t + 2), il apparaît que :

8
Min (P(i))
i = 0

donnera le point i ayant le moins de chance de provoquer une discontinuité (Calcul de Min (P(i)) effectué ligne 1440, et calcul de P(i) effectué ligne 1430).

Remarque importante :

La forme devra OBLIGATOIREMENT être dessinée en PEN 1. Référez-vous aux lignes 1230 à 1300 du listing qui explique le pourquoi de la chose : le calcul du prochain point est effectué en comparant le résultat de la fonction TEST (qui donne la couleur d'un point) à 1.

Le programme défini ci-dessus utilise des sous-programmes écrits en langage d'assemblage pour l'affichage des dessins filiformes.

L'utilisation du langage d'assemblage est quasi obligatoire pour réduire le temps d'affichage qui, malgré tout, n'est pas négligeable (une seconde pour 2 000 points). Le principe est simple. Le fichier compacté généré par le programme précédent possède la structure suivante :

Si un des bits indicateur de saut est à un, un déplacement relatif sur 7 bits suit :

0 = vers la droite ou vers le haut
1 = vers la gauche ou vers le bas

* Remarque : b est l'abréviation de bit

Avec la convention de codage de déplacement suivante :

Partant de la structure de ce fichier, voyons comment écrire le programme de tracé.

d'où le programme d'assemblage suivant :

1 ;
2 ; Afficheur de formes 4 bits
3 ;
4 ; Entree: HL=à de la forme
5 ; Sortie: Tts registres écrasés
6 ; Pt d'entree: AF0
7 ;
8 ORG 9000H
9 LOAD 9000H
[INCOMPLET]



Remarque:

Ce programme utilise la routine du FIRMWARE « PLOT RELATIVE ». Reportez-vous en au chapitre 2.7 de la partie 4 pour avoir plus de détails.

II. Le Décompacteur/Afficheur

Ce programme écrit en BASIC intègre le sous-programme précédent et permet d'afficher simplement une forme à l'écran.

Pour l'utiliser, entrez le nom de la forme à afficher et son implantation en mémoire.

Cette implantation sera toujours &3000 pour une utilisation standard du programme de codage. Pour pouvoir afficher plusieurs formes, il faudra leur donner des adresses d'implantation différentes. Dans ce cas, modifiez le programme de codage lignes 1160, 1690 et 1720 en conséquence. Après avoir chargé la ou les formes, leur dessin apparaît à l'écran.

Le programme d'affichage est le suivant :

1000 REM ****************************
1010 REM Affichage de -formes codees
1020 REM ****************************
1030 '
1040 'Initialisation
[INCOMPLET]

Lignes 1060 à 1090 : Présentation
Lignes 1130 à 1190 : Chargement du sous-programme afficheur
Lignes 1200 à 1210 : Chargement de l'interface BASIC/ASSEMBLEUR
Lignes 1250 à 1350 : Saisie des formes à afficher
Lignes 1390 à 1460 : Affichage des formes.

Les sous-programmes écrits en langage d'assemblage utilisés sont :

  • le programme d'affichage défini dans le compacteur filiforme,
  • un programme d'interfaçage avec le BASIC qui consiste à donner dans HL la première adresse de la forme à afficher. Cette adresse est décomposée en poids fort et poids faible Ligne 1300.

Page précédente : 5/10.3 - Utilitaires de compactage
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» WEKA  5-10-3-1-Compactage  filiformeDATE: 2019-03-29
DL: 7 fois
TYPE: PDF
SIZE: 442Ko
NOTE: 13 pages/PDFlib v1.6

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 136 millisecondes et consultée 404 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.