12) Initialisation complète de l’ÉNIGMA virtuelle.

Outre la configuration des Rotor et le choix du Réflecteur on va devoir organiser le tableau des FICHES croisées et également traiter le GROUPE d’identification. L’objet de ce chapitre est de définir ces éléments et de les initialiser sur la codeuse. Avant de pouvoir manipuler pour tester ces éléments, il faut au préalable préparer la carte Arduino NANO.

Nouveaux textes « définitifs » en EEPROM.

Opération maintenant routinière, on commence par inscrire ces dialogues dans la mémoire non volatile du microcontrôleur pour pouvoir ensuite les utiliser dans les prochains démonstrateurs. Dans ce but on téléverse P00B_Initialiser_EEPROM.ino prévu pour cette mission. Mis à part deux octets qui restent disponibles, l’EEPROM est entièrement saturée. On commence par activer le Moniteur de l’IDE et avec l’idéogramme « Loupe » on initialise sa vitesse de transfert à 57600 baud. Puis on téléverse l’outil informatique P00B que l’on active ensuite en cliquant une deuxième fois sur « Loupe« . La fenêtre du moniteur se remplit et ressemble à la copie d’écran de la Fig.46 avec en particulier dans la zone verte les nouveaux textes inscrits. (Seulement une partie d’entre eux a été modifiée pour conserver au maximum ceux qui étaient valides pour l’ancien menu car il faut reprendre les paramètres de tous les affichages qui changent. C’est un travail particulièrement indigeste)

Nouveau démonstrateur pour l’initialisation.

Nommé P06_Initialiser_Entierement_Enigma.ino montre dans les informations en tête de listage que simplifier le MENU fait économiser 188 Octets de programme et surtout 26 Octets en mémoire dynamique ce qui est loin d’être négligeable. Dans P05 il était déjà possible d’activer ou de suspendre le bruitage Morse avec la commande ‘m‘. On se doute que le but consiste à rendre silencieux le petit module si on désire ne pas engendrer de gêne pour notre entourage. Le BIP sonore d’erreur qui se montre relativement bruyant est maintenant également suspendu simultanément avec le bruitage Morse. Notre machine sera alors totalement silencieuse. Par ailleurs, le clignotement de la LED bleue à la cadence du Morse n’est pas très utile. Aussi, le clignotement rapide pour indiquer à l’opérateur que le programme est en attente se fait sur cette dernière. (Car avec le pion de RESET la LED Arduino en D13 n’est plus visible.) Nouveau démonstrateur P05 téléversé on peut passer à l’expérimentation de la fonction d’initialisation complète. Bien que le GROUPE d’Identification ne soit pas chiffré pour transmettre le message secret, il importe de le manipuler pour le début de chaque message. Pour éviter cette obligation, il fait partie de l’initialisation. C’est la commande ‘g‘ qui procèdera à la transmission automatique, nous n’aurons plus qu’à ajouter le TEXTE à coder.
MANIPULATIONS :
01) Pour la forme « repartir à zéro » avec un RESET.
02) Frapper un ‘m‘ pour valider le bruiteur.
03) Frapper un ‘i‘ pour Initialiser la machine.
04) Frapper un ‘o‘ pour accepter. (Confirmer évite d’entrer inopinément dans cette longue procédure.)
05) Frapper et valider dans l’ordre ‘4‘ puis ‘5‘. (On est supposé être le 12/02/1942.)
06) Le rotor de droite est le III mais on se trompe : Proposer ‘8‘. Comme sur la machine il n’y en a que cinq potentiels on sursaute avec le BIP d’erreur et la machine redemande la valeur.
07) Dans la pièce voisine, Gertrude regarde un reportage sur son récepteur de télévision. Il ne faut pas la déranger. La commande ‘m‘ rendrait à nouveau notre petite boite silencieuse, mais nous sommes en mode INITIALISATION et ‘m‘ n’aura pas cet effet. On recommence !
08) Faire un RESET qui par défaut nous livre une machine muette, le ‘m‘ est donc inutile. Vous pouvez toutefois l’utiliser deux fois pour constater son effet de type OUI/NON.
09) Frapper ‘i‘ suivi de ‘o‘ et saisir la chaîne « 453 » avant de valider. Le logiciel prévient qu’il n’a pris que le premier caractère, il passe au rotor suivant. (Car il n’attend que pour le Rotor de gauche.)
11) Nous faisons un effort d’attention et cette fois on propose les valeurs suivantes en validant à chacune d’elles : ‘5‘, ‘3‘, « 26« , « 23« , « 7 » et pour le GROUPE d’Identification on frappe les trois orientations initiales à indiquer : ‘d‘, ‘l‘ et ‘p‘. (l : lettre L minuscule.)
12) Pour le réflecteur on imposer ‘b‘.
Maintenant on arrive à ce qui est nouveau, le programme nous demande de préciser la combinatoire du tableau des Fiches croisées. (Zavez vu ? La LED bleue clignote rapidement !)

13) Maintenant frapper « bj« , « cq« , « di« , « ff » là le logiciel n’accepte pas le cordon car il n’est pas croisé. Testons « fmi« , comme il y a plus de deux lettres la chaîne n’est pas acceptée et le logiciel reste sur la Fiche n°4. On tente un seul caractère avec ‘f’. Toujours sur la Fiche n°4 on propose la saisie de « f=« . (Décidément vous êtes vraiment distraits !)
14) Expérimenter « fb« , comme le ‘b‘ a déjà été utilisé, sur la vraie machine on ne peut pas se tromper ainsi et ajouter une fiche en gigogne sur une autre déjà présente. Donc le logiciel reste sur cette fiche et se contente de signaler cette erreur de logique.
REMARQUE : Chaque fois qu’une fiche est enregistrée car correcte, la liste des lettres déjà utilisées est affichée. Ainsi, si par erreur on a un « doublon », repérer la lettre en cause est bien plus simple.
15) Frapper « fm« , « go« , « hr« , « kw« , « py« , « tu » et enfin « xz« .
NOTE : Prendre garde au fait que les accentués sont acceptés et convertis en lettres simples. Par exemple « çq »,au lieu de « cq », serait accepté et correctement enregistré.16) Tester « iwq« . Comme il n’y a pas assez de lettres le logiciel insiste.
17) Avec « iwqgwyoà4 » punition identique car l’un des caractères n’est pas une lettre.
18) Expérimenter « iwqgwyoadu« . Le groupe n’est pas accepté car sa longueur dépasse 9 caractères.
19) Enfin proposer « iwqgwyoàd« . Cette fois c’est la bonne. Il y a exactement neuf lettres et le ‘à‘ a été transposé en équivalent majuscule ‘A‘ , l’accentué est donc accepté.
20) Retrouvant le mode COMMANDES frapper ‘c‘ pour faire afficher la configuration actuelle de la codeuse virtuelle. On peut comparer les entités affichées à celles de la Fig.47 le formatage à l’écran étant celui de la Fig.49 dans laquelle les éléments clef sont mis en évidence par des couleurs. Dans les deux encadrés rouges on retrouve les lettres d’orientation initiales des Rotors. Dans la zone rose le GROUPE d’Identification est affiché au complet. Enfin dans la zone verte sont précisés les croisements effectués avec les fiches doubles.

À ce stade on refait un bilan sur l’évolution du programme.

Avec la simplification du MENU de base et la mise en place de la procédure d’initialisation de la machine on a écrit un gros « morceau », car les erreurs de saisies potentielles sont légion et l’analyseur syntaxique doit effectuer un filtrage relativement fouillé. Chaque erreur détectée génère un texte spécifique gourmand en ressources, nous le savons. Sur le « thermomètre la zone bleue correspond à l’occupation de la mémoire réservée au programme lorsque l’on est passé au MENU optimisé de la Fig.45 soit environ 23%. La zone rouge correspond à l’implantation des deux nouvelles fonctions d’initialisation de la table des Fiches croisées et de la gestion du GROUPE d’identification. Il nous reste encore à mettre en place la fonction de correction des initialisations avec la commande ‘e‘, ainsi que la sauvegarde et la restitution depuis l’EEPROM de ces données. La correction des erreurs risque encore de prendre pas mal de place car elle résulte d’un dialogue H/M qui nous le savons sera certainement glouton en Octets. Pas de panique, pour le moment on dispose encore d’une place confortable et surtout les nouveaux dialogues seront directement implantés dans le programme. C’est un avantage, car il n’y aura plus au préalable à les loger en EEPROM avec l’outil spécifique P00B. Tout va bien pour le moment et l’avenir est tout tracé …

La suite est ici.