★ CODING ★ AMSTRAD CPC 464 - CRÉER DE NOUVELLES INSTRUCTIONS ★ |
Nouvelles Instructions - 3. La Mémoire Écran |
Pour simplifier cette étude, nous nous limiterons dans un premier temps au mode 1. 10 MODE 1 La ligne 20 trace les premiers traits de toutes les lignes en rouge et la ligne 30 les deuxièmes traits de toutes les lignes en bleu clair. Une curiosité subsiste néanmoins, qui ne vous a certainement pas échappé : le trait n°1, par exemple, se termine en 51151 (25e ligne). Or le deuxième trait commence en 51200 (1re ligne). Manquent donc à l'appel 48 octets, et il en est de même à la fin de chaque trait, c'est-à-dire 8 fois. Cette disposition de la mémoire écran, pour particulière qu'elle soit n'est en réalité guère plus difficile à travailler qu'une autre dans la mesure ou l'on est averti. * Pour passer d'un trait à un autre d'une même ligne, on ajoute ou on enlève 2048 ou un de ses multiples. Par exemple, pour passer du deuxième au troisième trait de la ligne 1, il suffit de faire 51200 + 2048 = 53248, Cela est valable quelle que soit la position d'octet initiale. * Pour passer sur le même trait d'une autre ligne, on enlève ou on ajoute 80 ou un des ses multiples. Par exemple, pour passer du premier trait de la première ligne au premier trait de la 24e ligne, il suffit de faire 49152+ (23x80) = 50992. * Le numéro d'un octet précis peut toujours être déterminé à partir du numéro de colonne et du numéro de ligne correspondants. Par exemple, pour calculer l'octet bas/gauche de l'emplacement situé à l'intersection de la deuxième colonne et de la 24e ligne, il suffit de calculer 63406 + (80x24)+(2x2). La formule générale est dans ce cas précis 63406 + 80Y + 2X). Pour conclure, parlons un peu des différents modes possibles et de leurs différences (nous laisserons de côté le problème des couleurs, qui est plus complexe et nous éloignerait du sujet de ce livre). * En mode 0, chaque caractère est contenu dans une surface de 4 octets de large (sur la figure précédente, un caractère écrit en 1,1 s'inscrirait dans le rectangle déterminé par les octejs 49152, 49155, 63488 et 63491). * En mode 1, chaque caractère s'inscrit dans une surface de 2 octets de large (le caractère cité plus haut s'inscrirait entre les octets 49152, 49153, 63488 et 63489).
* En mode 2 enfin, chaque caractère s'inscrit sur une surface de la largeur de l'octet (le caractère cité plus haut s'inscrirait entre les octets 49152 et 63488). Il faut parfois tenir compte de tout cela dans certains programmes, si l'on veut les utiliser en plusieurs modes.
|