Quand on retranscrit le listing BASIC en une suite d'expressions algébriques typique de l'AER des SHARP, on s'attend ce que le code suivant soit mis en réserve. Chaque chiffre, opérateur, fonction ou instruction prend un octet. Pour mieux voir de quoi il s'agit, j'ai éclaté le code du MPO97 en plusieurs lignes dans un tableau où chaque case fait un octet.
- MPO97 Natural SHARP EL 5150 Algebraic Expression Reserve (expanded).gif (16.11 Kio) Vu 4117 fois
Principes de base:
Le principe de fonctionnement de la SHARP EL-5150 est l'évaluation des expressions algébriques. Grosso modo, chaque ligne du tableau est remplie d'une expression. Les expressions sont donc une suite de chiffres, symboles , registres ou variables combinés à des fonctions, parenthèses ou opérateurs effectuant le calcul.
La fin d'une expression est, en mode direct, marquée par l'appuis sur la touche (=) mais il y a d'autres symboles terminant une expression et déclenchant son évaluation. Comme par exemple la virgule
(,), l'espace séparateur
(˽), les commandes mémoire de réponse
(M+),
(M-) ou
(→M), les commandes de conversion
(→DEC)(→HEX)(→OCT) et
(→BIN) et surtout la commande de sauvegarde
(STO) suivie de la désignation de son registre.
En mode direct
(COMP) ces touches déclenchent l'évaluation de l'expression saisie et affichent le résultat qui sera mémorisée dans la mémoire de réponse (ANS). Une pression sur la commande de relecture
(PB) permet de revenir et d'éditer l'expression préalablement saisie.
Cela fonctionne de même lorsqu'une expression de la réserve AER est évaluée. Les mêmes fonctions terminent une expression et déclenchent son évaluation. Le résultat de cette évaluation ne sera affiché que s'il s'agit de la dernière expression du code ou lors de l'utilisation d'une virgule
(,).
Concision:
Si on observe le code ci-dessus, on se rend alors compte que certaines expressions se terminent par plus d'une fonction de terminaison. J'ai sous-ligné en
rouge-clair les octets non indispensables occupés par les fonctions terminatrices redondantes, mais aussi par les opérateurs ou parenthèses non indispensables à l'interprétation correcte de l'expression algébrique et les opérateurs d'évaluation inutiles.
En effet, l'autre point marquant de la logique de fonctionnement de cette calculatrice et l'utilisation de la multiplication implicite et la syntaxe rigoureuse des fonctions monadiques ou dyadiques, rigoureusement infixes, suffixes ou préfixes afin de suivre au plus près la syntaxe habituelle des expressions mathématiques.
Ainsi, les parenthèses ne sont pas indispensables autours des arguments des fonctions; elle ne le sont pas non-plus autours des opérateurs prioritaires lorsque les règles habituelles de priorité algébrique s'appliquent.
Enfin, un signe d'évaluation
(=) est inutile pour une expression ne contenant aucun calcul.
On peut donc obtenir rigoureusement le même résultat sans les fonctions soulignées en
rouge-clair, ce qui fait gagner une dizaine d'octets:
- MPO97 Concise SHARP EL 5150 Algebraic Expression Reserve.gif (14.23 Kio) Vu 4117 fois
Mais d'autres économies peuvent être faites:
Astuces:
En effet, la SHARP EL-5150 permet d'enchainer les calculs. Toute expression commençant par un opérateur prendra comme premier argument le résultat à l'affichage.
Ainsi, si l'expression suivante d'un code commence par utiliser le registre que l'on vient de sauvegarder à l'aide de (STO) à la fin de l'expression précédente; on pourra enchainer directement le calcul de cette expression sans avoir à répéter ledit registre. L'instruction de sauvegarde (STO) sert toujours de marqueur de fin d'expression et déclenche l'évaluation de l'expression précédente complète. Mais le résultat sera transmis à l'expression suivante par l'intermédiaire du registre d'affichage. La valeur sera donc arrondie conformément au mode d'affichage (FSE) et (TAB)(n) en cours. La transmission se fait aussi lorsque rien n'est affiché.
Si, par contre, l'on ne souhaite pas que le résultat transmis soit arrondi au format d'affichage, il faut utiliser un appel au registre.
Notons que cela marche aussi pour une expression de jugement (expression de test). C'est d'ailleurs ce que je me permets de faire dans le code ci-dessous.
Les enchainements sont aussi possibles au travers des instructions de boucle qui sont, comme les expressions de jugement, complètement transparentes du point de vue algébrique. C'est un principe crucial, cela permet de calculer des séries de sommes ou de produits.
On peut donc éviter la répétition inutile des (STO)(X).
Dernier raffinement, l'utilisation des instructions d'accumulation en mémoire (utilisant en fait le registre
M) permettent aussi de gagner quelques octets. En effet
0(STO)(J) ou
J+1(STO)(M) et plus long que respectivement
0(→M) ou
1(M+) et a les même effets !
- MPO97 Chained SHARP EL 5150 Algebraic Expressions in MPO.gif (12.96 Kio) Vu 4117 fois
Notons que le code ci-dessus permet de vérifier les éventuels conséquences des différents mode d'arrondi (FSE) et (TAB)(n). En effet, le test
X+1≠X et calculé par l'intermédiaire du registre d'affichage., Bon, comme la procédure est basée sur des entiers de plus en plus grands, aucun effet n'est visible car les grands nombres entiers sont tous affiché de la même façon quelque soit le mode (FSE) sélectionnée ou le nombre de décimales (il n'y en a pas) affichées par (TAB).
gege a écrit : ↑24 juil. 2022 22:44Il me semble qu'il existe un "AER2" avec des zones de sous-programmes numérotées de 1 à (jusqu'à) 9 et d'autres trucs...
Mais sur quelle machine ????
La SHARP EL 5150 fait partie des trois machines en AER I (seconde version) comme la EL-5030 et la EL-5050 ainsi que que les deux plus récentes EL-5200 et EL-9000 en AER II qui ont des sous-programmes.
La EL-5150 est par contre la seule ayant aussi le mode
Var qui permet d'utiliser des noms de variables jusqu'à sept caractères mêlant minuscules, quelques caractères grecs et indices numériques.
Je prépare une autre rubrique où un petit code illustre bien ces spécificités très sympa. De plus, il trouve les racines de fonctions par la méthode de Newton).