★ APPLICATIONS ★ DIVERS ★ S.A.O (RADIO-PLANS N°476/477) ★ |
SAO, Logiciel de dessin de schémas (Radio-Plans n°476) | SAO, Logiciel de dessin de schémas : Suite et fin (Radio-Plans n°477) |
SAO fonctionne sur Amstrad CPC 464 avec drive, CPC 664 et CPC 6128. Une routine de recopie d'écran intégrée, permettra l'impression sur Amstrad DMP-2000 ou toute autre imprimante compatible (codes Epson). Il permet bien entendu de dessiner des schémas électroniques, mais aussi des diagrammes, des tableaux, et la banque interne de 40 figures sera modifiable à volonté. Plus de 200 dessins de composants sont ici offerts, ainsi que l'écriture alphanumérique comportait les signes et lettres utiles en électronique, plus... Six mois de travail, d'essais, de modifications, pour vous offrir un logiciel surprenant et simple à adapter ! La rédaction de Radio-Plans et les auteurs sont fiers de vous présenter la version définitive de cet outil de travail qui deviendra vite indispensable. Sa description sera séparée en deux parties :
Voyons donc ce mois-ci la première partie. Tous les listings présentés ici, doivent être sauvegardés sur une même disquette, au format SYSTÈME (standard sur 464 + CPM/ 2). Dans toute série qui se respecte, il est d'usage de présenter les acteurs lors du premier épisode (rassurez-vous, il n'y en a pas autant que dans DALLAS), nous allons donc passer en revue les différents fichiers composant cet univers impitoyable... SAO, bas Le premier listing, qui a pour nom « SAO.BAS » figure 1, est court ; c'est pour s'échauffer les doigts... En fait, il a aussi d'autres fonctions plus importantes que nous allons détailler. Tout d'abord une phase interactive où il vous sera demandé :
Une dernier mot sur « SAO. BAS ». Le sous-programme de redéfinition des touches du pavé numérique (ligne 400 et suivantes) peut être modifié ou complété par vos soins, afin d'y ajouter les caractères que vous jugez utiles de pouvoir écrire dans vos schémas. Ces caractères peuvent être, soit des symboles déjà existants (code ASCII 128 à 255), soit des caractères redéfinis par l'instruction SYMBOL, soit des groupes de caractères entre guillemets. Prenons l'exemple du symbole « Q » affecté à la séquence CRTL + « 0 ». Il porte le code ASCII 191. Dans un premier temps, il faut associer ce code à une touche virtuelle repérée par un numéro logique (les numéros logiques disponibles vont de 141 à 159). Donc, en ligne 430, nous avons « KEY 141, CHRS (191) » ce qui signifie : la touche 141 écrit le symbole 191. Mais la touche 141 n'existe pas encore physiquement. Il faut donc maintenant la rendre accessible depuis le clavier et c'est le rôle du « KEY DEF 15, 0, 128, 128, 141 » (toujours en ligne 430). Voyons en détail ses cinq paramètres :
Vous pouvez déjà taper et sauvegarder « SAO.BAS » ! (en laissant en place la REM de la ligne 10 pour l'instant). Les fichiers binaires Ils sont au nombre de quatre Amais il ne sera pas nécessaire de les saisir tous. En effet, comme expliqué au chapitre précédent, celà dépend de votre propre équipement. La figure 3 vous précise leur adresse d'implantation en mémoire (c'est l'adresse du premier octet de chaque fichier), selon les trois possibilités que nous connaissons déjà. Tous ces programmes sont des chargeurs BASIC construits selon un même modèle, et dont le nom porte l'extension « .DAT » (pour DATA). Suite à la saisie de chaque listing, il vous faut tout d'abord le sauver sur disque avant de le lancer par « RUN ». Si une erreur est détectée, le programme vous indique dans quel block elle se trouve. Après correction refaites un « RUN ». Si tout va bien, il affiche une ligne qu'il vous suffit de reprendre avec le curseur de copie, pour sauvegarder le fichier binaire sur votre disquette au format SYSTEME. Il porte maintenant l'extension « .SCH ». Nous vous conseillons vivement d'effectuer un RESET après chaque sauvegarde de fichier binaire.
El ne vous reste plus qu'à éteindre votre précieuse machine et à faire chauffer votre fer à souder... Réalisation Au risque de nous répéter, précisons qu'il n'est pas du tout impératif d'effectuer cette modification pour exploiter SAO. Pourtant, si vous ne risquez plus de perdre une garantie, les auteurs vous conseillent très vivement ce passage à 8 bits du port d'imprimante. Pour leur part, ils en exploitent les avantages — l'un sur 464 l'autre sur 6128 —, depuis un an environ, sans problème. La solution retenue est la moins coûteuse qu'il soit possible d'envisager, tant sur le plan de l'énergie que du portefeuille. Les auteurs ne revendiquent nullement la paternité de l'idée, mais seraient bien en peine de citer le réel géniteur, car de multiples signatures se sont posées sous des articles quasiment identiques ! Le « plus » que nous proposons, tient dans la routine d'analyse, totalement transparente : il n'est plus nécessaire ici de faire des commutations logicielles, pour ne passer en huit bits que pour les modes graphiques. Voyons le principe : Quand il s'agit d'imprimer, tout passe par une routine système d'adresse hexa BD2B. Celle-ci reçoit en entrée, le code ASCII du caractère ou l'image binaire du point à imprimer. iSn sortie, elle envoie les bits 6 à 6 de ce code sur le port d'imprimante. Le « SOFT » a deux rôles. La première partie détourne toutes les données arrivant en BD2B sur la seconde partie. Là, chaque code est analysé, et on isole son 8e bit (ou bit N° 7). Ce bit est alors envoyé au 8255 où il apparaît sur la broche N° 12. Cette sortie est une bascule qui va donc positionner la piste correspondante du port d'imprimante à 1 ou 0, par l'intermédiaire du fil soudé entre ces deux points. Ensuite, la main est rendue à BD2B qui remplit sa fonction habituelle. Donc, à l'instant où cette routine libère les 7 premiers bits, le 8e est présent à l'appel et l'imprimante reçoit bien les 8 bits attendus. En fait, le 8° bit est reconstitué à l'aide de circuits détournés. A l'origine, la broche 12 du 8255 est réservée à l'écriture des données dans l'interface cassette, fonction qu'elle continue de remplir. Si l'on part du principe que l'on n'a pas besoin des envois de données sur cassette quand l'impression est demandée, on ne se rend compte d'aucune gène (si l'on n'a pas oublié de lancer le logiciel !). La figure 8 est coupée en deux : la partie « a » montre la modification de principe, la partie « b », celle de « terrain ». La broche 9 du PRINTER PORT, au lieu d'être en permanence portée à zéro volt, est reliée à la broche 12 du 8255. C'est tout ! Le choix vous est laissé de mettre en place ou non, un inverseur permettant de revenir à l'état originel. Les photos vous montrent un 464 avec inter 4- led (visualisant la position 8 bits), ainsi qu'une cinch offrant la possibilité d'accéder au 5 V interne. C'est celui de l'auteur cobaye... Pour le 6128, un simple inverseur (que son propriétaire laisse en permanence sur la position « 8B »), a suffit. Pour mener à bien cette opération, deux observations s'imposent :
Naturellement, nous n'insisterons pas sur les précautions à prendre au moment d'ouvrir la machine, ou de déconnecter le clavier de la carte principale. Sur le 6128, il est plus simple de souder le fil directement sur la patte 12 du 8255. Pour le 464, un trou métallisé est très facilement accessible. C'est lui qui sert de relais. La figure 9 vous donne les repères utiles pour positionner l'inverseur sur 464 et 6128. NOTA : Pas de perceuse dans le plastique S.V.P. ! Le forêt monté dans un mandrin à main, est beaucoup plus simple et rassurant... Tests Vérifiez l'absence de « corps étrangers » à l'intérieur de votre machine. Refermez-là, et passez aux essais : l'inverseur doit être en position 8 BITS. La première vérification consiste à faire fonctionner la machine sans le « SOFT », c'est-à-dire en 7 BITS. Il suffit donc de faire imprimer les codes habituels 32 à 126 par une boucle du type : « FOR i = 32 TO 126 : FRINT#8, CHR$(i) ; NEXT », ou même d'effectuer un simple « LIST#8 ». Çà marche ! Nous voyons donc que le nouveau port 8 BITS est compatible avec l'ancien : vous pouvez laisser l'inverseur sur 8 BITS, en permanence, avec ou sans logiciel. Et le 8e BIT ? Si vous possédez une DMP-2000, assurez-vous que le DIP DSI-7 (7 ou 8 BITS) est en position haute. Puis charger « BIT8-INT.DAT » et faites un « RUN ». Effectuez la sauvegarde du fichier binaire si ce n'est pas encore fait. Tapez « CALL &A596 ». Et voilà, le huitième BIT existe ! Toujours pour la DMP-2000, reportez-vous à la page 1, chapitre 6 du manuel de l'imprimante (AUTRES FONCTIONS...). Vous pouvez y lire « Développement du nombre de codes mprimables, pour sortie à 8 BITS seulement ». Suivez les instructions et vous aurez une preuve tangible de la présence des 8 BITS. Pour sélectionner cette fonction, tapez CHR$(27) ; « 6 » et non pas CHR$(27) ; CHR$(6). Si votre imprimante n'est pas une DMP-2000, nous vous invitons à vous reporter à son mode d'emploi afin de profiter des fonctions supplémentaires offertes par le port à 8 BITS. Voilà pour la partie pratique. Comme vous pouvez le constater, aucune alimentation n'est nécessaire, et la modification est ridiculement simple. Il faudra penser à charger le logiciel adapté à votre machine : 464, 664, 6128. Entre les trois machines, le Hard est identique, seul le Soft doit être adapté. Schéma.SCH Nous avons divisé ce programme en deux parties bien différentes. La deuxième, composée exclusivement des sous-programmes de dessin des composants, sera publiée le mois prochain. La figure 10 nous montre donc la première partie du listing de « SCHEMA.SCH ». Il ne sera pas fait ici d'analyse ligne par ligne. Nous tenterons simplement d'expliquer le rôle de chacun des modules indépendants composant ce programme : — LA BOUCLE PRINCIPALE (lignes 70 à 130). Son instruction centrale est « CALL &A300 » : on fait appel à une routine binaire contenue dans « ROUTINES.SCH ». Elle a pour but d'afficher le composant choisi au menu et de tester les touches du clavier. Suivant les touches appuyées, le composant sera retourné, déplacé, fixé, ou effacé. Le principe d affichage devait répondre à trois critères :
La figure 11 décrit le cycle d'affichage. La ZONE 1 correspond à la mémoire-écran. La ZONE 2 est un tampon de 16 Ko, pouvant être remplit avec cette mémoire-écran. Au lancement de « SAO », tous les octets d e ce tampon sont à zéro, il affiche donc une page blanche. Le cycle consiste à faire apparaître alternativement à l'écran la ZONE 1 et la ZONE 2. Entre ces deux apparitions, le composant choisi peut subir toutes les transformations souhaitées. La fonction d'échange ZONE 1/ZONE 2 est assurée par une routine binaire : sa rapidité est telle que le transfert est indiscernable. Un appui sur « COPY » a pour effet de recopier ZONE 1 dans ZONE 2 et, tout composant « COPYier » apparaîtra dorénavant, quelle que soit la ZONE présente à l'écran. La touche « DEL » fait de même, à la différence que le composant est redessiné avec la couleur du fond avant la recopie. Ainsi, il disparaît. Dans cette BOUCLE, nous trouvons également un test — en BASIC — de l'appui sur les touches « C » et « G ». Elles commandent respectivement l'affichage des coordonnées du curseur graphique (GOSUB 1040), et celui d'une graduation sur le pourtour de l'écran (GOSUB 870). La ligne 80 provoque un « bip » dès que l'on sort des limites de cet écran. — LE MENU GÉNÉRAL (lignes 220 à 430 de la figure 10). Il affiche cinq colonnes de huit composants, et un bandeau supérieur donnant accès aux autres fonctions du programme. A chaque demande d'un nouveau composant (nombre entre 1 et 40), on regarde si ce composant est présent en mémoire. Si ce n'est pas le cas, on « MERGE » la colonne dont il fait partie (voir lignes 350 à 420). Avant un « MERGE », on vérifie si la disquette placée dans le lecteur « A » est bien formatée en SYSTÈME. Celà évite dans une certaine mesure, les « COL-X.BAS not found ». La sélection d'une lettre du bandeau en vidéo-inverse renvoie aux différents sous-programmes concernés. Vous pouvez consulter à ce sujet, la figure 12. Elle montre un organigramme très simplifié de « SCHEMA.SCH ». — REPERTOIRE / CHARGER / SAUVER / ERASER. Ces quatres modules s'étendent de la ligne 480 à la ligne 640. Ils sont traités ensemble puisque leurs caractéristiques sont communes. On effectue un test de présence et de formatage de la disquette (DATA), puis on affiche un catalogue, avant de se brancher sur le sous-programme demandé. Les fonctions « CHARGER » et « SAUVER » sont remplies par une routine binaire (le « CALL inout ! » en lignes 570 et 600) et « ERASER » s'accommode de toutes les fantaisies. Autrement dit, le programme ne plantera pas lors des opérations de sauvegarde, chargement et effaceraient. Dans tous les cas, ces quatre modules aboutissent à la ligne 640 qui nous renvoie au MENU général. — IMPRESSION / NOUVEAU / QUITTER (lignes 650 à 790). Là encore, beaucoup de points communs à ces trois sous-program-mes : affichage d'une fenêtre (ligne 660 et GOSUB 810) demandant une confirmation de la commande. Action, puis retour au MENU général. L'impression utilise le fichier binaire « COPY-7 ou 8B.SCH » par le « CALL hardcopy ! » de la ligne 700. L'option « NOUVEAU » efface le dessin en cours, en remettant à zéro les octets de ZONE 1 (la mémoire-écran) par un « MODE 2 ». Ensuite, ceux-ci sont recopiés dans ZONE 2 (la mémoire-tampon) par la routine « trans ! » (voir ligne 750). Enfin, « QUITTER » sort du programme en « laissant les lieux dans l'état où il les a trouvés en entrant ». Le « CALL 0 » en ligne 790 équivaut en effet à un RESET. Voici enfin quelques recommandations pour la saisie : Certaines variables se terminent par un point d'exclamation (!). Celui-ci sert à les définir comme réelles, les autres étant entières. Ne l'oubliez surtout pas ! Accordez une grande attention aux noms des variables en général, les erreurs pouvant en résulter étant très difficiles à localiser. N'hésitez pas à prendre votre temps pour recopier les fichiers publiés ce mois-ci : de fréquentes sauvegardes temporaires valent mieux que de multiples erreurs de saisie, dues aux yeux rougis par la psychose du « syntax error ». Nous déclinons toute responsabilité en cas d'internement prolongé ! Conclusion Vous devrez attendre le mois prochain pour essayer, et voir enfin fonctionner « SAO ». Croyez-le, nous le déplorons, mais cela aurait nécessité d'inclure ici, des pages destinées au prochain article : dessin de composants, phase d'essai, et surtout, le mode d'emploi. Vous comprendrez sans doute qu'il eût été injuste d'envahir RADIO-PLANS avec un sujet unique, si intéressant soit-il... Nous espérons sincèrement que cette frustration insoutenable ne vous poussera pas à la dernière extrémité, et souhaitons vivement vous retrouver le mois prochain, pour le second et dernier épisode de cette palpitante série... Jean ALARY et Alain CAPO, Radio-Plans n°476 |
|
|