APPLICATIONSDIVERS ★ 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 = 0
10 GOSUB 20
20 i = i + 1 : GOTO 10

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

Vous conviendrez toutefois que cette valeur d'environ 80 est déjà en soi une performance et bien d'autres ordinateurs s'arrêtent avant !

Mais comment donc savoir si c'est la pile ou la mémoire qui bloque ? Un PRINT FRE(0) donne bien une petite idée, mais c'est insuffisant. Il n'y a pas de truc miracle, mais les deux remarques suivantes devraient toutefois vous être utiles :

  1. si c'est en faisant un catalogue dise que le programme s'arrête, regardez si l'instruction de catalogue est « CAT ». Si oui, remplacez-la momentanément par DIR et si le programme tourne cette fois correctement, c'est bien la mémoire qui est trop occupée, car CAT appelle un tampon de tri avant de vous présenter le catalogue par ordre alphabétique, alors que DIR n'en a pas besoin. Faites donc le ménage comme nous vous l'avons proposé le mois dernier, tout devrait rentrer dans l'ordre.
  2. Si le programme bloque après une commande que vous avez pourtant déjà faite plusieurs fois auparavant, c'est sûrement la pile qui se sature. Ainsi, avons-nous souffert en cours de développement d'un cas semblable, se produisant tous les 26 COPY... C'est donc une recherche d'erreur qu'il faut entreprendre dans ce cas.
Tron sur imprimante

Ah, ah, on frémit ! Intéressant, non, pour rechercher les boucles sordides ?

Attention toutefois, c'est un outil de travail imparfait, pas une instruction de luxe. Les défauts sont les suivants :

  1. il faut connaître parfaitement le programme, car on travaille en aveugle. Ainsi, les demandes d'entrées se limitent à un curseur d'attente et il est donc de bon goût d'avoir une petite idée de la question posée.
  2. il arrive parfois qu'il manque par-ci, par-là un caractère (sans doute le buffer de l'imprimante qui n'en peut plus, car vous voyez à quelle vitesse parfois défilent les précieux numéros de lignes...).
Malgré celà, c'est bien utile, soyez-en assurés.

Lancez le programme à tester et faites un BREAK, puis :

TRON:POKE &BDD9, &C3:POKE &BDDA,1F1 :POKE &BDDB ,BD : RUN suivi de ENTER

A vous les plans de vol détaillés !

La figure 6 vous donne un extrait de résultat. Il est préférable d'utiliser le mode condensé (PRINT &.CHRS (15) pour DMP2000).

Conclusion

Il y aurait encore bien des choses à dire, mais les listings prennent de la place !

Si vous le permettez, l'auteur va passer un message personnel :

AVIS aux lecteurs qui ont reçu les toutes premières moutures V2. Comparez les lignes 20, 150, 3515 à 3640, 3850-3860, 4010 à 4025, 5010, 5110... 5710, 4025, 5240 et 5440 dans CIAO + E2.SCH, et 4210 dans COM-PO.SCH, avec les listings Radio-Plans !

A bientôt

A. CAPO J. ALARY , Radio-Plans n°485

★ EDITEUR: RADIO PLANS
★ ANNÉE: 1988
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEURS: JEAN ALARY , ALAIN CAPO
 


★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» IAO-CAO  v2    (Radio-Plans  485-Listings)    FRENCHDATE: 2018-03-20
DL: 531
TYPE: PDF
SiZE: 2026Ko
NOTE: 9 pages/PDFlib v1.6

» SAO    (Radio-Plans  482-Figures  et  Listings)    FRENCHDATE: 2018-03-17
DL: 334
TYPE: PDF
SiZE: 909Ko
NOTE: 12 pages/PDFlib v1.6

» SAO    (Radio-Plans  484-Listings)    FRENCHDATE: 2018-03-17
DL: 353
TYPE: PDF
SiZE: 1615Ko
NOTE: 7 pages/PDFlib v1.6

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

Lien(s):
» Applications » I.A.O (Radio-Plans n°478)
» Applications » S.A.O (Radio-Plans n°476/477)
» Applications » C.I.A.O Turbo / S.A.O Turbo (MICROLOGIC)
» Applications » C.I.A.O (Radio-Plans n°479)
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.732-desktop/c
Page créée en 776 millisecondes et consultée 3153 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.