CODING ★ AVE Cutter ★

Bidouilles ACPC n°44 - Les vecteurs system (2/6)

Un titre comme ce lui-là, ça vous la coupe non? Comme vous avez dû le comprendre, nous allons ce mois-ci passer en revue la suite des vecteurs que nous avions commencés à énumérer dans le numéro précédent. Après le son, le clavier et le mode texte, nous allons attaquer ce qui suit.

Comme nous le disons souvent et comme nous aimons nous répéter, les vecteurs, même s'ils ne sont pas hyper optimisés ni superbement adaptés, n'en restent pas moins de super outils. Faciles d'emploi et collant bien à notre machine, il suffit de leur donner quelques indications, d'appeler la bonne adresse, et de récolter le boulot tout frais pondu sans s'être cassé la margoulette sur quelque problème de tempo ou de décalage de m..., provoqué par je ne sais quel circuit en vadrouille. Bref, je pose les registres, j'appelle à l'aide et je ramasse mes billes sont les mamelles de l'utilisation de ces vecteurs. Trop simples pour être délaissés.
Comme nous l'avions fait le mois dernier, nous vous donnons 4 indications par vecteur passé en revue:

  1. l'adresse d'appel (indispensable voire primordiale) ;
  2. un bref commentaire sur la raison d'être (ce qu'il fait) ;
  3. les conditions d'appel passées dans les registres;
  4. les conditions finales, c'est-à-dire les résultats de l'action émise ainsi que les registres ou zones modifiés.

Avec cela, il ne vous reste plus qu'à caler sans vous faire coller ni recaler: du culot, saperlipopette.

LE GESTIONNAIRE GRAPHIQUE

Si l'écran du CPC est toujours en mode graphique, il existe des primitives pour la gestion texte et la spécialisation graphique. Nous allons voir ensemble la seconde rubrique, car la première a été étudiée le mois passé. Sachez tout de même, pour la suite, qu'une coordonnée dite absolue se réfère à l'origine (au point 0,0) de l'écran, alors qu'une coordonnée relative se réfère à la position actuelle du curseur. Exemple: le curseur étant en 10,10, un positionnement relatif de 10,10 le forcera en 20,20 alors qu'un déplacement absolu des mêmes valeurs ne l'aurait pas déplacé. Sur ce, c'est parti...

BBBA : initialisation du gestionnaire graphique
Le stylo prend la couleur 1, le curseur se positionne en bas à gauche de l'écran. Tout est remis à zéro.

  • CA :
    • Rien à faire;
  • CF :
    • Pas de retour;
    • Les registres AF, BC, DE et HL sont modifiés.

BBBD : remise à zéro du gestionnaire
Je dirai que cet appel ne change rien à rien. Le curseur reste à sa place, la couleur ne change pas... Bref, tout est comme si de rien n'était.

  • CA :
    • Queue, dalle;
  • CF :
    • Ma cache;
    • Les registres AF, BC, DE et HL sont modifiés.

BBC0 : positionnement absolu du curseur
Avec cet appel, vous réalisez le MOVE Basic. Positionnement aux coordonnées absolues à l'écran.

  • CA :
    • DE contient la position horizontale X (abscisse) ;
    • HL contient la position verticale y (ordonnée) ;
  • CF :
    • Bézef;
    • Les registres AF, BC, DE et HL sont modifiés.

BBC3 : positionnement relatif du curseur
En Basic, on dirait MOVER. Le déplacement du curseur est relatif à sa position actuelle.

  • CA :
    • DE contient le décalage horizontal;
    • HL contient le décalage vertical;
  • CF :
    • Blop ;
    • Les registres AF, BC, DE et HL sont modifiés.

BBC6 : lecture de la position du curseur
Le curseur est sous Basic en XPOS,YPOS. Ce sont ces deux variables que nous allons récupérer d'un coup d'un seul.

  • CA :
    • la couleur de la bicyclette du facteur, le vendredi;
  • CF :
    • DE contient XPOS ;
    • HL contient YPOS ;
    • Le registre AF est modifié.

BBC9 : positionnement de l'origine du curseur
ORIGIN n'est pas ici le nom de la société d'édition bien connue, mais l'endroit de l'écran servant de références aux positionnements absolus du curseur.

  • CA :
    • DE contient la position horizontale X (abscisse) ;
    • HL contient la position verticale y (ordonnée) par rapport au coin en bas à gauche de l'écran;
  • CF :
    • Il fait beau, n'est-il pas?
    • Les registres AF, BC, DE et HL sont modifiés.

BBCC : lecture de l'origine des tracés
Comme ci-dessus (BBC9) mais en lecture.

  • CA :
    • Honni soit qui mal y pense;
  • CF :
    • DE contient l'abscisse;
    • HL contient l'ordonnée;
    • Les registre sont préservés.

BBCF : définitions des limites horizontales de la fenêtre graphique
Il est possible de forcer un cliping sur l'écran graphique.
Ainsi, tout tracé ne débordera pas du rectangle défini.
Ce vecteur permet de délimiter horizontalement cette zone.

  • CA :
    • DE contient la position du bord droit;
    • HL contient la position du bord gauche;
  • CF :
    • L'écran graphique est modifié;
    • Les registres AF, BC, DE et HL sont modifiés.

BBD2 : définitions des limites verticales de la fenêtre graphique
Ce vecteur permet de délimiter verticalement la zone de cliping.

  • CA :
    • DE contient la position du bord bas;
    • HL contient la position du bord haut;
  • CF :
    • la carry sonnera trois fois;
    • les registres AF, BC, DE et HL sont modifiés.

BBD5 : lecture des limites horizontales de la fenêtre graphique
Ce vecteur permet de lire les limites horizontales de la zone de clipping.

  • CA :
    • None ;
  • CF :
    • DE contient la position du bord droit;
    • HL contient la position du bord gauche;
    • Le registre AF est modifié.

BBD8 : lecture des limites verticales de la fenêtre graphique
Ce vecteur permet de lire les limites verticales de la zone de cliping.

  • CA :
    • DE contient la position du bord bas;
    • HL contient la position du bord haut;
  • CF :
    • Pas de témoin;
    • Le registre AF est modifié.

BBDB : effacement de la fenêtre graphique
Le ménage à l'écran

  • CA :
    • Rien du tout;
  • CF :
    • Du tout;
    • Les registres AF, BC, DE et HL sont modifiés.

BBDE : positionne la couleur des tracés (stylo)
Quoi de plus conventionnel.

  • CA :
    • A contient la couleur;
  • CF :
    • Chouette;
    • Le registre AF est modifié.

BBE1 : lecture de la couleur des tracés (stylo)
Et de plus, pratique.

  • CA :
    • Hibou;
  • CF :
    • A contient la couleur;
    • Le registre AF est modifié.

BBE4 : positionnement de la couleur du fond
Je dirai même plus.

  • CA :
    • A contient la couleur;
  • CF :
    • Sans;
    • Le registre AF est modifié.

BBE7 : lecture de la couleur du fond Plus!

  • CA :
    • C'est à quel sujet ?
  • CF :
    • A contient la couleur;
    • Le registre AF est modifié.

BBEA : positionnement d'un point à l'écran en coordonnées absolues
On connaît cela.

  • CA :
    • DE contient l'abscisse;
    • HL contient l'ordonnée;
  • CF :
    • Califourchon;
    • Les registres AF, BC, DE et HL sont modifiés.

BBED : positionnement d'un point à l'écran en coordonnées relatives à la position actuelle du curseur
Rien de neuf.

  • CA :
    • DE contient l'abscisse relative;
    • HL contient l'ordonnée relative;
  • CF :
    • Les mots me manquent pour définir ce vide;
    • Les registres AF, BC, DE et HL sont modifiés.

BBF0 : teste un point aux coordonnées absolues spécifiées
Je me lasse.

  • CA :
    • DE contient l'abscisse;
    • HL contient l'ordonnée;
  • CF :
    • A contient la couleur du point;
    • Les registres BC, DE et HL sont modifiés.

BBF3 : teste un point aux coordonnées relatives
Dans la vie, tout est relatif.

  • CA :
    • DE contient l'abscisse relative;
    • HL contient l'ordonnée relative;
  • CF :
    • A contient la couleur du point;
    • Les registres BC, DE et HL sont modifiés.

BBF6 : tracé d'une droite en absolu
Le point de départ est la position actuelle du curseur. Seuls les points d'arrivée doivent être précisés en coordonnées absolues.

  • CA :
    • DE contient l'abscisse du point d'arrivée;
    • HL contient l'ordonnée du point d'arrivée;
  • CF :
    • Gardez la ligne;
    • Les registres AF, BC, DE et HL sont modifiés.

BBF9 : tracé d'une droite en relatif
Le point de départ est la position actuelle du curseur.

  • CA :
    • DE contient l'abscisse relative du point d'arrivée;
    • HL contient l'ordonnée relative du point d'arrivée;
  • CF :
    • Suivez la ligne jaune;
    • Les registres AF, BC, DE et HL sont modifiés.

BBFC : écriture d'un caractère en mode graphique à la position courante du curseur

  • CA :
    • A contient le code ASCII du caractère à écrire;
  • CF :
    • Yop ;
    • Les registres AF, BC, DE et HL sont modifiés.

LE GESTIONNAIRE D'ECRAN

Comme vous l'avez vu, les vecteurs précédents se contentaient de modifier la mémoire vidéo sans faire appel au hardware. Nous allons maintenant énumérer les vecteurs qui s'interfacent entre le matériel et le logiciel de haut niveau. Conversion de numéros d'encre en valeurs pokables, utilisation des décalages d'écran, gestion des modes... Sachez encore la chose suivante: ce que nous nommons un masque est une configuration binaire qui permet d'isoler des bits d'un octet. Il offre la possibilité en l'occurrence de ne garder que les bits d'un seul pixel. A
vous de décaler ce masque pour isoler le bon pixel dans l'octet.
Roulez, jeunesse.

BBFF : initialisation totale du gestionnaire
Tout est remis à zéro, les encres, les modes, les adresses...

  • CA :
    • Nada ;
  • CF :
    • Rien;
    • Les registres AF, BC, DE et HL sont modifiés.

BC02 : réinitialisation partielle
Moins bulldozer que la première, elle sert à remettre les meubles en place sans bouleverser le gestionnaire.

  • CA :
    • le vide total;
  • CF :
    • Comme en entrée;
    • Les registres AF, BC, DE et HL sont modifiés.

BC05: positionne l'offset de départ de la mémoire vidéo
Vous connaissez le principe du scrolling ? Avec cela, vous n'aurez plus de mal à le gérer. Tout se fait tout seul. Attention! la position part de 0 et n'utilise donc pas l'adresse réelle mais le déplacement. De plus, le bit de poids faible est inactif. Les valeurs efficaces sont donc toutes les valeurs paires partant de zéro.

  • CA :
    • HL contient l'offset de départ;
  • CF :
    • Aucune;
    • Les registres AF et HL sont modifiés.

BC08: positionne l'adresse de l'écran en mémoire vive
C'est l'octet de poids fort de l'adresse en RAM que vous devez passer à cette routine (#40 ou #CO pour &4000 ou &C000).

  • CA :
    • A contient une des deux valeurs citées;
  • CF :
    • Rien;
    • Les registres AF et HL sont modifiés.

BC0B: lecture de l'adresse de l'écran en RAM
Comme le vecteur précédent mais en lecture.

  • CA :
    • rien;
  • CF :
    • A contient le poids fort de l'adresse visée;
    • Les registres AF et HL sont modifiés.

BC0E : changement de mode
Que dire de plus expressif ?

  • CA :
    • A contient le numéro du mode;
  • CF :
    • Rien;
    • Les registres AF, BC, DE et HL sont modifiés.

BC11 : lecture du mode vidéo courant
Vive la mode.

  • CA :
    • Rien;
  • CF :
    • A contient le numéro du mode;
    • Le registre AF est modifié.

BC14: effacement de l'écran
Le bleu avec le beau ready.

  • CA :
    • Aucune;
  • CF :
    • Non plus;
    • Les registres AF, BC, DE et HL sont modifiés.

BC17 : lecture de la surface de l'écran en caractères
Cela permet de connaître la surface de travail du gestionnaire.

  • CA :
    • rien;
  • CF :
    • B contient le nombre de colonnes de l'écran en caractères;
    • C contient le nombre de lignes en caractères.

BC1A: calcule l'adresse de caractère
Cela permet d'obtenir l'adresse d'un caractère en mémoire vidéo, en fonction des coordonnées passées.

  • CA :
    • H contient la colonne et L la ligne;
  • CF :
    • HL contient l'adresse en RAM;
    • B est la largeur du caractère affiché;
    • Le registre AF est modifié.

BC1D : calcule ('adresse réelle d'un point graphique en fonction de ses coordonnées
Pas de commentaires.

  • CA :
    • DE contient l'abscisse du point;
    • HL contient l'ordonnée du point;
  • CF :
    • HL contient l'adresse réelle du point en RAM ;
    • B+ 1 contient le nombre de pixels par octets;
    • C contient le masque de conversion;
    • Les registres AF et DE sont modifiés.

Je pense que ça suffit pour le moment, nous poursuivrons donc nos investigations le mois prochain.

Sined le coupé (sport), ACPC n°44 juil92, p30-31

Page précédente : Bidouilles ACPC n°43 - Les vecteurs system
★ AMSTRAD CPC ★ DOWNLOAD ★

Other platform tool:
» firmwareMANUALDATE: 2002-12-03
DL: 1459
TYPE: ZIP
SiZE: 60Ko
NOTE:
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Assembleur ACPC n 07 - Initiation : Les INC / DEC / CP
» Coding » Bidouilles ACPC n°35 - Disk Court
» Coding » Bidouilles ACPC n°47 - Les vecteurs system (5/6)
» Coding » Assembleur ACPC n°08 - Initiation : Les CALL / JR
» Coding » Bidouilles ACPC n°40 - Gestion d'erreurs des routines disques
» Coding » Bidouilles ACPC n°46 - Les vecteurs system (4/6)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 432 millisecondes et consultée 2300 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.