Elektronika MK-52 et MK-61 : deux curieuses calculatrices de l'ère soviétique

Dans ce billet, je propose de vous montrer une addition récente et inhabituelle à ma collection de calculatrices : les Elektronika MK-52 et MK-61, remontant à l’époque de l’URSS des années 1980.

(Figure)
Deux curiosités de l’ère soviétique.

Ce sont des calculatrices fascinantes puisque malgré leurs limitations, il était possible d’exploiter une pléthore de fonctions non documentées grâce à une multitude de bugs et de choix techniques étranges de la part des concepteurs. Il était en effet possible de fabriquer des programmes optimisés à l’aide d’une technique plus communément appelée « programmation synthétique » et d’effectuer des calculs sur des messages d’erreur, entraînant des effets de bord intéressants, entre autres choses. J’en donnerai un aperçu dans ce billet ainsi que des liens vers des pages approfondissant le sujet.

Tour d’horizon

Les MK-52 et MK-61 sont similaires en fonctionnalités et en capacités : il s’agit de calculatrices scientifiques programmables, dotées d’une mémoire (volatile) pour 105 pas de programme et 15 registres. La MK-52 ajoute à cela la possibilité de sauvegarder des données dans une mémoire EEPROM et la prise en charge de modules ROM enfichables.

Les deux modèles ont été introduits presque simultanément, entre 1983 et 1985. Pourtant, à l’aune de leur afficheur fluorescent et de leur taille relativement imposante, on serait plutôt tenté de les comparer avec des calculatrices des années 1970.

La MK-61 est alimentée avec quatre piles LR6 et la MK-52 avec trois ; il était également possible de les alimenter à l’aide du bloc d’alimentation fourni. Cependant, il ne faut jamais utiliser ces machines sur secteur sans y avoir mis des piles ; c’est un détail que m’a aussi rappelé le vendeur de ces deux machines sur eBay.

(Figure)
Elektronika MK-61 avec ses accessoires

La MK-61, tout d’abord, est une calculatrice de poche qui est un descendant direct de la vénérable Elektronika B3-34, elle aussi programmable. Elle hérite par ailleurs d’une architecture matérielle similaire, si bien que les techniques diverses et variées que j’exposerai dans ce billet fonctionnent parfois aussi avec cet ancien modèle.

Sa taille est à peu près équivalente à celle d’une HP-41C à laquelle on aurait ajouté un lecteur de bandes. En revanche, le confort d’utilisation n’est guère au rendez-vous. Ce confort spartiate se ressent dans la façon dont elle tient dans la main, mais le clavier est particulièrement horrible. Sur mon exemplaire, les touches n’ont aucune course : il suffit de les effleurer du doigt pour les actionner et il arrive parfois de les déclencher deux fois en n’appuyant qu’une seule fois dessus, comme si elles souffraient de rebond. L’ensemble paraît assez fragile.

Cela dit, il se peut que la qualité de construction soit très variable en fonction de l’usine qui l’a fabriqué. Je n’en ai qu’une seule dans ma collection, donc je me garderai de généraliser. J’ai aussi pu lire que la qualité de fabrication est allé en décroissant au fil du temps et notamment après la chute de l’URSS. Mon exemplaire a été fabriqué en décembre 1992, donc c’est peut-être une explication.

Le prix de vente de l’époque est censé être gravé à l’arrière du boîtier : 85 roubles. Mon exemplaire est dépourvu de prix, cependant. Il est par ailleurs assez difficile de calculer un équivalent en euros d’aujourd’hui puisque les données d’inflation du rouble soviétique, devenu rouble russe après la dissolution de l’URSS, ne remontent pas plus loin que 1991.

(Figure)
Elektronika MK-52 avec ses accessoires.

La MK-52 était vendue 115 roubles. Contrairement à la MK-61, celle-ci adopte une disposition au format « paysage » (horizontal). On serait tenté de la manipuler en la tenant à deux mains comme s’il s’agissait d’une HP-15C ou d’une autre calculatrice du même acabit. Avec celle-ci, c’est fort peu pratique : puisqu’elle fait environ 20 cm de large et entre 1 et 3 cm d’épaisseur, aucune touche du clavier n’est accessible avec le pouce gauche si on la tient ainsi. Ce qui la destine plutôt à un usage sur un bureau.

En tout cas, sur mon exemplaire, le clavier est bien plus agréable que la MK-61. Elle est dotée de deux touches supplémentaires par rapport à cette dernière : la touche A↑ sert à charger un couple adresse-taille pour une opération d’effacement, de lecture ou d’écriture de l’EEPROM (sélectionnée par un interrupteur sous l’afficheur) et la touche ↑↓ effectue ladite opération.

Dans la boîte

Outre la machine elle-même, un mode d’emploi (en deux tomes pour la MK-52) et un adaptateur secteur, les deux calculatrices sont également livrées avec leur schéma électrique. C’est inhabituel pour nous, mais apparemment monnaie courante en URSS à l’époque.

La documentation est (évidemment) en langue russe. Il s’agit de manuels entièrement dactylographiés. Mais l’habit ne fait pas le moine : bien que donnant une piètre apparence, la documentation semble très complète et rédigée avec soin.

Le mode d’emploi comporte entre autres un tableau qui donne, pour chaque fonction transcendante (trigonométriques, exponentielles, puissance…) la précision de celle-ci. Par exemple, les fonctions trigonométriques ont une précision de 10−7. On peut le vérifier en pratique en faisant un petit test, en calculant

Sur les deux machines, on obtient le nombre 9,088 145 4. Ce résultat, qui est correct avec une précision de 10−2, traduit donc bien une précision de l’ordre de 10−7, ce qui est tout à fait honorable.

Par ailleurs, la MK-61 telle que je l’ai reçue était également dotée d’une version imprimée d’une traduction du mode d’emploi en anglais contribuée par Jose Mesquita. Une bonne chose, parce que je comprends pas le russe. J’ai également reçu un « overlay » en caractères latins pour le clavier de celui-ci, qui reprend les noms des fonctions équivalentes des calculatrices HP (comme SST, BST…).

(Figure)
Ces deux éléments sont indispensables pour les non-russophones. Même si j’arrive à déchiffrer le cyrillique, l’« overlay » reste pratique.

Premiers pas

Sur les Elektronika MK-61 et MK-52, les calculs sont saisis en notation polonaise inverse, en séparant chaque nombre par un appui sur la touche marquée « V↑ » (en cyrillique : В↑).

Il s’agit du même système que celui qu’on trouve sur des calculatrices HP : quatre registres forment la pile opérationnelle (X, Y, Z et T) et à chaque calcul, l’ancienne valeur du registre X est sauvegardée dans un registre nommé X1 qui fonctionne de la même manière que le registre « LASTx » sur une HP.

Ce qui est plus étonnant, en revanche, c’est que la documentation n’évoque nulle part la notion de notation polonaise inverse.

Pour les lecteurs curieux des fonctions des autres touches, je vous renvoie vers le tableau des fonctions du MK-61 sur thimet.de.

Sans garde-fous

La famille de fonctions la plus bizarrement mise en œuvre est celle des opérations booléennes (ou bit-à-bit) sur un nombre. Elles n’existaient pas sur leur prédécesseur, la B3-34, et je me demande bien comment diable elles ont pu faire leur apparition sur celles-ci.

Ce ne sont pas des opérations triviales à ajouter sur une calculatrice. On y représente en général les nombres en BCD (Binary Coded Decimal ou décimal codé binaire) en interne, une forme qui rend leur affichage plus aisé.

Donc pour faire fonctionner ce type d’opérations correctement sur une calculatrice, il faudrait d’abord convertir les deux opérandes en entiers en représentation binaire naturelle, effectuer l’opération demandée, puis convertir le résultat en décimal codé binaire pour l’affichage.

Il n’en est rien sur les Elektronika MK-61 et MK-52 : sur ces deux machines, les opérateurs booléens agissent en effet directement sur les représentations en décimal codé binaire des deux nombres. Ce qui signifie donc qu’il est possible de fabriquer des « nombres » BCD avec des « chiffres » allant de A16 (10) à F16 (15), qui ne sont normalement pas admis dans une forme décimale codée binaire.

Le manuel précise toutefois que pour utiliser ces fonctions, il faut préfixer chaque opérande par un chiffre non nul, qui ne sera pas pris en compte par la calculatrice. Prenons un exemple : si on veut calculer

alors il faut entrer les deux nombres comme 14878 et 18286. Le résultat s’affiche alors sous la forme 8,C− E

La calculatrice affiche aussi les chiffres A16 à E16 de sa propre manière : respectivement -, L, C, Г, E. Le chiffre F16, quant à lui, est représenté sous la forme d’un blanc. Ceci pour plusieurs raisons, dont celui de pouvoir afficher le message « Error ».

L’autre indice qui montre que cette fonction a été ajoutée à la va-vite et sans chercher à remettre en cause l’architecture interne de la calculatrice, c’est que les résultats de ces opérations sont placées dans la partie fractionnaire d’un nombre. Apparemment, le quartet F16 est utilisé comme une sorte de sentinelle pour certaines opérations. Puisque jusqu’alors, toutes les opérations supposent que les opérandes ont au moins un chiffre (fût-ce 0), il serait potentiellement dangereux de laisser à l’utilisateur la possibilité de fabriquer un « nombre » qui commencerait par le quartet F16. Les concepteurs de ces calculatrices ont donc préféré mettre le résultat d’une opération booléenne dans un nombre qui commence par autre chose que la sentinelle.

On peut continuer à faire des opérations sur ces nombres sans risquer de « planter » la calculatrice, mais les résultats trahissent le fait qu’elle ne sache pas officiellement faire des calculs dans des bases autres que 10.  Par exemple, ajouter zéro au nombre 8,CAFE donne 9,3164. Pourquoi ? Parce que pour une addition en BCD, il suffit d’additionner (avec retenue) les valeurs numériques de chaque quartet, puis de réajuster chaque quartet de valeur numérique strictement supérieure à 9 pour qu’ils soient tous compris entre 0 et 9. Et c’est exactement ce qui s’est passé ici.

Yéggogologie

En cas d’opération non valable (division par zéro, logarithme ou racine carrée d’un nombre négatif) ou en cas de dépassement de capacité (i.e. lorsqu’un résultat dépasse 10100), la calculatrice s’efforce tout de même d’afficher « Error » sur son afficheur.

Du moins, c’était l’intention. En pratique, beaucoup de gens voyaient ce message comme le mot ЕГГОГ (yéggog) exprimé en cyrillique, qui n’a aucune signification en russe.

(Figure)
« Error » ou « ЕГГОГ » ?

Cependant, même le traitement d’erreurs est dépourvu de garde-fous. Par exemple, il est possible de faire des opérations sur les messages d’erreur provoqués par un dépassement de capacité comme s’il s’agissaient de nombres normaux.

En guise de démonstration, effectuons le calcul

En utilisant la séquence de frappe 1 VP 50 F x2, on obtient « Error ». Mais on peut poursuivre le calcul en frappant : 1 VP 99 + 10 ÷. Et là, comme par magie, apparaît le résultat 1,1 × 1099.

Ainsi, la calculatrice donne en réalité accès à des nombres jusqu’à ±9,9999999 × 10199, mais en refusant d’afficher les nombres dont l’exposant est trop grand. Il suffit alors de les diviser par un nombre suffisamment grand pour obtenir la mantisse et en déduire l’exposant.

On peut également continuer dans la plage de 10200 à 10299, auquel cas le ЕГГОГ se transforme mystérieusement en ЗГГОГ (« zggog ») sans autre effet de bord.

À partir de 10300 en revanche, la calculatrice commence à faire des choses bizarres, comme tenter d’exécuter le programme en mémoire au lieu d’afficher le nombre (en corrompant une ou deux instructions du programme au passage), corrompre le registre C et d’autres choses encore.

De nombreuses personnes se sont lancés, à l’époque, dans un grand effort d’exploration de ces effets de bord étranges dûs à des bugs, de recherche de fonctions non documentées et de techniques diverses d’optimisation de programmes sur cette génération de calculatrices. La discipline, baptisée « yéggogologie » (en russe : еггогология, yeggogologiya) par ses adeptes, faisait même l’objet d’une rubrique récurrente dans le magazine Nauka i Zhizn (Science et Vie).

Il était également possible de s’adonner à la programmation dite « synthétique » sur ces machines : une certaine manipulation de touches amenait la calculatrice dans un mode bizarre où il était possible d’écraser certaines positions dans son programme avec des instructions fabriquées à la main, de manière analogue à ce qui a été fait sur la HP-41C.

Conclusion

Il est difficile de rendre justice à ces calculatrices soviétiques avec seulement un billet de blog. Les bugs, les effets de bord étranges et les fonctions non documentées sont pourtant une des raisons de l’attrait que suscitent ces étranges machines.

C’est pourquoi j’invite les lecteurs curieux à jeter un œil aux liens ci-dessous s’ils souhaitent en savoir davantage et approfondir le sujet. Certains de ces liens sont des liens vers web.archive.org, puisque certaines pages ont malheureusement disparu entre temps.

Cela dit, on retrouve encore de nombreux exemplaires de ces calculatrices d’occasion, provenant pour la grande partie de pays de l’ancien bloc soviétique. Cela étant, le fait que ces calculatrices fonctionnent encore après tout ce temps est déjà impressionnant en soi.

Par ailleurs, les Elektronika MK-61 et MK-52 ont laissé un héritage sous la forme des Elektronika MK-161 et MK-152. Il est donc possible, aujourd’hui encore, de faire fonctionner les nombreux programmes et jeux qui avaient été écrits pour les modèles les plus anciens, y compris le vénérable B3-34.

Pour en savoir plus

Posté par x0r à 0 commentaire • Tags : rpn calculatrice elektronika mk-52 mk-61

Commentaires

Poster un commentaire

Poster un commentaire