Le mois dernier nous avions commencé par la « tête », la description d'un logiciel j de dessins de schémas pour CPC AMSTRAD, 464,664 et 6128.Cette fois, voici « les jambes » : 40 dessins modifiables à volonté ! Dès à présent, prenez soin de la « tête », car le mois prochain nous transformerons d'un coup de listing magique ce SAO en lAO (Implantation Assistée par Ordinateur), pour arriver tout naturellement au CIAO (Circuit Imprimé Assisté par Ordinateur) ! ! ! Et en « plus », A et C offrent un plus pour votre CPC ! 
Introduction Quand vous disposerez de SAO, IAO, CIAO, PLUS et ZONARD, votre laboratoire personnel aura changé de peau ! En effet, il vous sera possible de dessiner des schémas, des implantations de composants, des circuits imprimés échelle 2 (avec le hors-pas !), d'inverser des dessins verticalement, horizontalement, d'en faire des négatifs, de les imprimer, de composer des images à partir de morceaux venant d'autres écrans, etc... et ce, sans limite réelle de surface ! Le tout sur AMSTRAD 464 + drive, 664 et 6128, sans extension mémoire additionnelle. Celà vaut la peine de se pencher sur la question, car dès la fin de cet article, vous disposerez de SAO et PLUS. Le mois prochain, IAO et ZONARD, enfin CIAO. Bien entendu, tous ces programmes sont compatibles entre eux, et très facilement modifiables. Ils se « branchent à la même tête », ce qui permet de garder des commandes identiques de l'un à l'autre et surtout, de ne pas tout avoir à copier. Les auteurs envisagent d'implanter une structure vous permettant de recevoir les cinq programmes sur le même disque, mais nous reparlerons de celà. Petit rappel Les listings parus dans le précédent numéro, mettaient en place toutes les « commandes » et utilitaires nécessaires à la création d'écrans, en supprimant certaines tares des machines, telles le merge sur 464 + drive, ou encore le port imprimante 7 bits. Pendant que nous parlons de tares, faites l'essai suivant sur 464 : Tapez : 10' DISC, puis faites ENTER et LIST... MORALITE : pas de REM devant la barre. Mais ceci nous détourne de notre route. Donc tout est prêt pour dessiner, ne manquent que les dessins. Comme nous souhaitons vous voir personnaliser ces programmes, nous allons faire un rapide survol de la méthode employée pour créer nos polices. Bien entendu il sera insuffisant pour foncer tête baissée dans les modifs..., mais permettra aux débutants d'éviter quelques pièges, dans lesquels les auteurs sont naturellement tombés ! Comment dessiner ? Il faut tout d'abord savoir que l'écran du moniteur comporte -soit disant - 400 lignes et 640 colonnes, les points 0,0/0,400/ 640, 400 et 640,0 représentant dans l'ordre l'extrême gauche en bas, l'extrême gauche en haut, l'extrême droite en haut, et enfin l'extrême droite en bas. Ainsi, si vous faites ””PLOT 320, 200””, vous allez placer un point en plein centre de votre écran. Maintenant, traçons une ligne horizontale : — 10 MODE 2 : PLOT 300, 200 : DRAW 340, 200 (Nous la mettons en première ligne d'un mini-programme de démonstration)1. Vous voici en face d'une ligne de 40 pixels de long, située en plein centre de l'écran. Traçons une verticale : — 20 DRAW 340, 160 Deux constatations :
- les instructions DRAW s'enchaînent de telle sorte que la nouvelle origine prend pour coordonnées, les dernières de l'instruction précédente.
- , les traits n'ont pas la même largeur ? ? Que se passe-il ?
Ajoutez :— 30 PLOT 339, 200 : DRAW 339,160 Le trait vertical est maintenant de même largeur que le trait horizontal, et pour celà, il a fallu en tracer un second, juste à côté. — 40 PLOT 300, 201 : DRAW 340, 201 Oh la la, on dirait que la ligne 40 n'a pas d'effet ? — 50 PLOT 300, 199 : DRAW 340,199 Cette fois la ligne 50 double le trait horizontal, alors que l'on n'est descendu que d'un point... ? EXPLICATION : quand nous disions que l'écran faisait « soit disant 640 * 400 ”, c'est qu'il dispose effectivement de 640 colonnes et 400 lignes, mais que si, les 640 colonnes sont accessibles -, seules 200 lignes sont définissables. Celà ne nous facilitera pas la tâche, mais il faudre « faire avec » ! Effacez 40 et 50, puis ajoutez : — 40 DRAW 300, 200 Voici un triangle bien laid : les traits à 45° sont laids.. ; Pas si simple que celà, vous en conviendrez. Pour tout (ou presque) savoir sur SAO, lancez le petit programme suivant : — 10 MODE 2 : x = 1 : y = 1 : GOSUB 40 : x - - 1 : y = 1 : GOSUB 30 : x = 1 : y = - 1 : GOSUB 30 : x = -1 : y = -1 :GOSUB 30 — 20 x = 1 : y - 1 : GOSUB 50 : x = -1 : y = — 1: GOSUB 50: x = 1 : y = - 1, GOSUB 50 : x = - 1 : y = - 1 : GOSUB 50 : CALL &BB18 : GOTO 10 — 30 CALL &BB18 — 40 CLS : ORIGIN 300, 200 : DRAW 39 * x, 0 : DRAW 39 *x, 78 *y : PLOT 40 *x, 0 : DRAW 40 *x, - 80 *y : DRAW 0,0 :RETURN — 50 CALL &BB18 : CLS :DRAW 0,40 *y : PLOT 1 *x, 0 : DRAW 1 *x, 40 *y : DRAW -78 *x, 0 : DRAW 0,0 : RETURN.Il trace en triangle sous 8 aspects différents (appuyer sur une touche entre chaque position). Nous allons vous laisser réfléchir à la question, mais voici quand même quelques règles :1° en ligne 40, on introduit la notion d'ORIGIN. Celà veut dire que l'on ne va plus compter depuis l'origine 0,0, mais 300,200. Dans SAO, vous trouverez « ORIGIN v,w ». C'est la position du curseur que vous déplacerez avec les flèches. Comme le dessin se trace à partir de cette origine, il suivra (ou plutôt se redessinera) à chaque avancée du curseur. 2° Toutes les coordonnées des points sont multipliées par un coefficient x en abscisses et y en ordonnées. Nous passons par toutes les combinaisons possibles permettant d'inverser les signes de chaque valeur, en affectant à x et y, 1 ou -1. Vous êtes d'accord que 30*1 = 30 et 30 * - 1 = - 30 ? Donc, que se passe-t-il si l'on inverse les « x » ? L'image se retourne, comme dans un miroir placé de telle sorte qu'il passe par l'ORIGIN, et soit orienté verticalement par rapport à l'écran. Si c'est « y » qui devient négatif, le miroir est à l'horizontale. Dans SAO, quand vous appuierez sur « H » (inversion Horizon-taleà), « x » changera de signe. Si vous appuyer sur « V » (inversion verticale), c'est « y » qui sera modifié. Si vous appuyer sur H, puis V, x et y changeront etc... Tout ceci concerne, par exemple, le dessin défini ligne 40. A la ligne 50, nous avons fait une ROTATION à 90° du dessin précédent. En le redéfinissant malheureusement ! Mais ne mélangeons pas tout, il y aurait tant à dire... Donc ce nouveau dessin subit lui aussi les outrages des variations de x et y, et de ce fait, « tourne » quatre fois autour de ORIGIN. Avec deux dessins repé-sentant la même figure mais avec 90° d'écart, il est possible d'en afficher les 8 aspects possibles. Ainsi, dans SAO, quand vous appuierez sur « R » (Rotation), vous changerez de dessin, tout en concervant la possibilité de modifier x et-ou y avec H et V. 
Le fait d'appuyer sur R modifie l'état d'une bascule, faisant donc varier « z » entre 0 et 1. Les lignes où vous trouverez « IF z = 1 then gosub... » correspondront aux échanges de dessins demandés par la Rotation. Le principe est simple, la réalité... En effet, quelques lignes plus haut, nous regrettons d'avoir du redessiner la position « Rotation ». Il y a de quoi ! Car si l'écran disposait VERITABLEMENT de 400 lignes, une simple permutation des valeurs d'abscisses et ordonnées effectuerait le travail, et libérerait de la place mémoire. Eh oui, pour une même origine : PLOT 21, -48 : DRAW -56, 79, n'auraient qu'à se transformer en PLOT -48, 21 : DRAW 79, -56 pour effectuer une honnête rotation ! Ah çà marche, c'est vrai, mais pour le look... c'est plutôt décoiffé... Enfin, on ne peut exiger une haute résolution pour moins de 2000 Frs, ce serait mal venu. Nous n'avancerons pas plus dans les chemins tortueux du graphisme. Vous devriez, avec ces indication!?, mieux comprendre ce que vous aurez sous les doigts, dans SAO. Profitez ple:inement du court programme précédent : oubliez un " * x ", un "*y”, et observez ce qui se passe. Cela vous permettra de repérer très vite une erreur de frappe dans les listings importants. En cas de pépin, une bonne astuce : insérez des CALL &BB18 (attente de pression sur une touche), pour « décomposer » votre dessin en tranches. Note des auteurs Pour créer SAO (et ses compères), la démarche fut la suivante : tout d'abord un BESOIN d'outil performant utilisable sur une machine peu coûteuse, pour travailler plus vite (Alary). Puis le tracé (hésitant...) des premières lignes du projet, avec un ami parlant couramment ASSEMBLEUR (Capo).. Pendant environ huit mois, de refontes totales en remises à zéro, de centaines de version échangées par téléphone (sans modem...), d'accrochages verbaux dus aux incompatibilités entre les exigences et la place en mémoire, la rapidité et la qualité, chacun œuvra avec conscience au produit que vous offre ici RADIO-PLANS. A titre indicatif, SAO a demandé environ 500 heures de travail à deux. A. CAPO s'occupant essentiellement de la « tête » et J. ALARY des dessins. Tout ceci pour vous dire qu'ils s'engagent à ce que tout lecteur qui aurait tapé sans résultat SAO (ou tout autre programme de même signature), puisse recevoir GRATUITEMENT son programme corrigé. La procédure serait la suivante : envoyer la disquette (3”) sur laquelle le programme est tapé, dans une enveloppe matelassée (réutilisable) et accompagnée d'une feuille indiquant : le type exact de la machine, si la modification 8 bits a été effectuée, le (ou les) défauts constatés, et la somme en timbres pour le retour, à l'adresse suivante : P.A.S., à l'attention de M. ALARY, 26 bis, ************ 70000 VESOUL. C'est une garantie pour les courageux ! Complétons SAO La première opération consiste à taper les lignes 2000 à 4999 (figure 1), à la suite de « SCHE-MA.SCH », commencé le mois dernier. La ligne 4999 est une REM, vous signalant le début des colonnes mergeables.'Ne vous en souciez pas pour l'instant, et continuez à entrer les lignes 5000 à 5730 de « COL-3.BAS » (figure 2). SCHEMA.SCH doit donc aller maintenant jusqu'en ligne 5730. Sauvegardez-le au moins deux fois, sur deux disquettes différentes, par sécurité. Ceci fait, faites « LOAD SCHEMA.SCH )>, puis « DELETE -4999 », et enfin « SAVE COL-3.BAS ». Explication : Si vous regardez la photo du menu de SAO, vous constaterez que les 40 options sont réparties en 5 colonnes de 8. Les deux premières font partie en permanence de SCHEMA.SCH, la troisième étant installée par défaut : C'est le SCHE-MA.SCH que vous venez de sauvegarder. Mais, quand on appelle un dessin de la 4e ou 5e colonne, la colonne concernée vient prendre la place en mémoire, de la troisième (c'est un MERGE). Regardez les lignes 350 à 430 ! Et surtout 420, qui dit « ... DELETE 5000- » donc qui efface les lignes supérieures à 5000, pour réinstaller une nouvelle colonne. Au départ la colonne 3 est en place, vous demandez un dessin situé dans la colonne 4 : celle-ci se merge à la place de col-3, OK ! Maintenant vous redemandez un dessin appartenant à COL-3, le programme va vider l'emplacement mémoire et cherchera à merger COL-3, c'est logique. Donc, nous vous avons fait profiter du fait que SCHEMA.SCH comportait les éléments de COL-3, pour les isoler et les sauvegarder sous ce nom. Il est important de bien comprendre le mécanisme, pour deux raisons principales : - vous lancez le programme, demandez le quartz (28) Col-4, puis vous faites un break, une modif, et un save « schéma.sch ». Vous faites run, demandez les inters (20) et c'est le quartz qui vient. Eh oui, attention ! Il y a une solution : demandez à nouveau le quartz, puis l'inter, et faites une sauvegarde de schéma.sch.
Pendant les modifs ou améliorations, pensez à respecter les colonnes. - Si vous assimilez bien le mécanisme du logiciel, vous travaillerez deux fois plus vite : en effet, le merge prend quelques secondes pour installer une colonne. Quand vous demandez une colonne mergeable, essayez de l'utiliser au maximum ! Enfin, vous optimiserez mieux votre travail, quand tout sera fonctionnel !
COL-4 : Entrez les données de celle colonne (figure 3), et sauvegardez-les sous le nom de « COL-4.BAS). Les lignes vont de 5000 à 5750.COL-5 : Faites de même avec les lignes 5000 à 5730 de COL-5 (figure 4), et sauvez sous le nom de « COL-5 ». C'est FINI ! ! ! Faisons ensemble le catalogue de votre disquette : BIT8-INT.SCH (1K)/ COL-3. BAS (3K) / COL-4.BAS (4K) / COL-5.BAS (3K) / COPY-7B.SCH (1K) / COPY-8B.SCH (1K) / ROUTINES.SCH (1K) / SAO.BAS (3K) / SCHEMA.SCH (13K). Vous pouvez lancer par « RUN"SAO ». Mode d'emploi Pour vous éviter d'avoir RADIO-PLANS sur les genoux pendant les premières manipulations, nous avons décidé de vous offrir un VRAI mode d'emploi, de petit format certes, mais complet et bien imprimé : le grand luxe ! Il vous faudra commencer par détacher la double page centrale de ce numéro, et coupez soigneusement le pli, sans déranger les feuilles. Puis pliez en deux l'ensemble et coupez ce pli. Retirez la feuille sur laquelle est dessinée une paire de ciseaux, pliez en deux ce qui reste et agrafez. Il est mignon, non ? La feuille « aux ciseaux » comporte une jaquette à découper et à glisser dans la boîte en plastique de la disquette, et il reste un menu imprimé (qui vous fera gagner un temps précieux), au dos duquel se trouvent les possibilités nouvelles en alphanumérique. Enfin, pour les possesseurs de 464, l'avant dernière de couverture comporte un aide à couper et poser autour du pavé numérique. Ne cassez pas le petit livre ! Faites une photocopie sur papier jaune c'est parfait, et bien utile. Au fait, cet aide, ainsi que le dessin du clavier et la jaquette, ont été faits avec SAO ! Comme vous disposez d'un mode d'emploi complet, nous ne donnerons qu'une seule indication complémentaire avant de terminer SAO : Les dessins de cercles (exécutés points par points) peuvent surprendre le lecteur, qui penserait d'office à une courte formule trigonométrique. Ce serait oublier que SINUS et COSINUS sont les formules! les plus lentes du basic AMSTRAD ! Pour la petite histoire, les auteurs avaient foncé têtes baissées dans le panneau, et il fallait s'armer de patience pour placer un transistor ! La deuxième étape consista à ne déplacer qae le centre de ceux-ci et à ne dessiner le cercle qu'après un COPY : cent fois plus rapide, mais malgré tout trop long et peu élégant. Pour finir, c'est ce dessin lourd un PLOT et DRAW qui est le plus performant, bien que révoltant dans un listing. Avec les 20 Ko réservés aux échanges d'écrans, etc..., on marche sur un fil pour établir un bon compromis entre rapidité et place mémoire. A titre indicatif, si vous allongez SCHEMA.SCH de 6 Ko, vous plantez le siystème : même plus possibilité de sauvegarder sans avoir fait un CLEAR au préalable : trop court - plus possibilité d'intervenir dans le listing sans gène - donc à proscrire. Pensez que SCHEMA.SCH moins COL-3, plus la colonne la plus pleine = SCHEMA.SCH qui doit être inférieur à 19 Ko (indication du catalogue dise). Donc, si l'on prend COL-4 (4 Ko), celà donne : 13 - 3 + 4 = 14. Pas de problème, mais pour CIAO (circuits imprimés), J. Alary se bat pour faire tenir ses dessins sans merge dans 13 Ko pendant que A. CAPO se marre, après avoir réservé tout ce qui reste... ! Sympa. Surveillez donc soigneusement l'occupation mémoire si vous intervenez (ce que les auteurs souhaitent vivement). SAO n'est sans doute pas le logiciel de l'année, mais il s'est voulu souple et ACCESSIBLE à tous, tout en respectant un minimum de lois relatives à la sécurité d'emploi, la vitesse d'exécution, la puissance, le moins d'occupation mémoire possible, et sans compilation d'aucune sorte. Plus + Plus + C'est un cadeau des deux compères qui signent ces pages, ou : A&C VOUS OFFRE « PLUS » POUR VOTRE CPC ! Pour tout AMSTRAD CPC + DRIVE (s) Nous vous avions promis le mois dernier, un programme regroupant le « MERGE » pour 464, le « 8 BITS INTERNE », et la COPIE D'ECRAN à 8 BITS. Ceci pour vous permettre d'utiliser ces fonctions en dehors du logiciel « SAO ». Nous avons donc isolé les octets concernés, mais nous n'avons pas résisté à la tentation d'en ajouter quelques autres... PLUS.DAT La figure 5 présente le listing de « PLUS.DAT ». Ce programme obéit à la même loi que les chargeurs du mois dernier : le taper. Le sauvegarder. Faire des « RUNs » jusqu'à ce que plus aucune erreur ne soit signalée. Et enfin, sauvegarder le fichier binaire « PLUS.BIN » en reprenant par « COPY » le message affiché à l'écran. PLUS.BAS Le court listing de la figure 6 protège la mémoire, charge le fichier « PLUS.BIN », puis l'éxécute. Effets Effectuez un RESET (indispensable), puis tapez : RUN « PLUS.BAS » : - La mémoire à été abaissée à &9AFF.
- Vous pouvez effectuer des « MERGEs » sur le 464, sans risquer le « EOF MET », sous réserve de ne pas « chercher le plantage », tel merge d'un fichier binaire, etc...
Il fonctionne sans problème sur les autres CPC (transparent).- A condition d'avoir réalisé le montage du mois précédent, votre port d'imprimante est maintenant un vrai 8 BITS.
- Vous disposez de huit instructions BASIC supplémentaires, appelées « RSX ». On les reconnaît à la barre verticale précédant leur nom (elle s'obtient par SHIFT + @). Ces instructions restent opérationnelles tant que l'ordinateur n'a pas subi de RESET.
Cinq commandes concernent les images standard (17 Ko sur la disquette) :- |LOADIMG, « nom.extension » : Chargement de l'écran avec une image.
- |SAVEIMG, « nom.extension » : Sauvegarde de l'image affichée.
Ces deux RSX ont des points communs :Le CPC 464 exige une syntaxe légèrement différente. L'ensemble « nom.extension » doit être placé dans une variable, comme dans cet exemple : var$ = « IMAGE.BIN » : |LOADIMG,@ var$. Si aucune extension n'est spécifiée, celle prise par défaut sera « .BEN ». Il est possible de charger (ou sauver) une image depuis un autre lecteur que le lecteur courant : |LOADIMG, « B:IMAGE.BIN » cherchera l'image sur le drive B même si le lecteur actif est A : - |REVERSEH : Inversion horizontale de l'image affichée à l'écran. Ce qui est à droite passe à gauche, et récipioqueent. A utiliser surtout en MODE 2, sinon, les couleurs sont inversées elles-aussi.
- |REVERSEV : Inversion verticale.
- |INVIDEO : Inversion vidéo. Deux commandes pour le port d'imprimante :
- |BIT7 : Le port redevient un 7 BITS. Les lecteurs n'ayant pas effectué le montage du mois dernier DOIVENT taper cette commande. Idem pour ceux qui disposent d'un interface 8 BITS externe (dans ce cas, il existe une zone libre entre & A59B et A67B pour y placer leur propre fichier binaire).
- |BIT8 : Rétablissement du 8 BITS INTERNE. Rappelons qu'ü est automatiquement mis en place au lancement de « PLUS.BAS ».
Une commande d'impression :- |PRINTER, nombre de passes : Pour port d'imprimante à 8 BITS. C'est la copie d'écran de « SAO », mais ici, on peut programmer le nombre de passages de la tête sur une même ligne.
- |PRINTER sans argument exécute une seule passe (idem avec 0 ou 1). On peut interrompre l'impression en tapant « Q » majuscule.
Exemples d'utilisationL'écran de présentation de « PLUS.BAS » va nous servir à effectuer une petite démonstration. Après un run « PLUS, vous disposez d'une image à l'écran. C'est du texte, mais celà importe peu. Tapez : |REVERSEH : CALL &BB18 : |REVERSEV : CALL &BB18 : |INVIDEO A chaque appui sur une touche quelconque, une opération s'effectue (elle se fait aussi sur la ligne écrite en mode direct). Plus fort encore : supposons que vous ayez 3 dessins appelés A.SAO, B.SAO, C.SAO, et que vous souhaitiez les imprimer en triple passe : Tapez : MODE 2:a$ = ”A.SAO” : |LOADIMG, @a$ : |PRINTER, 3: a$ =”B.SAO” : |LOADIMG, @a$: |PRINTER, 3: a$ = ”C.SAO”: |LOADIMG, @c$: |PRINTER, 3Tout se fera en chaîne, et avec une telle ligne, vous pouvez partir faire vos courses, les machines en ont bien pour une heure !Conclusion Vous disposez de tout pour exploiter SAO, et nous pensons qu'il vous deviendra rapidement indispensable. A partir d'une telle « tête », il est possible d'envisager une multitude de programmes spécifiques et compatibles, en changeant simplement les polices de dessins. Le mois prochain sera un exemple flagrant avec IAO (dessins de composants ech 1). Avec CIAO, vous découvrirez en plus des dessins programmables en cours de travail... Toujours sur la même base. Ah, il faudra que l'on vous dise aussi comment réencrer vos rubans d'imprimantes, car la copie graphique est gourmande ! Bonne frappe et à bientôt. A. CAPO - J. ALARY 
NDLR : faute de place, nous n'avons pu publier la double page de notice du logiciel complet qui était prévue pour ce mois-ci. Vous la trouverez en encart central dans notre prochain numéro. |