| ★ APPLICATIONS ★ DIVERS ★ S.A.O / I.A.O / C.I.A.O (RADIO-PLANS N°482/484/485) ★ |
| S.A.O / I.A.O / C.I.A.O Cadeaux ... (Radio-Plans n°482) | SAO sans merge, et sans le 8e bit sur 464 et Co. (Radio-Plans n°484) | I.A.O / C.I.A.O v2 (Radio-Plans n°485) |
Voici la fin des nouveaux listings sans merge, aux impressions programmables, etc., vous permettant de disposer de la toute dernière version pour CPC 64 (et frères) 7bits.Si nous disons « dernière », c'est à double sensl à la fois, nous n'y reviendrons plus (sauf peut-être par petites touches en nota au cours de développements ultérieurs), mais c'est aussi la toute dernière mouture, issue de vos suggestions et de nos recherches pour vous satisfaire, Pour que vous sachiez tout, ces pages ont été écrites trois fois, suite à des améliorations de dernière minute dont nous ne voulions pas vous priver. Mais ces retouches ont été faites de sorte que chacun puisse . apporter telle ou telle autre possibilité supplémentaire dans son propre travail. Ainsi ne faudra-t-il pas vous étonner d'insertions de lignes aux numéros fantaisistes : c'est le prix de notre compatibilité. Les méthodes de travail proposées dans le numéro précédent sont toujours d'actualité et nous conseillons vivement aux nouveaux venus de s'y reporter. Dans le lanceur du mois dernier, nous avons oublié une ligne définissant le signe « supérieur ou égal » utilisé dans l'option « nouvelle norme logique ». C'est ainsi que le dessin d'un petit bonhomme remplaçait gaiement le symbole austère... Pourquoi pas ? diront certains, mais ce n'est pas du goût de tous ! Aussi la figure 1 répare l'outrage : il faut ajouter une ligne 635 définissant le graphisme qu'appellera le KEY 153 (ligne 755). Pendant que vous serez dans le lanceur AC, faites donc la modification très simple donnée au paragraphe suivant. Chargement des options Tous les lanceurs proposés jusqu'alors disposaient des options par défaut « moniteur monochrome, deux lecteurs de disquettes, les flèches du pavé numérique permettant de les adapter à tous les cas possibles. Vous avez été très nombreux à regretter qu'il ne soit pas prévu d'implanter « par défaut » votre propre configuration. Il est vrai que pour ceux qui travaillent en couleur et sans lecteur de disquette supplémentaire, la manipulation à chaque lancement devient vite exaspérante. Pour résoudre ce problème, certains d'entre-vous nous ont proposé des fichiers d'installation plus ou moins complexes ou performants en tous cas beaucoup trop compliqués et lourds à manipuler pour une tâche aussi simple. La figure 2 vous propose de modifier 5 lignes dans le lanceur, (190 200 290 300 320) et d'ajouter une ligne 199. ATTENTION : ce court extrait de listing est destiné à vous repérer aisément dans votre propre lanceur, les numéros de lignes donnés ici sont ceux de celui donné le mois dernier. Comme vous pouvez le constater, les changements sont mineurs et le principe ridiculement simple mais performant, puisque laissant toujours la possibilité d'agir sur les flèches du pavé. La méthode est simple : la ligne 199 comporte deux variables « parlantes » : DISCSUP(plémentaire) et COULEUR. Si vous avez un second lecteur et un moniteur couleur, il vous faudra donner la valeur « 1 » aux deux variables. Sans second drive et en monochrome, c'est « 0 » qui conviendra. Il suffit donc de mettre une fois pour toutes les valeurs correspondant à votre configuration la plus courante et le tour est joué. Cercles concentriques Dans la version donnée le mois dernier, si les cercles de diamètre 3 à 6 se trouvaient parfaitement concentriques au moment de leur venue en 320 * 200, les plus petits (1 et 2), se dispersaient espièglement. Il semblait aux auteurs que cela importât peut, dans la mesure où il est rare de fixer en 320 * 200 et qu'au besoin les petits étaient vite recalés avec les flèches. Mais vous êtes exigeants et vous avez raison, surtout quand la modification est minime et qu'elle permet d'illustrer un principe largement utilisé dans tous ces programmes, vous permettant ainsi de les adapter facilement à vos idées et surtout de bien comprendre les lois à respecter pour conduire rapidement au succès. L'exemple est particulièrement bien choisi, car la solution va permettre (en quatre petites modifications données à la figure 3), d'expliquer simplement les commandes entraînées par deux variables fondamentales : a et t. Profitons de l'instant pour dire aux débutants qu'il n'y a aucune différence entre les variables a et A.C'est pour des raisons de clarté qu'il est souvent fait mention de variables en minuscules, mais ce n'est absolument pas indispensable, majuscules et minuscules pouvant d'ailleurs cohabiter sans problème. Les habitués doivent sourire, mais nous avons eu au téléphone un lecteur qui avait tapé tous les listings sans faute (alors qu'il n'avait acheté son ordinateur que quelques semaines auparavant !) et qui nous signalait au cours d'une discussion amicale le temps considérable passé à se battre avec le CAPS LOCK. Seuls les textes écrits entre guillemets doivent être respectés : il peut s'agir de messages (donc de qualité de présentation), ou de variables chaînes. Exemple : INPUT a$,IF a$= «a» or a$= «A» then... Ici, on s'assure de bien accepter pour commande commune à l'exécution qui suivra « then », une réponse en majuscule ou en minuscule. Il est une autre façon d'agir (voir UPPER$ dans votre manuel), mais sans intérêt ici. Mais revenons au problème posé. Si l'on observe le défaut d'origine des cercles, on constate qu'il ne se manifeste qu'en X. C'est donc à la variable «v», qu'il faudra toucher (w correspondant à Y). Voyons donc comment agir : Les cercles sont accessibles au menu par l'option «16». En ligne 155 de SCHEMA.SCH, on trouve « ON a GOSUB... », suivi de 40 numéros de lignes. Comptons la 16e : 4510 et alons jeter un coup d'œil par là-bas. Tout d'abord x et y sont fixés à 1 afin d'interdire une inversion verticale ou horizontale totalement inutile, puis en 4520 et 4530 apparaissent la demande de diamètre suivie de sa conséquence : l'application en fonction DIA d'une nouvelle valeur pour a. Si ces nouvelles valeurs sont comprises entre 84 et 89, c'est pour des raisons personnelles (et donc arbitraires), ne cherchez pas plus loin qu'une adaptation de la version turbo comportant 80 polices au lieu des 40 disponibles ici. Donc, si l'on vous indique par exemple DIA = 3, «a» passe à 86 et comme un return renvoie à ce fameux « on a gosub... », on repart de suite vers la ligne 2066, qui comporte le paramètre indispensable au tracé voulu et l'adresse à la routine de tracé commune (2065). C'est à cet endroit que sont fixées les origines des cercles de 3 à 6. Faites par vous-même le cheminement pour les diamètres 1 et 2, et vous constaterez qu'on abouti non plus à la routine commune, mais à un tracé par points (2050 et 2065). C'est que ces deux cercles sont utilisés dans le tracé des transistors et des LED. Si on forçait les origines dans ces deux lignes, on déréglerait totalement les dessins de ces composants. Il ne faut donc pas y toucher et pourtant, eux-mêmes ne sont pas concentriques ! Comment faire ? Facile : on admet de considérer l'un d'entre eux (le premier) comme référence, puis on recale facilement les diamètres 3 à 6, en ajoutant 17 à la valeur de v (en 2065). Il ne reste plus que le diamètre 2 à corriger, sans toucher à la ligne 2060. Pour ce faire, on change la ligne de renvoi de a = 84, et on passe de 2060 à 2075. C'est cette ligne intermédiaire qui va corriger l'origine (v + 8) et rebrancher en 2060 pour tracer. Tout est rentré dans l'ordre ! Mais la figure indique une 4e ligne à adapter : 4520. Ici, on traite un peu différemment dia + 0, afin de sortir plus élégamment en cas de besoin. Pour celà, on donne à «t» la valeur 3, permettant de revenir à la fenêtre « choix composant ». Les valeurs données à t correspondent respectivement à 1 = COPY, 2 = DEL, 3 = retour à la fenêtre « CHOIX COMPOSANT », 4 = retour au MENU et les branchements se font en ligne 120 (on t gosub...) Voilà ! Vous voyez, c'est simple et TOUS les logiciels de cette série subissent les mêmes lois. Un dernier point au sujet des cercles : si vous faites une impression sous SAO, vous obtenez par exemple pour le cercle n° 6, un diamètre horizontal de 9,2 cm et un diamètre vertical de 9,6 cm... C'est ce qu'on appelle une élipse ! Faites maintenant une impression sous CIAO (ou PLUS V2), ECH. 2, et vous verrez que votre cercle est parfaitement rond. Le rattrapage d'échelle corrige donc la montée de papier de 5 mm environ tous les 10 cm. Vous voyez ainsi avec un exemple simple, l'importance de cette correction pour les dessins de circuits imprimés : sans elle, vous auriez un défaut de 2,5 mm par 5 cm (éch. 1), donc totalement inacceptable. Notez enfin que ces nouveaux listings vous offrent cette correction, sans obligation de modif 8 bits, précédemment indispensable ! Listing IAO Il est donné intégralement à la figure 4 et mérite peu de commentaires, dans la mesure où il exploite sans vergogne les améliorations appliquées à SCHMA.SCH le mois dernier. Il comporte toutefois quelques particularités intéressantes, comme celle visible dans les lignes 3850 à 4530 et qui concerne le tracé des boîtiers de circuits intégrés. C'est une étape vers la programmation largement utilisée dans CIAO et il est aisé de voir que les variables nécessaires à l'affichage des éléments de dessin ont été isolées, afin d'autoriser à la fois des adaptations rapides et permettre un gain de place en mémoire relativement important. CIAO C'est ici que se retrouvent groupées les plus intéressantes modifications (figure 5). Parmi celles-ci, citons la correction de largeur des traits impairs, la rotation des DIN 41612, la visualisation d'un rectangle tiré dans une zone « remplie » précédemment par la couleur du crayon, le traitement total des saisies de programmation, la possibilité de donner un nombre pair aux pastilles décalées, etc. Nous n'allons pas vous donner tous les détails qui ont conduit à ces changements, mais vous indiquer quand même quelques clés majeures, afin que vous puissiez mieux comprendre ces fichiers dont l'absence de REM fait désormais cruellement défaut. Largeur des traits impairs Il est bien difficile de travailler correctement avec une définition d'écran de 640 * 200 pour un dessin technique : le choix de l'échelle 2 est le minimum admissible au niveau qualité et le maximum en occupation d'écrans. Il faut donc toujours faire un compromis et le bon choix n'est pas immédiatement évident. Aussi avons-nous décidé que pour les largeurs de trait impaires, il valait mieux opter pour une valeur supérieure à celle qui avait été retenue au départ pour les lignes horizontales. Quand un trait de largeur 3 était choisi, il ne faisait que 2 à l'horizontale et fera 4 désormais. Pour celà il faut détecter si le choix est pair ou impair et dans le second cas ajouter 1 point de plus en x. Ces opérations tiennent dans les lignes 3515 à 3550. Les débutants constateront l'utilisation de l'instruction INT et sa particularité de faire l'arrondi par défaut, pour détecter un nombre impair (ligne 3515). Rotation des DIN et complément aux pastillages décalés : Il s'agit essentiellement pour les DIN, d'une seconde séquence pilotée par un IF Z = 1 then... et pour le pastillage, d'une analyse des répartitions en fonction de la parité ou non de la programmation (lignes 4105 à 4360). Visualisation des rectangles dans des zones remplies par la couleur de l'encre : Dans la précédente version, seul le curseur était visible à l'intérieur d'une surface « peinte », et dès que copy était fait, on était condamné à avancer au radar... Cette fois, c'est terminé : si vous voulez ouvrir une fenêtre dans un plan de masse, vous voyez exactement ce que DEL enlèvera. Pour ariver à ce résultat, il a fallu passer par le mode graphique XOR et en veillant bien à ce que le système fonctionne sur 464. En effet, 664 et 6128 acceptent un quatrième paramètre aux instructions DRAW et PLOT pour la sélection du mode graphique, mais pas le 464. Donc interdiction de l'utiliser ici. Le mode XOR est donc mis en place dans la ligne 6 (les 5 POKE). Pour l'activer, il faut faire CALL &5AF9.1 et le retirer demande un CALL &5AF9,0. Vous retrouverez ces commandes dans les lignes 3150 à 3185 (police du rectangle dans CIAO). Nous ne doutons pas que vous soyez impatients de tester cette nouvelle possibilité particulièrement attrayante et si facile à insérer dans vos listings. N'oubliez pas les 5 POKE de la ligne 6 si vous implantez cette amélioration dans les listings de première génération, mais surtout oubliez BORDER PEEK &A626 ! Sécurités des saisies de programmation : Dans le numéro 479 nous vous invitions à surveiller vos réponses aux demandes 17 à 24, car aucune sécurité n'avait été mise en place. Cette fois, c'est fait et l'on dispose également d'une demande de confirmation avant de commencer la programmation par elle-même. Si on est d'accord, il n'est pas impératif de répondre «0», ENTER ou RETURN accélèrent la manœuvre. Par contre, après avoir confirmé, il est impossible d'entrer n'importe quoi (par exemple DIPS à zéro patte, etc.). La possibilité de sortir si vous vous êtes trompé de commande est très utile, car elle évite de déprogrammer la demande erronée. Ces sécurités sont engagées à partir des lignes 5010 et font appel au sous-programme 8000. Voilà l'essentiel de ce que vous devez connaître avant de modifier vos fichiers. Attention néanmoins de ne pas aller trop vite, car certaines variables ont été transformées : ainsi esp O est devenue espa, bro O s'est transformée en bro, etc. Ces changements ont bien évidemment pour but de ne pas gaspiller l'espace mémoire. Astuces Deux « trucs » particulièrement intéressants : MEMORY FULL est le message le moins agréable à recevoir en programmation... Il peut pourtant parfois surprendre et le court programme suivant va vous le confirmer : 5 i = 0Le MEMORY FULL est garanti ! Bien sûr il s'agit d'une erreur de programmation et le GOTO 10 devrait être un RETURN, mais dans des listings qui n'arrêtent pas d'effectuer des renvois, la détection d'une telle erreur n'est pas aussi évidente que dans notre exemple. Mais voyons plutôt ce qui s'est passé : assurément, la mémoire n'est pas pleine. Faites donc PRINT i. Une valeur proche de 80 témoigne de l'arrêt du système. C'EST LA PILE QUI EST SATURÉE : empilée régulièrement sans jamais être dépilée (ce que ferait RETURN), elle se sature et envoie l'horrible message. |
| ![]() |
|