APPLICATIONS ★ INTRODUCTION À G.S.X : ETUDE DES DIFFÉRENTS CODES (CPC REVUE N°34) ★

Introduction à G.S.X : Etude des différents codes (CPC Revue n°34)
LISTE DES CODES
  1. Ouvre une station graphique
  2. Ferme la station
  3. Remise à zéro d'une station
  4. Affiche tous les graphiques en attente
  5. Escape (Contrôles divers)
  6. Trace une suite de lignes
  7. Envoie des points de marquage
  8. Ecrit un texte à la position spécifiée
  9. Trace un polynôme
  10. Trace un rectangle vide
  11. Trace un rectangle hachuré ou non
  12. Ajuste la taille au texte
  13. Définit la direction du texte
  14. Définit la couleur (utile sur CPC)
  15. Fixe le type des lignes
  16. Ajuste la largeur des lignes
  17. Définit la couleur des polygones
  18. Fixe le type des marqueurs
  19. Ajuste la dimension des marqueurs
  20. Définit la couleur des marqueurs
  21. Définit le type des caractères
  22. Définit la couleur du texte
  23. Fixe le type de remplissage des figures
  24. Choisit un style de hachures ou de pointillés
  25. Définit la couleur de remplissage
  26. Donne les valeurs des couleurs de l'index
  27. Retourne la définition du tableau de cellules
  28. Valeur de la variable des coordonnées d'entrée
  29. Valeur du calculateur des coordonnées d'entrée
  30. Retourne la valeur de l'unité choisie
  31. Retourne une chaîne de caractères
  32. Fixe le mode d'écriture
  33. Fixe le mode d'entrée.

CODE 1

Avant de créer un dessin, il faut "ouvrir" une station graphique. Les valeurs à mettre dans le tableau CONTROLE sont les suivantes :

CONTROLE(0) = 1
Numéro de la fonction

CONTROLE(1) = 0
Pas de coordonnée à transmettre

CONTROLE(2) = ???
Sans importance

CONTROLE(3) = 10
10 paramètres dans EntParam

CONTROLE(4) = ???
Sans importance

CONTROLE(5) = ???
Sans importance

L'ouverture d'une station graphique n'est pas une mince affaire puisque dix paramètres sont nécessaires à la fonction.

EntParam(0)
Périphérique utilisé (1, 21, 22...)

Entraram(1)
Format des lignes (voir commande 15)

EntParam(2)
Couleur des lignes (0 ou 1)

EntParam(3)
Forme du marqueur (voir commande 18)

EntParam(4)
???

EntParam(5)
???

EntParam(6)
Couleur du texte (0 ou 1)

Remarque : les listings dont il est question dans ce numéro
sont tous présents dans le CPC n° 33.

EntParam(7)
Hachures (voir commande 24)

EntParam(8)
Mode de remplissage (voir commande 23)

EntParam(9)
Couleur de remplissage (0 ou 1).

Après exécution de la commande, GSX retourne certaines valeurs particulièrement intéressantes :

LecParam(0)
Nombre de points en horizontal

LecParam(1)
Nombre de points en vertical

LecParam(3)
Taille d'un point horizontal

LecParam(4)
Taille d'un point vertical.

L'utilisation de ces quatre valeurs permet de calculer les coefficients à utiliser de façon à obtenir par exemple des cercles ronds quel que soit le périphérique utilisé (lignes 20270 à 20310). De même, désire un dessin sur plusieurs périphériques tout en conservant les proportions, il faudra diviser chaque coordonnée par ce coefficient : dans ce cas, la feuille de travail sera ramenée à un carré sur n'importe quel organe de sortie ce qui n'est pas "idiot" puisque pour GSX, la définition horizontale est égale à la verticale soit 32767 points. Dans le programme de démonstration, les coefficients n'ont été utilisés que pour le tracé du cercle et des arcs de cercle.

CODE 2

Qui dit ouverture dit fermeture. Le code 2 sert donc à fermer la station graphique soit en fin de travail soit pour changer d'organe de sortie. L'écran est effacé et sur imprimante, le dessin est transféré sur le papier. Pour appeler cette commande, on met la valeur 2 dans CONTROLE(O) ; les autres valeurs sont sans importance.

CODE 3

Cette commande, qui ne demande pas de paramètre, peut servir à effacer l'écran ou à faire effectuer un saut de page à l'imprimante.

CODE 4

Lorsque l'utilisateur travaille sur écran, cette commande est inutile, par contre sur imprimante, elle devient indispensable. En effet, sur écran, le tracé est affiché au fur et à mesure du déroulement du programme alors que sur imprimante, toutes les données sont stockées dans un tampon qui sera vidé par cette commande (par curiosité, essayez de supprimer les lignes 520 et 530 en faisant une sortie sur imprimante).

CODE 6

Cette commande permet de tracer des lignes brisées. Le nombre de sommets doit être placé dans CONTROLE(1) et les coordonnées dans EntCoord ; pour tracer une diagonale coupant tout l'écran, CONTROLE(1) = 2 : EntCoord(O) = 0 : EntCoord(1) = 0 : EntCoord 2) = 32767 : EntCoord(3) = 32767. Contrôle(5) doit être à 1.

CODE 7

La syntaxe de cette commande est la même que la commande 6 mais au lieu de tracer des lignes reliant chaque point, seuls les points sont marqués (marqueurs).

CODE 8

Des textes peuvent être inscrits sur la feuille graphique ; le début du texte sera écrit aux coordonnées spécifiées dans EntCoord (0 et 1). Chaque caractère sera transmis sous forme ASCII dans le tableau EntParam et le nombre de caractères sera placé dans CONTROLER).

CODE 9

La commande 9 est très proche de la commande 6 ; les syntaxes sont identiques mais le code 9 forme un polygone fermé au lieu d'une suite de lignes brisées. D'autre part, le polygone formé par cette commande peut être hachuré contrairement à la commande numéro 6.

CODES 10 et 11

Ces deux commandes permettent de tracer des rectangles en indiquant uniquement les coordonnées situées en bas à gauche et en haut à droite. Le code 10 trace simplement le tour du rectangle alors que le code 11 permet de hachurer la surface ainsi délimitée.

CODE 12

Encore une commande très intéressante sur imprimante mais tout à fait inutile sur écran ; elle permet de définir la taille des caractères. La dimension des caractères doit être placée dans EntCoord(1) alors que EntCoord(0) doit contenir 0. La taille au texte peut prendre une douzaine de valeurs (avec un pas de 10).


FIGURE 3 Illustration de la commande numéro 13.

CODE 13

Une fois de plus, cette commande ne trouve son intérêt que sur imprimante. Elle permet d'afficher un texte dans quatre directions différentes (voir illustration figure 3). Les paramètres à entrer dans EntParam(0) sont :

0
Ecriture normale (de gauche à droite)

900
Ecriture de bas en haut

1800
Ecriture de la droite vers la gauche

2700
Ecriture de haut en bas.

CODE 14

Pour changer un peu, cette commande est inutile sur imprimante ainsi que sur l'écran du PCW. Sur CPC, en Turbo Pascal, elle permet de choisir entre 4 coloris différents (sur un écran monochrome, c'est la valeur 1 dans EntParam(0) qui offre le meilleur résultat).

CODE 15

Utile aussi bien sur écran que sur imprimante, la définition du tracé des lignes peut être modifiée grâce à cette commande. La valeur placée dans EntParam (0) peut varier entre 1 et 6.

EntParam(0) = 1
Trait continu

EntParam(0) = 2
Petit tiret

EntParam(0) = 3
Pointillé

EntParam(0) = 4
Trait Point

EntParam(0) = 5
Grand tiret

EntParam(0) = 6
Trait Point Point

Le code 16 n'existe pas sur écran.

CODE 18

La commande 18 agit sur le style des marqueurs ; la syntaxe est la même que pour la commande 15. Cinq formats sont autorisés :

EntParam(0) = 1
Point .

EntParam(0) = 2
Signe plus +

EntParam(0) = 3
Etoile *

EntParam(0) = 4
Lettre ou carré □∏
EntParam(0) = 5
Croix x

CODE 23

Mode de remplissage des surfaces (rectangles ou polygones). Quatre modes de remplissage peuvent être utilisés.

EntParam(0) = 0
Seul le tour du tracé est affiché.

EntParam(0) = 1
La surface est remplie.

EntParam(0) = 2
La surface est remplie avec des pointillés.

EntParam(0) = 3
La surface est remplie avec des hachures.

Cette commande n'est pas reconnue par l'écran.

CODE 24

En association avec la commande 23, ce mode permet de choisir parmi six modèles de pointillés ou de hachures (démonstration). Comme par hasard, cette commande bien que très utile est inexploitable sur écran.

CODE 32

Encore une fois inutilisable sur écran, cette commande permet de choisir le mode de croisement des tracés sur imprimante. Le damier figurant dans le programme de démonstration illustre cette commande ; il y a cinq rectangles pleins tracés en horizontal et en vertical, lorsque deux rectangles se croisent, le croisement est en blanc et non en noir. Pour plus de détails, vous pouvez vous reporter à la figure 4.

FIGURE 4 Illustration de la commande numéro 32 >>

CODES 17, 20, 22 et 25

Ces codes agissent respectivement sur la couleur de ligne, des marqueurs, du texte et des surfaces. Si la valeur placée dans EntParam est égale à 0, le tracé devient invisible ; ces commandes peuvent servir de gomme.

Le mode Ecriture 4 trace le dessin en blanc.
Si une figure a été dessinée dans le mode 1 par exemple
si une autre figure tracée en mode 4 est
contenue dans la première, le résultat
est identique au mode 3. >>

Le programme
DE DEMONSTRATION

Afin de satisfaire un plus grand nombre d'utilisateurs, deux programmes vous sont proposés. Les deux logiciels remplissent pratiquement le même rôle à un détail près : le programme BASIC Mallard (pour PCW) offre en plus de celui écrit en Turbo Pascal l'affichage d'une page de présentation et le tracé d'un graphique en plus de l'histogramme. Afin de conserver une bonne compatibilité entre CPC et PCW, il est conseillé de placer l'écran du PCW en mode 80 colonnes par la commande SET24x80. COM sinon l'affichage des mois sur les graphiques a de fortes chances de se trouver décalé.

La démonstration s'effectue sur trois pages ou écrans en Turbo Pascal (CPC ou PCW) et sur cinq pages en BASIC (PCW). La première page (absente en Turbo) sert de présentation et de titre, la suivante montre différents styles de remplissage, de pointeurs et de lignes. La pages suivante trace un histogramme de trois valeurs mensuelles (hachurées différemment), la suivante en BASIC uniquement, présente un graphique en lignes brisées. En guise de conclusion, la dernière feuille représente deux camemberts dont un a une "tranche" décalée et en bas de la feuille, un demi-fromage hachuré de six façons différentes.

A la question "sur quel périphérique...", il faudra répondre par 1 sortie sur écran (mode 2 sur CPC).

21 sortie sur imprimante haute résolution sur PCW (DMP2000 sur CPC).

22 sortie sur imprimante basse résolution sur PCW.

Le programme est prévu pour tourner aussi bien sur écran en mode 80 colonnes que sur imprimante PCW basse résolution ou sur DMP2000 avec CPC 6128. Pour les autres périphériques utilisables, consultez le fichier ASSIGN.SYS (les résultats ne seront pas obligatoirement identiques).

Dans le cas de sortie sur écran, le programme attend l'action sur la touche RETURN après chaque image ; sur imprimante, cette manœuvre est inutile.

Le programme basic

Dans la mesure du possible, les commandes GSX utilisées dans le programme ont été regroupées entre les lignes 20200 et 22000. La première ligne de chaque sous-programme indique les paramètres devant être initialisés avant appel.

Afin de ne pas avoir à réinitialiser à chaque tracé ae lignes ou de rectangles le tableau CONTROLE, des sous-programmes remplissant cette tâche ont été créés mais il est indispensable de servir le tableau EntCoord avant d'appeler ces sous-programmes.

Tracé du cercle

Après avoir initialisé les variables RAYON, X et Y, l'appel au sous-programme situé à partir de la ligne 22100 permet de tracer un cercle. Aucu n contrôle de débordement n'est effectué ce qui fait que si le centre est en X= 15000, Y = 30000 avec un RAYON = 10000, il risque de se passer des choses inattendues.

Le dessin du cercle se fait en traçant 360 segments de droite (soit 360 degrés). Le calcul des coordonnées de chaque point est basé sur la méthode du cercle trigonométrique (vague souvenir de ma scolarité) ; le cosinus est sur l'axe horizontal et le sinus sur le vertical. Les coordonnées ainsi calculées sont divisées par les coefficients calculés lors de l'ouverture de la station graphique. Ce procédé permet de tracer des cercles ronds et non des "patates" mais ralentit la vitesse d'exécution.

Arc de cercle

Le tracé des arcs de cercle est basé sur la même méthode de calcul mais utilise la commande 9 au lieu de la 6. Généralement, un arc de cercle trouve sa place à proximité d'autres arcs (camemberts). Afin de pouvoir différencier tous les arcs, l'utilisation de hachures est souhaitable. Le code 6 trace des lignes simples alors que le code 9 trace des polygones fermés qui peuvent être remplis de quatorze motifs différents (vide, plein, six pointillés et six hachures). Ce sous-programme commençant à la ligne 22500 demande cinq variables pour fonctionner :

RAYON
Comme pour un cercle.

X et Y
Coordonnées de l'angle.

OIGINE
Angle formé entre le début de l'arc et l'axe horizontal (sens trigonométrique).

ANGLE
Angle d'ouverture de l'arc.

Tous les angles sont exprimés en degrés (restons Français) ce aui simplifie considérablement le pas des boucles (FOR I = 1 TO 360 est si simple par rapport à FOR 1 = 0 TO 2xPI STEP 0.0174).

Programme en TURBO PASCAL

Le programme en Turbo tient pas mal de place à tel point qu'il est indispensable de répondre N à la question 'Voulez-vous inclure les messages d'erreur" sinon la mémoire risque de se sentir à l'étroit (erreur 98). Il faut se souvenir que GSX s'est réservé pas mal d'octets pour son fonctionnement (14300 sur PCW et 11700 sur CPC).

Le listing est divisé en deux parties. La première, nommée GSX.PAS contient les différentes fonctions GSX ainsi que des commandes simplifiées. Cette partie pourra facilement être utilisée pour toute autre application. La seconde partie intitulée DEMO-GSX.PAS se chargera au moment de la compilation du chargement de la première ; c'est cette partie qui contient le programme de démonstration.

Par rapport au BASIC, un tableau a été ajouté ; celui-ci contient les adresses de début des tableaux CONTROLE, ENTPARAM, ENTCOORD, LECPARAM et LECCOORD.

Le calcul des sinus et cosinus n'étant pas des plus rapides, une petite astuce a été utilisée de façon à ne calculer qu'une seule fois ces valeurs quel que soit le nombre d'arcs ou de cercles à tracer. Les sinus et cosinus des angles de 0 à 360 degrés sont stockés dans un tableau baptisé SINCOS. A la première utilisation du programme, les calculs sont effectués

puis le tableau est stocké sur disque par a commande BLOCKWRITE sous le nom de SINUS.DAT. Lors des utilisations futures, ces données sont récupérées sur le disque par la commande BLOCK-READ. Ces deux instructions complémentaires sauvent dans un fichier sans type des blocs de 128 octets issus d'une variable.

Les "matheux" vont "sortir de leurs gonds" mais la méthode est efficace. Les calculs ne se font qu'une fois par disquette et le chargement une seule fois par programme si celui-ci trace au moins une fois un cercle ou arc de cercle.

Au moment de la compilation, il est possible de créer un programme DEMO-GSX.COM mais avant le lancement, il sera indispensable d'utiliser la commande GENGRAF DEMO-GSX.COM de façon à rendre ce logiciel compatible avec GSX.

Conclusion

Certaines fonctions restent à découvrir mais avec celles qui viennent de vous être présentées, votre PCW ne se contentera plus du traitement de textes mais vous ouvrira des horizons graphiques.

Bon graphisme,
Bon courage et
Bon G.S.X

CPC n°34

★ ANNÉE: 1988
★ AUTEUR: Jean-Marie SCAYA

Page précédente : Introduction à G.S.X
★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» Introduction  a  G.S.X-Jean-Marie  SCAYA    (CPC  Revue)    FRENCH    LISTINGDATE: 2020-11-11
DL: 306
TYPE: PDF
SiZE: 2398Ko
NOTE: 14 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Amstrad et CP/M (Amstrad Magazine)
» Applications » DIN-Tastatur unter CP/M 2.2 (Computer Schau)
» Applications » RAM Disc CP/M 2.2 (CPC Amstrad International)
» Applications » Makroassembler DZ80 2.0X CP/M
» Applications » CP/M Plus mit 64 Hz (CPC Amstrad International)
» Applications » HDCPM : Hard Disk Boot loader for CP/M Plus
Je participe au site:
» Pour ce titre nous ne disposons de fichier executable sur CPC (Dump, Saisie du listing) , alors si vous avez ça dans vos cartons ou vous désirez usé vos petit doigts boudinés sur votre clavier faites le nous savoir.
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

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