Le graphisme des CPC étant particulièrement performant, nous avons tenu à apporter quelque. Précisions concernant sa stucture. Vous trouverez dans ces page une description de l'adressage d'écran, du fonctionnement en mode 2 et en mode 1. Le mode 0 sera étudié ultérieurement.L'ADRESSAGE D'ECRAN La RAM écran est située entre C000 et FFFF, elle a la même taille (16 k-octets ), quel que soit le mode choisi et est divisée Comme indiqué ci-dessous: 1er ligne C0000 ------------------------------- C04F 2eme ligne C000 + (80*25) + 48 --------------------- 9e ligne C050 --------------------------------- C09F 17e ligne C0A0 -------------------------------- C0EF48 caractères MODE 2En mode 2, on trouve 80 colonnes et 25 lignes, donc en comptant 8 octets par caractère, on trouve: 80 x 8 x 25 = 16 000 octets. Or, notre RAM écran fait 16384 octets; où sont les 384 octets manquants ? En réalité, l'écran a 25 lignes visibles et, en mode 2, 48 caractères ( 384 octets divisées par 8) Invisibles sauf lors d'un scrolling. Pour visualiser ce phénomène, tapez:POKE &C000,255Vous visualisez sur la première ligne et première colonne un octet allumé. Amenez maintenant votre curseur sur la 25e ligne, puis avancez-le encore de manière à faire disparaître votre première ligne, puis tapez : POKE &C000,255Vous voyez que, cette fois-ci, votre octet allumé se trouve au milieu de l'écran, l'explication est obtenue grâce à la « 26e ligne ». Le caractère que vous venez de placer se trouve en réalité sur la colonne 49. L'écran a compté les 48 octets de sa « 26e ligne » puis a réadressé la RAM à partir de C000, ce qui donne la schéma suivant:1er ligne C0000 ------------------------------- C04F2e ligne C050 -------------------------------------- 25eme ligne C000 + (80*24) =C780 ------------------- 26e ligne C6D0 -------------------------------- C000 48 caractères EN MODE 2Il est à remarquer que même un CLS n'a aucun effet sur ce phénomène, seul le changement de mode permet de réadresser la RAM comme à l'initialisatlon. Pour calculer l'adresse du premier octet de la deuxième ligne, il suffit donc de faire: C000 + (80*25)+48=C800 En mode 2, il suffit de placer des valeurs dans la mémoire écran pour allumer les pixels. Ex: Poke &C04F,&X11111111 Vous verrez un octet allumé en haut à droite de l'écran. EN MODE 1 C'est à ce niveau qu'intervient le codage des couleurs avec J'octet. Définissons tout d'abord les encres: Encre 0 : Rouge 00 Encre 1 : Bleu 01 Encre 2 : Blanc 10 Encre 3 : Noir 11 Il faut savoir que dans ce mode le CPC double tous les bits horizontalement, d'où une résolution divisée par 2, on a donc besoin que de 4 bits pour coder les pixels allumés, Mais regardons le schéma suivant : 
On voit que les bits sont associés 2 à 2, A7 avec A3, A6 avec A2, etc. C'est ici que réside tout le sytème de codage. Le point le plus à gauche de l'écran est codé avec A7, A3, le suivant avec A6. A2, etc. Encore une petite particularité: la valeur binaire de la couleur doit être "retournée" avant d'être placée dans l'octet. Voici une commande qui vous permettra d'éclairer, dans le coin gauche de l'écran. 4 bits en bleu et 4 en blanc: POKE &C000,&X1100011Analysons la valeur binaire:
Il nous est maintenant possible decoder chaque groupe de 2 pixels en mode 1. A bientôt pour le mode 13. https://cpcrulez.fr | ★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser... |
|
|