★ APPLICATIONS ★ CREATION GRAPHIQUE ★ Caractere Symbol After ★ |
Defcar (CPC Revue) | Applications Creation Graphique |
LA COMMANDE SYMBOL Une lettre, un chiffre, un signe quelconque est représenté à l'écran sous forme d'une petite grille de 8 x 8 petites cases (pixels) dont certaines vont prendre la couleur PEN, les autres la couleur PAPER. Le carré du curseur est tout en PEN, le caractère "espace" est tout en PAPER. Ce "pavé caractère" est donc constitué de huit lignes de huit cases chacune. Une "ligne" est donc une succession de points PAPER (valeur 0) et de points PEN (valeur 1). Exemple, la ligne du haut de la lettre H s'écrit 01100110. C'est le nombre 102 écrit en binaire. Pour le savoir, nous avons tapé : PRINT &X01100110 Donc, le décodage graphique d'un caractère demande huit nombres (de 0 à 256) qui correspondent chacun à nos huit petites lignes du pavé-caractère. Reste à définir son numéro de code ASCII. La ROM de l'AMSTRAD renferme déjà les codages graphiques pour les codes ASCII depuis 32 jusqu'à 255. Essayez : FOR I = 32 TO 255:PRINT CHR$(I):" ";:NEXT Un joli répertoire ! SYMBOL permet de modifier cette référence graphique ; par exemple. SHIFT + "A" (code 65) dessinera un petit losange... La syntaxe de SYMBOL nous paraît alors tout à fait logique : d'abord, le code ASCII que l'on va redéfinir, suivi de nos huit nombres. Pour les codes n'ayant pas de touche au clavier, il faudra l'appeler par CHR$(...). NOTE : Ne pas confondre avec KEY DEF qui change le code d'une touche. LA COMMANDE SYMBOL AFTER Définir un symbol revient à mémoriser huit octets (nos huit lignes), et il faut leur réserver un emplacement bien précis dans la RAM. Cette zone sera d'autant plus grande que le code ASCII utilisé sera plus faible. Autrement dit, si nous utilisons le 65 ("A"), il faut réserver la place depuis 65 jusqu'à 255 ! Autant que si on voulait redéfinir tout l'alphabet ! Cela nous fait 191 caractères multiplié par huit octets = 1528 octets réservés. En ce cas, il faut d'abord écrire : SYMBOL AFTER 65 qui signifie "réserve la place pour des SYMBOL à partir du code ASCII 65”. Si l'on avait voulu redéfinir les touches "x, y et z" (codes ASCII 120, 121 et 122), nous aurions annoncé SYMBOL AFTER 120, soit une réservation de 135x8 = 1080 octets. A la mise sous tension, l'AMSTRAD se fait (à notre insu) un SYMBOL AFTER 240. On peut alors récupérer 128 octets disponibles en faisant SYMBOL AFTER 256 (aucun SYMBOL n'est alors possible). Un SYMBOL AFTER 256 va effacer vos SYMBOL en RAM, entrés auparavant avec un SYMBOL AFTER plus bas (à noter, c'est utile... ). LE PROGRAMME DEFCAR Voyons le mode d'emploi :
Il se déplace, volontairement lentement, avec le joystick. Pour "écrire", "noircir" une case, c'est FIRE. Pour effacer une case, c'est la barre d'espacement.
REMARQUES : En option imprimante, un astérisque rouge apparaît en face de la ligne supérieure de la grille = ligne interdite, car elle ne sera pas imprimée, du fait que l'interface imprimante des AMSTRAD est une 7 bits et non une 8 bits (économie SUGAR). Lorsque vous quitterez le programme, faites un CTRL + SHIFT + ESC afin d'effacer vos SYMBOL qui restent en RAM, même après un RUN sur un autre programme ; ce qui pourrait être fâcheux... (ou encore SYMBOL AFTER 256). QUELQUES DETAILS BASIC Nous utilisons la fonction JOY qui nous renseigne sur la position du joystick (dans les huit directions + FIRE).
LES CARACTERES REDEFINIS SUR IMPRIMANTE Les heureux possesseurs d'imprimantes récentes avec mémorisation de caractères, le ESC"&", n'auront aucun problème, car c'est à peu près la même syntaxe que SYMBOL, mais pour la RAM En revanche, les "autres" devront utiliser les codes BIT IMAGE ESC"*", ESC"K", "L". "Y" ou "Z". La syntaxe est lourde car elle tient compte du nombre d'octets à traiter. Pour nous, c'est toujours &. Alors créons une méthode pour fainéants. Exemple avec ESC"K". BI$ =CHR$(27 ) + "K" + CHR$(8) + CHR$(0) Nos huit codages verticaux sont CV(1) à CV(8). CD$ =" " A chaque fois que nous aurons à imprimer notre caractère, il suffira alors d'écrire : PRINT #8,BI$;CD$ UN NOUVEL ALPHABET Vous voulez transformer notre clavier latin en clavier cyrillique, hébreux, gothique, etc. Exemple : avec notre programme DEFCAR, vous avez redéfini toutes les lettres minuscules de a à z (codes ASCII de 97 à 122), soit vingt-six CD$ que vous allez mettre en DIM CD$(26). Il a été rempli par READ sur des Le caractère à imprimer est défini par son indice, CD$(4) était jadis le "d" minuscule. A l'écran, vous avez tapé une chaîne A$ avec ces caractères bizarres et vous voulez l'imprimer. Astuce : l'indice des CD$, c'est le code ASCII de ces caractères moins 96. FOR 1=1 TO LEN(A$) N = ASC(MID$(A$,I,1 )) - 96 PRINT #8,BI$;CD$(N);:NEXT:PRINT #8 Ultra simple et court. Attention, il ne faut pas de blanc dans A$ (code 32), sinon insérez une ligne avec un IF qui fera imprimer normalement cet espace. NOTE : Si votre imprimante possède la qualité courrier (NLQ), ça ne marche pas avec le BIT IMAGE ! Utilisez la double densité de frappe ESC"L" ou ESC"*"; CHR$(1 ); CONCLUSION Vous disposez à présent de la théorie et de l'outillage pour définir des caractères, tant à l'écran que sur imprimante. Mais, n'en profitez pas pour nous envoyer un listing en babylonien...
|