CODINGLA BIBLE DU CPC 6128

La bible du CPC 6128 : 1.03.02 La structure des registres du gâte array

L'exécution de toutes les tâches que nous avons décrites nécessite que les données soient stockées dans le GA. Le nombre exact des registres internes n'est pas connu mais nous pensons pouvoir décrire les registres les plus importants.
Comme tous les autres éléments du CPC, le GA est appelé à travers
l'adressage de port.

Il occupe l'adresse &7Fxx. Il en résulte donc que le bit d'adresse A15 doit être low et le bit d'adresse Al4 high. Les autres bits d'adresse (A12 à A8) doivent être mis (sur le niveau high) puisque les autres éléments périphériques sont décodés d'une manière semblablement incomplète. Sur ces périphériques, les entrées de sélection ne sont également reliées qu'aux différents bits d'adresse.

L'état de l'octet d'adresse inférieur est sans importance pour le décodage et n'importe quelle valeur peut y figurer. On peut distinguer en tout trois différents registres. Les deux premiers registres sont liés à la production des couleurs, plus précisément aux affectations de couleur fixées avec PEN et INK.

Le premier registre reçoit l'adresse dans laquelle la valeur de couleur doit être écrite. Nous le désignerons désormais sous le nom de registre du numéro de couleur (reg NC).

La valeur de la couleur elle-même peut être ensuite écrite dans le second registre (sous la même adresse de port!). Nous appellerons ce registre registre de valeur de couleur (reg VC).

Le troisième registre est un registre multifonctions (reg MF) qui détermine le mode d'écran et la configuration de la mémoire. La sélection des différentes possibilités y est déterminée par les différents bits à l'intérieur du registre.

Dans tous les registres du GA, il n'est possible que d'écrire. Il est IMPOSSIBLE de lire les valeurs de ces registres.

Comme le GA ne peut être appelé qu'à travers une seule adresse de port, il faut qu'il y ait un moyen de distinguer les différents groupes. Cette distinction est opérée grâce aux deux bits supérieurs de l'octet de donnée. Les combinaisons possibles sont:

Bit 7 Bit 6
0 0 ;Ecrire une valeur dans le reg NC
0 1 ;Ecrire une valeur de couleur dans le reg VC choisi
1 0 ;Ecrire une valeur dans le reg MF
1 1 ;Utilisé sur le 6128 pour la commutation de mémoires


Mais que représentent les registres de numéro de couleur et de valeur de couleur?
Fondamentalement, ces registres correspondent aux instructions PEN et INK. L'instruction PEN modifie la couleur d'écriture actuelle sur le moniteur. L'affectation d'un numéro PEN à une couleur peut être fixée avec l'instruction INK. Il faut pour cela indiquer le numéro à modifier et la valeur souhaitée. Ce sont exactement ces fonctions qu'exécutent ces deux registres. Le numéro de la couleur à modifier est placé dans le registre NC, après quoi la valeur de couleur souhaitée est écrite dans le GA.

Pour modifier par exemple la couleur affectée à PEN 1, il faut employer les instructions suivantes:

OUT &7F00,&X00000001:OUT &7F00,&X010XXXXX


Dans la première instruction OUT, les bits 6 et 7 valent 0 et les bits 0 à 3 contiennent le numéro de la couleur à modifier. Dans notre exemple, il s'agit du numéro 1. Le bit 5 n'a pas de fonction, le bit 4 a une fonction spéciale sur laquelle nous reviendrons bientôt.
Dans la seconde instruction OUT, les bits 6 et 7 ont été choisis de façon à ce que le registre VC soit sélectionné. Les bits 'X' correspondent simplement à la valeur de couleur. 5 bits permettent en principe de sélectionner 32 couleurs différentes mais il n'y a que 27 couleurs différentes possibles. Les 5 valeurs de couleur restantes sont identiques à d'autres couleurs.

Si vous essayez cet exemple en Basic, vous constaterez que le succès escompté se fait attendre. Tout ce que vous obtenez, c'est un rapide flash de la nouvelle couleur.
La cause en est une particularité du logiciel du CPC. Toutes les couleurs sont représentées en "clignotement". Vous ne le remarquez pas parce que le clignotement ne se fait pas entre couleurs différentes, mais entre couleurs identiques. Lors de chaque commutation entre deux couleurs, tous les paramètres pour le GA sont chargés à nouveau. Mais si, avant les instructions OUT, vous utilisez l'instruction SPEED INK 255,255, vous pourrez observer nettement plus longtemps au moins lors de quelques tentatives l'effet de ces instructions.

Venons-en maintenant à l'explication du bit 4 du reg NC que nous avions différée jusqu'ici. Si ce bit est lors de l'accès fixé sur le registre, l'information des bits 0 à 3 sera ignorée et la valeur de couleur transmise par la prochaine instruction OUT sera interprétée comme nouvelle couleur du bord.

Le registre MF est adressé lorsque, dans l'instruction OUT, le bit 7 est mis et le bit 6 est low. Les autres bits de ce registre ont la signification suivante:

Bit 5: Aucune fonction?
Bit 4: 1 = annuler le compteur V Sync
Bit 3: 1 = déconnecter ROM &C000 à &FFFF
Bit 2: 1 = déconnecter ROM &0000 à &3FFF
Bit 1: Mode écran
Bit 0: Mode écran

Nous n'avons rien pu découvrir jusqu'ici sur la fonction du bit 5.
Si le bit 4 est mis, la chaîne de division pour l'impulsion d'interruption est annulée et le processus de comptage des impulsions V Sync recommence du début. Il serait ainsi possible d'allonger l'intervalle entre deux impulsions d'interruption. Vous pouvez constater cette fonction en Basic grâce à la boucle de programme suivante:

10 OUT &7F00,&X10010110:GOTO 10

Après avoir lancé cette ligne de programme, vous constatez que l'ordinateur est complètement bloqué et qu'un RESET avec SHIFT/CTRL/ESC n'est même plus possible. Cette ligne provoque en effet une annulation si rapide du registre de comptage, que plus aucune impulsion d'interruption ne peut se produire. Et comme le clavier est interrogé par la routine d'interruption, vous ne pouvez plus réutiliser votre CPC qu'après l'avoir éteint puis rallumé.

Les bits 2 et 3 déterminent la configuration de la mémoire actuelle. Si l'un des bits est mis, c'est la Ram que le processeur rencontrera dans la zone d'adresse correspondante, lors de ses accès en lecture, si ces bits sont nuls, le processeur lira des données dans la ROM.
Une manipulation désordonnée de ces bits débouche au minimum sur des messages d'erreur mais le "plantage" complet du système ou un Reset sont également possibles.
Les bits restants, 0 et 1, déterminent le mode actuel de l'écran. Les combinaisons possibles sont:

Bit 1 Bit 0
0 0 ;Mode 0, 20 colonnes, 16 couleurs
0 1 ;Mode 1, 40 colonnes, 4 couleurs
1 0 ;Mode 2, 80 colonnes, 2 couleurs
1 1 ;Comme Mode 0, mais sans clignotement


Si vous avez essayé notre programme d'une ligne pour supprimer les interruptions en mode 1, vous aurez certainement constaté une très curieuse modification des caractères sur l'écran. Dans cet exemple, nous avons choisi comme mode écran le mode 80 colonnes et changé de mode sans vider l'écran. Les caractères représentés se présentent comme s'il manquait des points au milieu de chaque caractère. Vous trouverez l'explication de ce phénomène à la fin du chapitre suivant, lorsque nous décrirons la structure de l'écran et la représentation des caractères.

★ ANNÉE: ???

Page précédente : La bible du CPC 6128 : 1.03.01 L'affectation des pôles de connexion du gâte array
Je participe au site:

» 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 081 millisecondes et consultée 1243 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.