CODING ★ Au Cœur du 6128 - le controleur_video (CRTC) ★

Au Coeur du 6128 - le Controleur Video (CPC Revue)

Le contrôleur vidéo de l'AMSTRAD semble Intéresser de nombreux lecteurs, nous allons décrire les différents registres utilisable et le moyen de modifier leurs valeurs. Nous ne sortirons pas du cadre de cette série d'articles et ferons allusion à la ROM système qui régit toutes les initialisations de la vidéo.

LE CONTROLEUR VIDEO HL 6845

Il se présente dans un boîtier 40 pattes et est connecté sur le bus de données du 6128. Du point de vue interne, il est composé de 18 registres numérotés de R0 à' R17, les différentes valeurs affectées à ces registres sont présentes dans la ROM système, à l'adresse 0591. Cette adresse peut-être facilement retrouvée en désassemblant le début de la RAM du CPC:

0000 LD BC # 7F89 ; connexion de la ROM système
0003 OUT (C),C ; la ROM système
0005 JP #0591 ; saut à l'adresse indiquée

A ce niveau, nous trouvons les différentes initialisations des ports (imprimante, canaux sonores). Un prochain article sera consacré aux ports du CPC ( valeurs et utilisations ). En outre, on trouve, à l'adresse 05B5 (05A3 sur 464), une routine de chargement des registres du contrôleur vidéo, ainsi que les valeurs à affecter aux différents registres à l'adresse 05D5 (05C4 sur 464).

On s'aperçoit alors que seulement 16 valeurs sont présentes à ce niveau de la ROM. En effet, les registres 17 et18 du contrôleur sont utilisés lors de la connexion d'un stylo optique.

CONNEXION D'UN STYLO OPTIQUE

A) Les adresses de port du 6845
Avant toute précision sur ces deux registres, étudions les possibilités d'y accéder: le contrôleur est accessible à travers deux adresses:
BC00 est le port du registre d'adresse.
BD00 est le port du registre de données. Prenons un exemple:

10 ENT $
20 Ld BC,#BC00 ; port du registre d'adresse
30 Ld A, #07 ; sélection du registre n° 7 du 6845.
40 out (C),A ; sélection
50 Ld BC, #BD00 ; port du registre de données
60 Ld A, #1D ; va1eur à placer dans le registre sélectionné.
70 out (C) ,A ; écriture de la valeur 10 dans le registre n°7
80 RET

Après avoir lancé ce programme, vous vous apercevrez que l'écran s'est légèrement décalé vers le bas. En effet, le registre n° 7 est celui qui régit la synchronisation verticale (la valeur normale du registre 7 est #1B, à voir dans les valeurs de la ROM système).

B) La connexion du stylo
La connexion du Stylo peut être faite sur le connecteur d'ex. tension du CPC, une borne est prévue à cet effet. Notons que cette borne doit recevoir une impulsion positive lors du passage du spot,

C) Le soft
C'est Ici qu'interviennent les registres 16 et 17 du 6845. Ces derniers contiennent, lors d'une impulsion positive sur la borne light pen, les adresses de la mémoire écran qui étaient écrites à ce moment là, le registre 17 contient l'octet de poids faible, le registre 16, l'octet de poids fort.
Nous vous donnons ci-dessous un exemple de programme de lecture des ports.

10 ENT $
20 Ld BC, # BC11 ; registre 17 sur le port 8C00
30 out (C),C ; sélection
40 Ld BC, # BF00 ; registre de données en lecture
50 IN A,(C)
60 Ld (stock 1),A
70 Ld BC,#BC10 ; registre 16 sur le port
80 Out (C),C
90 Ld BC,#BF00
100 IN A,(C)
110 Ld (stock2),A
120 Ret

Les adresses stock1 et stock2 contiendront, en sortie, l'adresse de la mémoire écran lors du passage du spot.

LES REGISTRES 0 A 15

Registre 0

Le registre représente la durée d'une ligne complète (exprimée en caractères n, la valeur initiale est de #3F, soit 40 caractères x 1,5 pour la durée de retour du spot. Lors de nos essais, nous avons fourni la valeur #3E à ce registre, ce qui a pour effet de décaler l'écran vers la gauche (réduction du bord), inversement on peut "pousser" l'écran vers la droite jusqu'à la valeur #42,

Exemple:

10 ENT $
20 LD BC, #BC00: ; port du registre
30 OUT (C),C ; d'adresse 0
40 LD BC, # BD00 ; port du registre
50 LD A, # 3D ; de données avec
60 OUT (C),A ; valeur 3E
70 RET

NOTE: Ce registre ne peut pas être lu.

Registre 1
le registre contient le nombre de caractères par ligne à l'écran, la valeur initiale est de # 28 (40 décimal!, on le modifie facile' ment, toutefois, lors des essais, vous noterez Que la gestion d'écran est légèrement altérée !

Nous sommes tout de même arrivés à placer 90 caractères par ligne en mode 2, ceci en ayant préalablement mis, dans te registre 0, la valeur #3E pour arriver à faire "rentrer" tous les caractères! le bord droit de l'écran est supprimé.
Ce registre ne peut être lu. .
— Les registres 3, 4 et 5 ne présentent pas un grand intérêt, à nos yeux.

Registre 6
De la même façon que le registre 1, on trouve ici le nombre total de lignes par écran, initialement 25 ,# 19).

Registre 7
Ce registre détermine le moment du top de synchronisation verticale, sa valeur à l'origine est de # 1 E, ta modification de ce registre décale l'écran vers le haut ou vers te bas, suivant la valeur choisie.
Si la valeur > 1E -> écran décalé vers le haut.
Si la valeur < 1E -> écran décalé vers le bas.
La programmation de ce registre est utilisée dans certains jeux pour simuler une vibration de J'écran (explosion).

Registres 8 à 15
La programmation de ces registres à la main ne présente pas de particularité puisqu'ils déterminent: la position du curseur, le début de la RAM écran. Les opérations sur ces registre peu. vent être effectuées par le vecteurs de la RAM (cf. notre dernier article).

CONCLUSION

Nous pensons avoir donné une description sommaire du contrôleur vidéo qui permettra à de nombreux lecteurs de modifier les caractéristiques de leur CPC. Nous aurons probablement l'occasion de revenir sur la partie gestion écran du CPC.

A suivre ...

CPC n°16 p78 nov86

Page précédente : Au Coeur du 6128 - La ROM

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

Lien(s):
» Coding » Au Cœur de l'Amstrad CPC
» Coding » Au Coeur du 6128 (CPC Revue)
» Coding » Au Coeur du 6128 - La ROM (CPC Revue)
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
Page créée en 036 millisecondes et consultée 1890 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.