programma 101

Voici  un émulateur de la programma 101 que j'ai utilisée au cours de mes études dans les  années 70 ! Ce fut mes premiers pas en programmation et je n'ai jamais rien regretté de cette époque où le seul langage disponible était le langage machine. Un peu une école de la vie quoi ! Peut-être aujourd'hui tout cela est-il devenu trop facile.
Télécharger l'émulateur p101emulator.zip

Voici le programe perso.prg (qui se trouve dans l'archive) tel quel avec des commentaires en plus


# exemple trivial sur la programma 101 de Olivetti
# Registre d'entrèe V
# On attend un nombre que l'on place dans B
# On ajoute B dans M , le résultat est dans A
# Puis on recommence si bien que l'on a dans A le double

A V    # balise du registre de départ
C !      #
  S      # On attend une saisie clavier 
B ^     # On place ce nombre dans le registre B
B +     # B + M dans M  
B +     # et encore
A %    # A contient la valeur de M affichable
 /%      # passage à la ligne
  V       # et on repart
sub

Explications
Chaque instruction est codée sur les trois premières positions de chaque ligne. La première position est utilisé pour un nom de registre (M, R, AF), la deuxième position est soit vide ou contient le signe  / qui permet de modifier ou  enregistrer le nom de registre et  la dernière position est pour l'opérateur arithmétique ou de manipulations de registres. Les lignes commençant par # sont considérées comme des commentaires.

Les différents registres sont M, R, A, A / B, A / B, C, E / B, D, D, E, E, F, F /. Comme dans les manuels Olivetti, nous utilisons dans ce texte (pas dans les programmes bien entendu) x comme raccourci pour X /.
Dans la machine programable originale P101, A et a sont en fait les parties gauche et droite d'un registre unique contenant 22 décimales qui est normalement utilisé pour stocker les deux valeurs de chiffres de  11 décimales  (auquels s'ajoutent les points décimaux et des signes). Dans l'émulateur (qui a été écrit en pascal) cependant a et A sont complètement registres distincts. C'est la même chose pour les registres  B, C, D, E et F.
Dans la machine P101, F, E et D sont des registres utilisés pour le stockage de 24 Instructions qui s'empile puis se dépilent. Dans l'émulateur au contraire, les instructions sont stockées dans un fichier (invisible) de mémoire tampon qui, contrairement à la pile d'origine,  ne débordera jamais.
Ces différences n'ont généralement aucune influence sur le rendement des programmes existants.