CODING ★ L'écran du CPC - MODE 1 et MODE 2 ★

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 -------------------------------- C0EF
<-------------------------------------------------->
48 caractères

En 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:

MODE 2
POKE &C000,255

Vous 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,255

Vous 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 ------------------------------- C04F
2e ligne C050 --------------------------------------
25eme ligne C000 + (80*24) =C780 -------------------
26e ligne C6D0 -------------------------------- C000
<------------------------------------------------->
48 caractères

Il 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

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,&X1100011

Analysons la valeur binaire:

Il nous est maintenant possible decoder chaque groupe de 2 pixels en mode 1. A bientôt pour le mode 13.

http://cpcrulez.fr

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