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

5/10.3.2 Compacteurs monochromes en mode 1Coding Classeurs Weka

5/10.3.2 Compacteurs monochromes en mode 1

Nous allons étudier :

  • Le compactage d'objets monochromes selon deux principes :
    • le tassement d'octets,
    • la recherche de répétition.
  • Le décompactage et l'affichage d'objets compactés selon les deux principes.

I. Les compacteurs

TASSEMENT D'OCTETS

Nous avons vu plus haut (reportez-vous à la description du sous-programme ASSEMBLEUR MBG, chapitre 10.2 de la partie 5) quelle était la structure de l'écran en MODE 1.

Si un objet affiché sur l'écran possède seulement deux couleurs :

La couleur de fond et une couleur de motif, il apparaît que l'on peut réduire son occupation en mémoire.

Le principe adopté est le suivant :

Quatre bits sur les huit utilisés pour définir un groupe de 4 pixels sont essentiels pour définir totalement le dessin monochrome.

Remarque :

Dans la suite, nous parlerons de ce compacteur en le désignant par le nom « type 1 ».

  • Si PEN 1 est la couleur du dessin, les 4 bits seront ceux de poids faible,
  • Si PEN 2 est la couleur du dessin, les 4 bits seront ceux de poids fort,
  • Si PEN 3 est la couleur du dessin, les 4 bits seront au choix, ceux de poids faible ou ceux de poids fort.

Cette distinction des couleurs apparaît lignes 1450 à 1480 :

  • Ligne 1450 : Extraction d'un octet du dessin,
  • Ligne 1460 : PEN 1,
  • Ligne 1470 : PEN 2,
  • Ligne 1480 : PEN 3.

REPETITION DE MOTIFS

Un deuxième type de compactage intéressant et facilement mis en oeuvre consiste à compter le nombre d'octets (groupe de 4 pixels en MODE 1 ) identiques sur une ligne élémentaire, et à coder cette répétition :

Nombre de répétitions, Octet, Terminateur.
                      \___________|

Remarque :

Dans la suite, nous parlerons de ce compacteur en le désignant par le nom « type 2 ».

L'écriture du sous-programme BASIC correspondant à ce compactage est immédiate.

Pour chaque ligne du bloc à compacter, une recherche de répétition au niveau octet est effectuée puis codée :

  • Lignes 1610 à 1630 : Recherche de répétition
  • Ligne 1640 : Mémorisation
  • Ligne 1660 : Terminateur

Entrez le nom de l'image à compacter, puis délimitez les coins supérieur

gauche et inférieur droit de la portion d'image à compacter en vous servant des touches-flèches (la validation des deux coins se fait par la touche « ENTER »).

Un certain temps, proportionnel aux dimensions du dessin à compacter et à la lenteur du BASIC (!) est nécessaire pour le calcul des fichiers compactés.

Le programme affiche alors la place occupée par le compactage de type 1 et 2.

Le programme de compactage des types 1 et 2 est le suivant :

1000 REM Compacteur graphique monochrome simple
1010 '*********************************************************
1020 REM Chargement de l'image d'écran concernee
1030 '
1040 INK 0,0: INK 1,10:BORDER 0:MODE 1
1050 PRINT"Entrez le nom de l'image a traiter,"
[INCOMPLET]

Lignes 1040 à 1100 : Initialisation et présentation
Ligne 1100 : Chargement de l'image à traiter
Lignes 1140 à 1170 : Interface Assembleur avec la routine « DOTPOS » (Reportez-vous au chap. 10.2 de la partie 5 pour avoir plus de détails.)
Lignes 1190 à 1240 : Définition des coins supérieur gauche et inférieur droit du bloc à compacter.
Lignes 1400 à 1430 : Interfaçage avec DOTPOS
Lignes 1440 à 1510 : Compactage
Ligne 1530 : Mémorisation
Ligne 1540 : Terminateur (&FFAA)
Lignes 1580 à 1660: Compacteur de type 2
Lignes 2000 à 2230 : Sauvegarde d'un des compactages

La routine du FIRMWARE « DOTPOS » est utilisée dans ce programme. Reportez-vous au chapitre 2.7 de la partie 4 pour avoir plus de détails à ce sujet.

II. Les décompacteurs-afficheurs

Le programme de compactage « type 1 et 2 » ne serait pas complet sans ce petit programme d'affichage de fichiers compactés de type 1 et 2.

Entrez le nom du fichier compacté par le programme précédent, le type de compactage (1 ou 2) et la position graphique sur l'écran en bas et à gauche du bloc à afficher (0 < X < 329 et 0 < Y < 200). Le fichier est chargé et l'affichage est immédiat.

Le programme d'affichage est le suivant :

1000 ' Affichage de fichiers compactes de type 1 ou 2
1010 '
1020 'Decompacteur de type 1
1030 '
1040 FOR I=&A00F TO &A0DF : READ A:POKE I, A: NEXT
[INCOMPLET]

Lignes 1040 à 1160 : Chargement des décompacteurs
Lignes 1200 à 1210 : Programme d'interfaçage entre le BASIC et les décompacteurs
Lignes 1250 à 1300 : Entrée du type de compactage et chargement du fichier compacté
Lignes 1320 à 1380 : Interfaçage ASSEMBLEUR
Ligne 1390 : Affichage

Deux sous-programmes sont écrits en ASSEMBLEUR pour minimiser leur temps d'exécution. Il s'agit des programmes de décompactage/affichage.

Décompactage de type 1 :

Ce décompacteur occupe les lignes 1040 à 1080 dans le listing BASIC. Le principe de décompactage est simple. Il consiste à isoler les quartets de poids fort puis faible de chaque octet et à les afficher en tant qu'octets, jusqu'à la rencontre du code terminateur &FFAA qui marque la fin du fichier graphique compacté.

La routine du FIRMWARE « DOTPOS » est utilisée pour calculer l'adresse de la ligne élémentaire suivante. Reportez-vous au chap. 2.7 de la partie 14 pour avoir plus de détails.

1;
2 ; Afficheur de fichiers graphiques
3 ; de type 1
4 ;
5 ; Entree : HL=à Fichier
6 ; Pt d'entres : TYPE1
7 ; Sortie : Tts registres écrasés
8 ;
9 ORG 9AAFH
10 LOAD 9AAFH
11 ;
12 ; Réservation de zones
[INCOMPLET]



Décompacteur de type 2 :

Il occupe les lignes 1120 à 1160 du listing BASIC.

Le principe est différent du précédent. Il consiste en l'isolement de deux octets : le deuxième représente le motif à répéter, le premier le nombre de répétitions à effectuer. Le deuxième octet est affiché n fois et l'opération se répète jusqu'à la rencontre du terminateur &FFAA.

 

Comme dans le sous-programme précédent, la routine du FIRMWARE « DOTPOS » est utilisée pour calculer l'adresse de la ligne élémentaire suivante lors de l'affichage.

1 ;
2 ; Afficheur de fichiers graphiques
3 ; de type 2 compactes par COMPAC2
4 ;
5 ; Entree : HL=à Fichier
6 ; Pt d'entree : TYPE2
[INCOMPLET]

Page précédente : 5/10.3.1 - Compactage filiforme (!) (1er Complément)
★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» WEKA  5-10-3-2-Compacteurs  monochromes  en  mode  1-I-Les  compacteursDATE: 2019-03-29
DL: 5 fois
TYPE: PDF
SIZE: 165Ko
NOTE: 4 pages/PDFlib v1.6

» WEKA  5-10-3-2-Compacteurs  monochromes  en  mode  1-II-Les  decompacteurs-afficheursDATE: 2019-03-29
DL: 6 fois
TYPE: PDF
SIZE: 516Ko
NOTE: 14 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 113 millisecondes et consultée 353 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.