CODINGDEMONIAK ★ COURS d'ASSEMBLEUR par DEMONIAK (07 mai 2006) ★

Cours d'assembleur par Demoniak - Partie 7 : les vecteurs système IICoding Demoniak

Partie 7 : les vecteurs système II

LES SONS

BCA7 : Initialise le gestionnaire sonore.
Ce vecteur coupe tous les sons joues ou en attente et réinitialise les différentes enveloppes (volume, fréquence).
CA : Aucune.
CF : les registres AF,HL,BC et DE sont modifies.

BCAA: Place un son sur le canal demande (l'instruction SOUND du Basic)
CA : HL pointe sur une table de données sonores de 9 octets qui doit se trouver dans la zone Ram entre &4000 et &C000.
CF : Si le canal n'est pas sature (cinq sons en attente) le son est place sur le canal et CARRY = 1, HL est modifie sinon, CARRY = 0.
En tout cas, les registres AF, BC, DE et IX sont modifies.
La table des données n'est pas organisée comme la commande SOUND du Basic. Voici l'ordre de placement des paramètres:

ORG 40000
LD HL,SONS
JP &BCAA
SONS DEFB 1 ;CANAL
DEFB 2 ;ENVELOPPE DE VOLUME
DEFB 3 ;ENVELOPPE DE TON
DEFW 1000 ;FREOUENCE
DEFB 31 ;BRUIT
DEFB 15 ;VOLUME
DEFW 300 ;DUREE

Cet exemple équivaut à la commande SOUND 1,1000,300,15,2,3,31. Vous constatez que la fréquence tout comme la durée du son sont placées sur deux octets.

Notez enfin que les valeurs négatives remplissent les mêmes rôles qu'en Basic .

BCAD : Teste l'état des canaux sonores (l'instruction SQ du Basic).
La valeur d'entrée pour les trois canaux sonores sont 1 pour le canal A, 2 pour le canal B et 4 pour le canal C.

Le mélange des canaux n'est pas réalisable par ce vecteur.
CA : A = Numéro du canal à tester.
CF : A = l'état du canal.
Les registre F, BC, DE et HL sont modifies.

BCB6 : Arrête momentanément tous les sons.
CA: Aucune.
CF : Les registres AF, BC et HL sont modifies.

BCB9 : Libère les sons arrêtes avec la routine BCB6.
CA : Aucune (si ce n'est l'utilisation de la routine précédente).
CF : Les registres AF, BC, DE et IX sont modifies.

BCBC : Création d'une enveloppe de volume (ENV).
CA : A = numéro de l'enveloppe (1 it 15).
HL pointe sur les données de l'enveloppe (15 octets).
CF : HL est augmente de 16, AF, HL et BC sont modifies.

BCBF : Création d'une enveloppe de fréquence (ENT).
CA : A = numéro de l'enveloppe (1 it 15).
HL pointe sur les données de l'enveloppe (15 octets).
CF: HL est augmente de 16, AF, HL et BC sont modifies.

BCC2 : Donne l'adresse des données d'une enveloppe de volume.
CA : A = numéro de l'enveloppe (1 it 15).
CF : Si OK, CARRY = 1, HL pointe sur les données et BC = la longueur de l'enveloppe.
Les registres F et DE sont modifies.

BCC5: Donne l'adresse des données d'une enveloppe de fréquence.
CA : A = numéro de l'enveloppe (1 it 15).
CF : Si OK, CARRY = 1, HL pointe sur les données et BC = la longueur de l'enveloppe.
Les registres F et DE sont modifies.

Nous verrons, des le prochain numéro, la suite des vecteurs utilisés pour les accès disque, le mode graphique sans oublier le gestionnaire écran.

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. 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 : que 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 clipping.
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.

Page précédente : Cours d'assembleur par Demoniak - Partie 6 : les vecteurs système

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