Quelques adresses pour la vidéo
Attention:
La mise à jour d'une de ces adresses doit se faire en mode superviseur.
Il est à noter que si vous modifiez l'une de ces adresses, le système n'en sera pas informé.
Par exemple la modification de la résolution écran ne sera pas connu du VDI, ...
Cela peut donc provoquer quelques problèmes d'affichage.
$FFFF8201 Accessible en lecture et écriture sur 8 bits:
Correspond aux bits 16 à 23 de l'adresse de début de la mémoire écran à afficher.
$FFFF8203 Accessible en lecture et écriture sur 8 bits:
Correspond aux bits 8 à 15 de l'adresse de début de la mémoire écran à afficher.
On ne peut pas indiquer les bits 0 à 7 de l'adresse de début de la mémoire écran à afficher.
Le circuit vidéo peut donc utiliser n'importe quelle zone de la mémoire pour peu que l'adresse soit un multiple de 256. Tout en sachant que la zone adressée ne dépasse pas 32000 octets.
Autre inconvénient, il ne sera pas possible d'utiliser le pointeur écran pour faire un scrolling vertical fluide.
Dommage car le changement du vecteur est bien plus rapide que de déplacer quelque chose comme 32 kilo...
$FFFF8205 Accessible en lecture sur 8 bits:
Compteur d'adresses vidéo bits 16 à 23
$FFFF8207 Accessible en lecture sur 8 bits:
Compteur d'adresses vidéo bits 8 à 15
$FFFF8209 Accessible en lecture sur 8 bits:
Compteur d'adresses vidéo bits 0 à 7
Ces trois compteurs d'adresse vont nous indiquer où le circuit en est concernant l'affichage vidéo ou nous indiquant l'adresse mémoire vidéo en cours d'affichage.
$FFFF820A Accessible en lecture et écriture:
Le bit 0 : Mode de synchronisation : 0 = interne, 1 = externe
Le bit 1 : Fréquence de balayage : 0 = 60hz(NTSC), 1 = 50hz(PAL)
Remarque:
Sur le bit 0, en le positionnant sur externe, il pouvait être possible de visualiser ce qui se passait sur le tuner de votre télévision. En clair, de regarder la télé (du moins, si votre télévision le permettait).
Sur le bit 1, c'est en changeant très vite de fréquence que l'on peut afficher sur plus de 320x200. Je ne suis jamais parvenu à le faire comme il faut, mais c'est possible puisque certains groupes de pirates y sont parvenus dans leurs démos (pompey pirate, et les autres...). Le principe doit être le même que la solution de Spectrum, et donc bien gourmant en temps CPU.
Dernière minute: Un article était consacré au fullscreen dans le ST Magazine n°32. Si vous ne l'avez pas (ou plus), vous pourrez toujours retrouver l'article sur le site abandonware-magazines
$FFFF8240 Accessible en lecture et écriture sur 16 bits:
Registre 0 de la palette de couleur.
$FFFF8242 Accessible en lecture et écriture sur 16 bits:
Registre 1 de la palette de couleur.
...
$FFFF825E Accessible en lecture et écriture sur 16 bits:
Registre 15 de la palette de couleur.
Comme on peut s'en rendre compte, il est donc impossible d'affecter plus de 16 couleurs à l'écran dans ces conditions, il n'y a pas plus de 16 couleurs. Il faut donc ruser…
$FFFF8260 Accessible en lecture et écriture, sur un octet
Permet de modifier la résolution de l'écran. 0 pour la basse, 1 pour la moyenne et 2 pour la haute résolution.
Remarque:
Si vous avez un moniteur couleur et que vous changez la résolution en haute résolution, il y aura automatiquement un reboot du système (Sauf si vous changez quelques vecteurs, mais je vous le déconseille vivement car un moniteur couleur supportera très mal le choc !)