★ CODING ★ AMSLIVE ★ AMSLIVE n°17 - COMMENT RÉAGIT TOUT CRTC ★ |
AMSLIVE n°17 - Comment Reagit Tout Crtc | Coding Amslive |
Nous voilà réengagés sur la rectiligne route bordée de tulipes naines menant aux arcanes du composant le plus mésestimé du CPC après d'autres. |
R0 = 63 (Total horizontal - 8 bits) représente le nombre total de caractères (affichés ou non, càd border Inclus) moins 1 Ainsi cette valeur détermine la durée d'une ligne élémentaire et par suite la fréquence de rafraîchissement. R1 = 40 (Affichage horizontai - 8 bits) : nombre de caractères affichés horizontalement, avant d'envoyer le "BORDER' R2 = 46 (Position de la synchro Horizontale (HS en anglais) - 8 bits» ; tout est dans se nom ! R3 = &8e (Durées synchro - 4/8 bits) les 4 bits de poids faible déterminent la largeur (toujours en caractères) de la HS (si 0 pas de synchro générée, sauf sur CRTC2, de longueur 16), Sur CRTC 0, 3 et 4 les 4 bits de poids fort déterminent ia hauteur de la VS (synchro verticale), en nombre de lignes (si 0, la synchro dure 16 lignes, longueur par défaut sur les autres CRTC), R4 = 38 (Total vertical - 7 bits) : représente le nombre total de lignes de caractères moins 1 Avec R5 et R9, influe donc sur la fréquence de rafraîchissement de l'écran (50 ou 60 hz....), R5 - 0 (Ajustement vertical - 5 bits) nombre de lignes élémentaires supplémentaires, une fois les (R4+1) lignes de caractères balayées. R6 a 25 (Affichage vertical - 7 bits) : nombre de lignes de caractères affichées verticalement, avant d'envoyer le "BORDER' R7 = 32 (Position de la VS - 7 bits) homologue vertical du registre 2. R8 = 0 (Mode vidéo - 2/6 bits) les bits 1 & 0 commutent le mode entrelacé (00 = inactif. 01 = activé pour le balayage physique, 11 = activé pour le balayage physique et le balayage mémoire). R9 = 7 (Numéro maximum de scan-line - 5 bits) nombre de lignes élémentaires (d'une ligne de caractères) moins 1. R10 = 0 (Début de curseur - 7 bits) les bits 0 à 4 déterminent le numéro de scan-line à laquelle commence le curseur. Les bits 6 & 5 fixent le type d'affichage du curseur (01 = fixe, 01 = inactif 10 = clignotant de période 16 frames, 11 - clignotant sur 32 frames) R11 = 0 (Fin de curseur - 5 bits? * numéro de ia dernière ligne de curseur. R12 & R13 = &3000 (Adresse de départ - 6 & 8 bits) les bits 0 à 5 de R12 (poids fort) et R13 forment l'adresse 14 Dits au départ de l'écran (l'offset). R14 & R15 = &C000 (Adresse du curseur - 6 & 8 bits) sur le même modèle que R12 & R13 les 14 bits représentent l'adresse à laquelle le curseur doit être activé. R16 & R17 (Adresse crayon optique - 6 & 8 bits) : toujours sur ce modèle, les 14 bits contiennent l'adresse enregistrée lors d'une impulsion sur la broche LPSTB (light pen strobe) du CRTC. |
Un schéma bien proportionné resitue les registres les plus importants :
TERMINOLOGUE 2, LE RETOUR
Le CRTC étant prévu pour gérer un mode texte, on se retrouve souvent à raisonner en terme de caractères. Sur CPC, la largeur d'un « caractère CRTC » correspond à une micro-seconde, indépendamment du mode graphique, simplement parce que le composant est cadencé à 1 Mhz.
Pendant cette micro-seconde, le VGA récupère les octets de deux adresses consécutives (paire puis impaire !). Ainsi s'explique l'obligation de travailler par
mots. Si vous souhaitez dès à présent plus de détails, je vous invite à consulter le croustillant AMSTRAD LIVE 2 (et que le cul pèle à toutes les personnes qui déclineront mon invitation, à cheval donné on ne regarde pas la bride).
Quant à la hauteur du caractère, elle est paramétrée par le fameux registre 9. Ainsi une « ligne de caractères » se décompose en R9+1 lignes - qu'on retrouve sous les appellations « ligne élémentaire », raster-line, scan-line, suivant les auteurs, leurs humeurs et leurs états d'ébriété. Il y en a même pour parler de « bloc », en parfaite contradiction avec un des sens de ce mot.
CONTE SUR COMPTEURS
(le genre d'histoire que maman me lisait pour me réveiller)
Vous vous êtes peut-être demandé pourquoi on doit retrancher 1 à certaines valeurs (pour R0, R4, R9). Une telle interrogation dénoterait une saine curiosité ne pouvant que rassurer vos proches.
Chez les ingénieurs, ce problème est connu sous le nom de "Paradoxe du mouton", s'énonçant ainsi : Pourquoi est-ce que le berger travaille, alors que le mouton ?
Plus précisément, cela dépend du rôle de la borne en question. Sans vouloir égratigner le suspens de l'initiation, observons deux cas :
R0 : si un compteur d'âge et de sexe quelconques va de 0 à 63, cela donne bien 64 itérations.
R1 : si le border est enclenché à partir de 40, il y avait affichage de 0 à 39, donc sur 40 caractères !
Pour conclure, j'espère que le développement de certains sujets n'aura pas gommé leur extrême simplicité. Je ne détaille et ne rallonge que pour vous offrir autant de facettes possible d'un même fonctionnement. La prochaine fois, nous détaillerons les registres d'un tout autre point de vue.
J'entends discuter ! Olivier Marchin, vous me ferez 312 lignes !
Yves Saladand , AMSLIVE n°17
| ![]() |
![]() | Page précédente : AMSLIVE n°17 - 3D | ![]() |
|