Samuel Devulder a écrit:
il y a d'autres valeurs possibles, mais j'ai jammais complétement compris l'intéret de ces modes dans la mesure où je les émule parfaitement avec une palette bien calculée.
Il y a un intérêt, mais c'est vrai qu'il est faible, comme le nombre de couleurs à disposition. Pour les modes d'affichage PAGE, il y en a deux :
- Allumer ou éteindre une couleur se fait seulement sur une RAM vidéo
- La gestion des priorités est naturelle
Piqûre de rappel pour ceux qui savent :
Les modes PAGE sont des modes d'affichage au format bitmap 16 (160x200) et permettent d'afficher les 5 premières couleurs de la palette.
D'un point de vue du hardware, la couleur de chaque point est codée sur 16 bits simultanément sur la RAMA et la RAMB avec des composantes R, V, B et S codées sur 4 bits chacune. Sur la RAMA (bit de 0 de $e7c3 à 1) sont codées les couleurs R et V, Sur la RAMB (bit 0 de $e7c3 à 0) sont codées les couleurs B et S.
Code:
RAMA = %rrrrvvvv
RAMB = %bbbbssss
À l'affichage, on obtient le tableau suivant :
Code:
RAMA RAMB Couleur
$00 $00 0
$00 $0f 4
$00 $f0 3
$00 $ff 3
$0f $00 2
$0f $0f 2
$0f $f0 2
$0f $ff 2
$f0 $00 1
$f0 $0f 1
$f0 $f0 1
$f0 $ff 1
$ff $00 1
$ff $0f 1
$ff $f0 1
$ff $ff 1
On remarque que :
- la couleur 1 ($fxxx) est prioritaire sur toutes les autres couleurs
- la couleur 2 ($xfxx) est prioritaire sur les couleurs 3, 4 et 0
- la couleur 3 ($xxfx) est prioritaire sur les couleurs 4 et 0
- la couleur 4 ($xxxf) est prioritaire sur la couleur 0
D'un point de vue du Moniteur, cette fois-ci, les modes PAGE de $88 à $8b sélectionnent la couleur pour les tracés de point et de ligne (et activent le mode page s'il ne l'est pas déjà) avec le registre CHDRAW ($6041) à 0 et le registre FORME ($6038) à une valeur positive :
Code:
$1b+$88 couleur 1 (prioritaire sur 2, 3, 4 et 0)
$1b+$89 couleur 2 (prioritaire sur 3, 4 et 0)
$1b+$8a couleur 3 (prioritaire sur 4 et 0)
$1b+$8b couleur 4 (prioritaire sur 0)
... et pour avoir la couleur 0, il suffit de mettre dans le registre FORME ($6038) une valeur 8 bits négative ($ff par exemple) :
Code:
$1b+$88 couleur 0 (efface seulement couleur 1)
$1b+$89 couleur 0 (efface seulement couleur 2)
$1b+$8a couleur 0 (efface seulement couleur 3)
$1b+$8b couleur 0 (efface seulement couleur 4)