09) Ajout de la gestion des OPTIONS dans le logiciel.

Comme le montre le thermomètre logiciel de la Fig.91 la zone rouge qui fait 12% est celle engloutie par la fonction RUN. Si l’on revient sur mon estimation qui accompagne la Fig.76 de la page 26, on constate que j’étais un peu optimiste, mais l’ordre de grandeur annoncé n’était pas à franchement parler complètement erroné. La zone verte qui reste pour pouvoir loger les routines traitant les OPTIONS semble bien faible. Et bien rassurez-vous, je suis persuadé que cet espace encore disponible sera largement suffisant. En effet, faire fonctionner l’exécution imposait de très nombreuses procédures complexes et plusieurs écrans très consommateurs d’octets. Naturellement pour les OPTIONS il va y avoir quelques nouvelles pages affichées. En revanche, les procédures vont à mon sens rester simples et ne comporteront pas de grands nombres d’instructions. Pour ma part le moral est au beau fixe. J’y crois en j’envisage la possibilité de faire une page écran d’accueil sympa avec indication de la version du logiciel. Passons aux actes, sans plus tarder car les items à mettre en place sont assez nombreux et l’arbre combinatoire des fonctions à émuler présente vraiment beaucoup de branches sur le papier.

Les options de base.

Celles qui sont le plus utilisées sont donc celles placées au début du menu des OPTIONS dont la Fig.92 présente l’allure. C’est le démonstrateur P14_Introduction_des_OPTIONS.ino qui se charge d’en assurer le développement et la validation. Quand on valide l’item PAUSES l’écran s’efface et affiche en son centre le texte . Si on tourne le capteur rotatif, les options OUI et NON vont alterner à l’écran. En cliquant sur le B.P.C. on entérine la valeur initialisée et l’écran affiche l’information . La LED triple s’illumine en jaune non clignotant. Cette possibilité qui n’est pas mentionnée dans le tableau de la Fig.84 de la page 29 signifie que l’on se trouve dans l’affichage du résumé des options. Si on clique sur le B.P.C. il y aura retour au MENU de BASE. Au contraire, si l’on tourne le capteur rotatif on va faire défiler les quatre autres pages d’écran qui résument l’état actuel des initialisations des options. La première présente l’état des trois premiers items du menu des OPTIONS. Si l’on clique sur le B.P.C. alors que l’une des quatre pages est affichée « avec la LED jaune » il y a retour dans le menu des OPTIONS et l’on peut alors en conditionner une autre. Par exemple on valide l’item BORNE provoquant l’affichage de l’écran Fig.93 avec par défaut deux valeurs unitaires. On doit pouvoir sélectionner des valeurs faibles autant que des valeurs très élevées. Aussi, en cliquant sur l’un des B.P. du clavier on impose la valeur des Incréments de modification de la valeur de BORNE quand on fait tourner le codeur rotatif. Noter qu’avec le bouton poussoir BP5 on peut sélectionner trois valeurs en permutations circulaires. Pour que l’opérateur puisse savoir à tout moment la valeur actuelle de l’Incrément l’écran la présente au dessus de BORNE. Comme pour tous les Items on valide avec le B.P.C. sachant que par Décrémentation on peut obtenir la valeur 0 qui invalide une BORNE éventuellement initialisée précédemment. Nous pouvons vérifier sur la Fig.95 A qu’initialiser une BORNE n’efface pas pour autant le mode PAS à PAS s’il est validé pas plus que préciser une valeur pour JALONS. Sur la Fig.95 B on observe par contre que JALONS et BORNE sont incompatibles et s’excluent mutuellement. Pour mémoire, avec JALONS le programme va fonctionner comme avec le mode PAS à PAS mais les PAUSES ne seront effectives que tous les JALONS cycles. On réalise de grands sauts dont l’ampleur peut être considérable à convenance. Noter que le BP4 se comporte comme une bascule pour PAUSE mais n’affecte pas la valeur de JALONS car pour suspendre ces grands sauts il faut annuler la valeur qui serait perdue. Le protocole pour saisir la valeur des JALONS est strictement identique à celui de l’initialisation de BORNE, les informations de la Fig.94 restant totalement applicables. La Fig.95 C présentant l’écran de saisie.

Gestion du cadencement de l’HORLOGE.

Dévolu aux trois Items qui suivent dans la liste de la Fig.92 on trouve les trois frères ennemis, qui s’excluent mutuellement. Ces trois options servent à gérer la rapidité du déroulement de l’algorithme en mode RUN. Nous comprenons assez facilement qu’avec l’item Tmp Réel l’horloge virtuelle va fonctionner à exactement la cadence de l’horloge matérielle de la machine électromécanique. Comme nous le savons c’est la vitesse de traitement des algorithmes la plus lente. Si l’on vote pour Ralenti, la Fig.96 montre que Tmp Réel est alors désactivée. Dans ces conditions la LED triple ne sera plus éclairée en cyan continu mais en violet scintillant. La fréquence horloge sera de 0,5Hz avec deux cycles réalisés par seconde. Enfin, l’option V Maxi. du menu des OPTIONS annule tous les ralentissements ainsi que le mode PAS à PAS s’il était initialisé. C’est bien évidemment le mode le plus rapide pour dérouler un algorithme. La machine virtuelle n’est alors significativement ralentie que par l’affichage éventuel des informations sur l’écran OLED si ce dernier n’est pas Noir, option que l’on obtient nous le savons en tournant le codeur rotatif.

Nouvelle page-écran en mode RUN.

Développer les fonctions et les protocoles des nombreuses OPTIONS a clairement fait ressortir un manque dans la visualisation du plateau de la machine durant le RUN. En effet, il est rapidement apparu que pouvoir remplacer la visualisation du carrousel par la vue d’ensemble du BARILLET de la machine serait un plus incontestable. Aussi, dans cette nouvelle version de la machine virtuelle, quand on tourne le codeur rotatif durant un RUN on termine les permutations circulaires des écrans par celui de la Fig.98 qui présente l’ensemble du plateau avec la position de l’origine et surtout celle de la Tête de L/E. En sois ce n’est pas une révolution. Toutefois, dans certains cas comme pour celui de l’emplacement n°0 ce type de visuel s’avère très pertinent. Et comme je supposais qu’il y aurait assez de place pour « tout émuler » … au diable l’avarice. Dans ce type de représentation le plateau de la machine est immobile et ce sont les deux curseurs qui indexent la position de la tête de L/E qui se déplacent à la vitesse du cadencement de la mécanique virtuelle. Il est évident que sur cette grille les deux curseurs qui indiquent les coordonnées de l’Origine arbitraire sont immobiles.

Option Machine étendue.

Valider cette possibilité engendre immédiatement deux effets. Le premier sera de modifier immédiatement la référence du programme avec la valeur 255 si un algorithme était déjà présent en mémoire dédiée. Si tel est le cas ce programme ne sera pas effacé, car il est tout à fait envisageable d’utiliser un algorithme de taille standard, et de passer en mode PGM ÉTENDU pour le perfectionner. Le deuxième effet réside dans l’interdiction en machine étendue de sauvegarder ou de recharger un BARILLET. Dans les deux cas une tentative se soldera par le message d’erreur . (Voir la Fig.90 dans l’encadré explicatif de la page 30.) Quitter cette page-écran d’erreur se fait avec l’une quelconque des touches du clavier comme invite à le faire la LED tricolore qui clignote assez rapidement en vert.

Option Accueil.

Persuadé que pouvoir démarrer cette petite machine de Turing avec un écran d’accueil spécifique serait possible, l’idée consiste à minima à présenter un écran qui précise la référence du logiciel « tournant » dans le microcontrôleur. Ainsi, si par la suite le programme était révisé, l’utilisateur pourrait facilement vérifier s’il possède bien la dernière version. Je stipule « à minima » car j’envisage sérieusement d’optimiser à outrance le code pour que cette page d’Accueil soit au final plus « graphique ». Toutefois, avec ce démonstrateur on va se contenter de ce que montre la Fig.100 qui sera déjà pas mal si l’on ne peut faire mieux. Dans les diverses pages de résumé de l’état des options, on peut se demander pourquoi l’affichage de l’accueil voisine avec celui de l’option de PGM ÉTENDU qui manifestement n’a aucun rapport. C’est tout simplement qu’il faut présenter l’état de toutes les OPTIONS sur un minimum de pages. Aussi, pour leur répartition, si une certaine logique s’impose, elle doit toutefois coexister avec des compromis.
ATTENTION : Avec le démonstrateur de développement des options P14_Introduction_des_OPTIONS.ino lorsque vous allez tester la possibilité d’afficher la page d’Accueil lors du RESET, vous constaterez que l’écran est un peu plus « bavard » que celui de la Fig.100 qui dans la pratique correspond à l’écran sur le programme Arduino définitif. Comme il a fallu gagner un peu de place, le texte « Version du » a été supprimé. Donc ne tenez pas compte de la divergence entre la réalité et cette copie d’écran effectuée pour le didacticiel.

Les options de chargement automatique sur RESET.

Pouvoir recharger automatiquement un algorithme et un BARILLET associé sur RESET demeure un critère de convivialité important. Du reste on doit avoir le choix libre entre l’une seule de ces deux entités si on le désire. Par exemple sur la Fig.101 qui montre la page-écran qui s’ouvre avec RESET on ne désire recharger que l’emplacement n°2 mais pas Le BARILLET. Pour saisir ces deux options le protocole est un peu particulier. En tournant le bouton du codeur rotatif on modifie la valeur de l’emplacement EEPROM qui sera chargé sur un RESET. C’est avec l’une des cinq touches du petit clavier que l’on précise si l’on désire charger Le BARILLET. BP3 impose OUI alors que les autres boutons BP1, BP2, BP4 et BP5 annulent cette initialisation. En tournant le codeur rotatif on fait apparaitre dans l’ordre ///, 0 à 9, 20Tr et NON. Le premier symbole par défaut est /// correspond à la fuite, c’est à dire une sortie sans modifier l’option. NON précise on s’en doute qu’il ne faut pas charger d’algorithme sur un RESET. C’est la valeur à valider pour annuler un chargement actuellement validé. La valeur 20Tr précise que l’on désire charger un programme ÉTENDU comme le souligne de texte (PGM ETENDU.) qui accompagne le texte 20Tr. Lorsque l’on a validé des options de rechargement automatique sur RESET, dans l’écran dédié de l’état des OPTIONS on obtient une page du type de celle de la Fig.103 montrant le cas du choix d’un algorithme standard avec ici le rechargement de la configuration du BARILLET. Si on opte pour le programme ÉTENDU il y a désactivation automatique du chargement d’un BARILLET si ce dernier était validé précédemment. Enfin, si sur un RESET il y a chargement automatique, l’opérateur en est averti par un écran tel que celui de la Fig.104 qui présente le cas du transfert d’un programme ÉTENDU qui fait automatiquement passer la machine dans ce mode avec affichage comme référence de l’algorithme la valeur particulière de 255.

L’option ANALYSE.

Accompagnée d’une liste d’items relativement courte puisqu’il n’y en a que cinq, c’est pourtant une facette très gloutonne du logiciel en espace réservé au programme car certaines de ces fonctions imposent plusieurs écrans boulimiques en octets. L’effet du premier Item de la liste est élémentaire. Quand on clique sur le l’un quelconque des BP du petit clavier alors que l’index est face à Verif NON F : OUI on inverse son option. En tournant le bouton du codeur rotatif on indexe l’une des autres lignes dans la liste de cette page-écran. Ce comportement est valable pour les trois Items :
Si on a validé l’option Verif NON F chaque fois que l’on activera RUN il y aura vérification de la présence au moins d’un « F » dans le programme. Si ce n’est pas le cas le logiciel affichera puis il attendra une consigne de l’opérateur. Une confirmation engagera le fonctionnement automatique alors que NON ramènera au MENU de BASE. L’Item Vf NON Utl. est une contraction de Vérifier les ligne NON Utilisées. Quand cette possibilité est validée, La sortie du programme, même si elle est anticipée par l’opérateur, est suivie d’un écran du type de celui de la Fig.106 qui n’indiquera que la première ligne de l’algorithme du programme qui sera détectée comme non vide et NON utilisée. Ce n’est qu’une information qui ne sera pertinente que dans des cas particuliers de mise au point d’un algorithme réticent. L’option Info.RESET est directement liée au rechargement d’un algorithme ou d’un BARILLET lors du RESET. L’écran d’information de la Fig.104 généré lors d’un RESET impose au programmeur d’accuser réception en cliquant sur l’une des touches du clavier. C’est utile lorsque l’on a validé l’une de ces possibilités et que l’on reprend la machine suite à plusieurs semaines de non utilisation. En revanche, lors de la mise au point d’algorithme, cette page écran peut rapidement devenir indigeste. Affecter OUI ou NON à cet Item nous rend totalement libre de voter pour le meilleur candidat.

La vérification des doublons dans le programme.

Globalement, mis à part des programmes tel que l’algorithme n°46 qui avait pour but de percer des « sinusoïdes » sur la feuille de programme, ÉCRIRE des état inutiles n’est absolument pas pertinent car il impose de perforer des emplacements pour rien dans la grille. Par exemple Imposer d’écrire un « 0 » sur la ligne de LECTURE d’un « 0 » pour la transition concernée. En général un tel « doublon » correspond à une étourderie soit dans la conception de l’algorithme, soit lors de sa saisie dans MODIFIER ou RÉDIGER. Quand on valide la fonction Verif ECR doublon avec le B.P.C. en fonction de ce qui se trouve en mémoire dédiée on peut avoir l’affichage de la Fig.107 qui correspond au cas préféré de l’opérateur et qui n’appelle pas de commentaire. Si une écriture inutile est présente dans l’algorithme elle sera affichée comme sur la Fig.108 pour prévenir le programmeur qui devra revoir sa copie. On peut fort bien se retrouver avec un nombre important « de boulettes », par exemple on a chargé en mémoire le programme utilisateur de référence n°46 qui comporte dix écritures inutiles. Chaque fois que l’on accuse réception sur le clavier l’analyse affiche le doublon suivant. Aussi, pour pouvoir se sauver de ce type de situation le BP3 engendre la sortie anticipée de l’analyse. La Fig.110 proposée résume le comportement du petit clavier à cinq touches. Comme pour toutes les autres options on peut revenir au MENU de BASE ou à la liste des OPTIONS. Noter que si l’on est dans le cas de la Fig.109 et que l’on se fait lister la totalité des écritures inutiles, on sort alors par l’écran de la Fig.107 dont il ne faudra pas tenir compte.

La vérification des transitions suspectes dans le programme.

Autant « perforer » des trous inutiles sera sans conséquence sur le déroulement du programme, autant introduire des transitions incorrectes affectera le fonctionnement de l’algorithme. Alors avoir la possibilité d’analyser le programme pour faire émerger ce type d’erreur peut s’avérer plus que séduisant. Quand on rédige l’algorithme, il est impossible d’indiquer une valeur de transition erronée car le codeur rotatif ne présente que les options valides. Par contre, brancher une transition sur elle-même peut correspondre à une erreur de conception ou une erreur de saisie. Ce n’est pas forcément involontaire. Il sera toutefois parfois utile de soumettre l’algorithme à une telle recherche, au programmeur de déduire si c’est normal ou involontaire. Le comportement du clavier reproduit en Fig.111 est strictement identique, le protocole pour cette fonction étant le même que celui adopté pour les écritures inutiles. Sur la Fig.112 nous avons le cas d’un programme sans problème. La Fig.113 quand à elle est représentative d’un algorithme avec une ou des transitions suspectes. C’est alors au programmeur de vérifier le bienfondé de cette alerte. D’une façon générale transiter sur la même Tr sera une étourderie à annuler …

Quelques améliorations apportées au démonstrateur P13.

Visiblement il restait assez de place pour ajouter quelques petites améliorations au démonstrateur précédent. Certaines sont « dérisoires », d’autres plus consistantes. Par exemple sur la Fig.114 on peut voir dans l’encadré jaune qu’une ligne de texte a été ajoutée dans la page qui s’ouvre avec MODIFIER du menu PROGRAMME. Ce n’est pas une révolution, mais le texte d’ensemble est plus précis. Maintenant, quand dans le MENU de BASE on clique sur BP4 on obtient l’écran de la Fig.115 qui détermine la place de mémoire dynamique qui reste entre la PILE et le TAS. Cette information ne concerne que le programmeur et a été abordée dans les pages 37 et 38 du tutoriel sur la machine élémentaire. Enfin, dans les petits plus on terminera par l’option Sature de remplissage du carrousel par des états identiques. Cette option concerne le menu BARILLET. Actuellement, ce que montre la Fig.116, on peut remplir une zone inférieure à la taille du plateau dont on précise le DEBUT et la FIN. Le codeur rotatif permet de choisir entre « B« , « 0« , « 1 » ou la Fuite si on a indexé le changement de valeur des pions. Il incrémente ou décrémente la valeur de DEBUT ou de FIN si ces Items sont indexés. La touche BP4 ou la touche BP5 permettent de sélectionner un Pas de 1 ou de 10. Les trois touches verticales indexent respectivement l’état des PIONS pour BP1, La valeur de la FIN pour BP2 et celle de DEBUT pour BP3. La Fig.118 montre le résultat pour le choix de la Fig.117.

 

La suite est ici.