Pratiquer cette technique conduit à un gain d’espace programme de 574 octets et fait économiser 640 emplacements en mémoire dynamique alors que l’on a ajouté les procédures qui servent à écrire et à lire en mémoire EEPROM. Hors ces dernières sont nécessaires pour sauvegarder et restituer une configuration dans la mémoire non volatile. C’est donc un bénéfice « collatéral » gratuit. Lors de l’écriture du démonstrateur P05_Textes_en_EEPROM.ino il reste encore 95 cellules pour y loger du texte supplémentaire si le développement du dialogue Homme/Machine l’exige.
Passage des textes en mémoire non volatile EEPROM.
Avec le programme P00_Textes_en_EEPROM.ino disponible dans le dossier <OUTILS> on inscrit les textes des écrans « conversationnels », mais également la représentation virtuelle des éléments du Brouilleur ainsi qu’une configuration de base qui sera chargée automatiquement lors d’un RESET. Pour celles et ceux qui utiliseraient la mémoire EEPROM pour la première fois la façon de s’y prendre est définie dans le petit fichier d’aide Débuter.PDF joint à ce didacticiel. Et pour les débutants qui débutent débutissamments, j’y détaille aussi comment installer l’IDE, activer le Moniteur, téléverser un programme. Bref, une prise en charge par la main complète et que je souhaite facile à comprendre. Revenons à P00. À son démarrage en activant le Moniteur à 57600 baud il inscrit les données dans l’EEPROM puis balaye entièrement cette dernière et en affiche le contenu. En premier il liste les textes et l’on obtient un affichage qui ressemble à celui de la Fig.22 pour lequel les textes sont listés dans l’ordre où ils sont inscrits. La zone mise en évidence en rose à été effacée car elle contenait un mot déjà présent plus loin. Cette zone est donc récupérable et l’on pourra éventuellement y loger une donnée quelconque ou un nouveau texte. Pour la repérer facilement elle a été remplie par dix ‘x‘. L’affichage du texte se fait dans la police de caractère de la fenêtre du Moniteur qui ne connait pas les caractères accentués. J’ai donc surchargé la copie d’écran par les lettres mises en évidence en vert pastel.
Implantation des données en mémoire non volatile EEPROM.
Inscrire les éléments du Brouilleur se fait exactement à l’identique du codage qui était utilisé dans le programme d’exploitation de la petite machine Énigma élémentaire citée en page de garde de ce document. L’organisation et l’occupation de l’EEPROM est précisée dans la Fiche n°34 pour les textes et la Fiche n°35 pour les données. Sur la Fiche n°35 les zones de codages sont précisées pour la sauvegarde d’une initialisation de la machine ainsi que pour l’organisation des éléments virtuels du Brouilleur. Il est évident qu’en sauvegarde d’une configuration de notre réplique d’Énigma le nombre de Fiches croisées pourra être quelconque et rester inférieur à 10, voir nul. Une sauvegarde de configuration machine enregistre l’état actuel du système virtuel qui étant issu de saisies filtrées sera forcément cohérent et ne pourra pas contenir d’erreur.
Sauvegarder et recharger une configuration.
Démonstrateur spécifiquement agencé pour passer tous les « dialogues » de l’interface d’exploitation en EEPROM, P05_Textes_en_EEPROM.ino fait bien plus que se contenter d’utiliser les textes préservés en mémoire non volatile. Par exemple la fonction [P] en Fig.23 affiche toujours l’espace disponible entre la PILE et le TAS, mais ajoute dans la page écran la version du logiciel. Ce n’est qu’un petit détail. Surtout, les deux fonctions invoquées par [S] et [R] ont été ajoutées au logiciel. Elles sont primordiales puisque la première [S] propose à l’opérateur de Sauvegarder la configuration d’initialisation actuelle de la machine, alors que la deuxième [R] permet réciproquement de Recharger ces données à convenance. Si vous n’avez jamais sauvegardé de situation, utiliser [R] rechargera une configuration de BASE déjà présente inscrite en même temps que les textes. Pour tester ces deux nouvelles fonctions reportez-vous au tutoriel Linéaire.PDF ou à son frère imprimé. Les manipulations qui y sont proposées détaillent ces deux fonctions vitales.
Générer une configuration aléatoire.
Sans se préoccuper de créer un listage aussi complet que celui de la Fig.2 en page P2 du tutoriel Linéaire.pdf, il serait agréable de pouvoir automatiquement remplacer la configuration actuelle par une combinaison aléatoire cohérente. La feuille de la Fig.2 est obtenue avec un logiciel gratuit que l’on peut librement télécharger sur :
https://www.ciphermachinesandcryptology.com/en/codebook.htm
Il ne fait que simuler des tables secrètes en ne générant que des codes au hasard et les affiche au format de la page proposée. Avec les mêmes données initiales vous obtiendrez forcément des codes différents à chaque tentative. La nouvelle fonction activée par [G] effectue exactement la même opération sauf qu’elle ne génère qu’une seule configuration avec pour avantage de l’intégrer directement dans la machine. Il suffit de proposer [G] en Mode COMMANDE. Comme toute commande qui risque de faire perdre des données, il faut en Fig.24 accepter avec la touche OUI. Le démonstrateur P05 génère alors une organisation cohérente, puis passe en Listage de cette dernière. (Voir la Fig.25) Il n’est pas certain que cette facilité puisse être conservée dans le programme d’exploitation, car cette fonction gloutonne 918 octets soit 3% de l’espace réservé au programme à elle seule et nous n’avons pas encore commencé à introduire les séquences de chiffrage.
Un nouveau bilan logiciel s’impose.
Lorsque les textes ont été logés en mémoire non volatile EEPROM avec l’outil P00 la place occupée par le programme est descendue de 72% à 70%, soit un gain de place assez considérable. Surtout, la place occupée en mémoire dynamique a chuté de 69% à 37% ce qui est considérable. Sur la Fig.26 la zone orange qui occupe 2% de l’espace réservé au programme est occupée par les fonctions indispensables [S] et [R]. La zone rouge qui occupe 3% de l’espace réservé au programme est consommée par la fonction [G]. C’est beaucoup pour une fonction séduisante, mais secondaire. Hors nous n’avons pas encore intégré les fonctions de cryptage. Il est clair que s’il faut faire de la place, la commande [G] sera la première sacrifiée.
La suite est ICI.