APPLICATIONSCREATION GRAPHIQUE ★ Caractere Symbol After ★

Defcar (CPC Revue)Applications Creation Graphique
  1. Dessiner le caractère sur une grille à l'écran à l'aide du joystick.
  2. Calcul automatique de tous les paramètres qui suivront la commande SYMBOL.
  3. Calcul automatique des paramètres pour reproduire votre motif sur IMPRI MANTE (eh, oui, c'est possible !) avec, bien sur, une illustration sur imprimante (pas la DMP-1).

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 !
Considérons une touche du clavier, le "A", par exemple. En la pressant, l'ordinateur reçoit le nombre 97, il "dessine" CHR$(97), le "a". Maintenant, SHIFT + "A", il reçoit 65, le code du A majuscule. Conclusion : lorsque vous pressez une touche du clavier, vous envoyez un nombre ; c'est la mémoire de l'ordinateur qui dessine le caractère référencé sous ce numéro.

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... ).
TRES IMPORTANT : Si votre programme va définir des caractères, mettez votre SYMBOL AFTER en tout début ; surtout pas après un MEMORY, donc avant un OPENOUT"BIDON":MEMORY HIMEM-1 :CLOSEOUT. Sinon, plantage !

LE PROGRAMME DEFCAR

Voyons le mode d'emploi :

  • L'écran demande si votre imprimante est prête ? "N" si vous n'en avez pas.
  • En haut à gauche, apparaît une grille (notre pavé-caractère) de 8x8. Dans une case, un point rouge clignote. C'est notre curseur.

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.
ar votre courrier, nous apprenons que la définition, le dessin, de caractères personnels vous attire, mais que les syntaxes de SYMBOL et SYMBOL AFTER vous rebutent quelque peu. Nous allons expliquer cela en essayant d'être beaucoup plus clairs que le Manuel CPC, puis nous vous livrerons un programme "pour fainéants" à triple rôle :

  • Lorsque le dessin vous convient, vous quittez en pressant la touche Q.
  • L'écran vous demande alors "quel caractère ?". Vous tapez au choix le caractère en question ou le code ASCII (32 à 255), le programme comprendra, et ENTER.
  • Le caractère redéfini apparaît à l'écran cette fois grandeur nature. Si vous n'avez pas d'imprimante, l'écran vous prie de noter par écrit son code ASCII et ses huit nombres.
  • Si une imprimante est branchée, ces paramètres sont bien sûr imprimés avec en plus huit autres nombres, les "codages verticaux" pour imprimer votre caractère (nous verons plus loin) et votre caractère, cette fois, sur papier.
  • Enfin, question à l'écran "Autre caractère ? (O/N)".

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).

  • FIMP est notre flag (témoin) d'imprimante prête.
  • Le CHR$(144) est un point centré, c'est notre curseur de grille. CHR$(233) = petit carré plein.
  • Les lignes 130 à 160 empêchent le curseur de sortir de la grille.
  • Pour le dessin de la grille (lignes 600 à 670), nous utilisons le mode transparent CHR$<22) ; un bouclage fournit le clignotement.
  • Les lignes 230 et 270 sont des ralen-tisseurs.
  • La valeur renvoyée par JOY(0),lignes 120 à 140, est mise en binaire à cinq bits afin de l'analyser. Pour plus de détails, voir du même auteur "Mieux programmer sur AMSTRAD" (SORACOM), page 131.
  • Le module Résultats (lignes 300 à 450) utilise la fonction TEST qui renvoie 1 pour une case "noircie". L'image binaire est reconstituée par concaténation ligne 350, traduite en décimal et mise en DIM CH.
  • Le module imprimante est similaire mais l'exploration de la grille par TEST se fait cette fois-ci par colonne, de haut en bas. Le caractère est imprimé en utilisant le CHR$(27);"K" ("bit image" en code standard EPSON).
  • Ligne 60, on avait confirmé (ou imposé) le "clavier" USA pour l'imprimante. On vide son buffer en ligne 490 en fin de session.

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
de l'imprimante.

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$ =" "
FOR 1 = 1 TO 8
CD$ =CD$ +CHR$(CV(I)): NEXT

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
lignes de DATA où figurent les paramètres de codes verticaux.

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...

CPC n°12

★ EDITEUR: CPC Revue
★ ANNÉE: 1986
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LICENCE: LISTING
★ AUTEUR: Michel ARCHAMBAULT

★ AMSTRAD CPC ★ DOWNLOAD ★

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Ramasoft - Font Master (Amstrad Action)
» Applications » Wordsquare Solver (Computing with the Amstrad)
» Applications » Compilation : Demon PD - PD 83 - Demon Disc Fanzine 1 - November '91
» Applications » Transfer v3.6 mit Vortex F1-X
» Applications » MC-Graf
» Applications » Fill 464 (AM-Mag)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 232 millisecondes et consultée 14 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.