La HP-65 demande un peu d'efforts d'adaptation au programmeur :
- certaines fonctions utilisent deux pas, d'autres un seul, il s'agit de s'adapter lors des tests logiques ; par exemple, [x=y] saute les deux pas suivants si le résultat est FAUX ; si l'instruction à suivre (si VRAI) ne possède qu'un pas, il faut insérer un NOP (No operation) : cela signifie qu'il faut avoir en tête la taille de toutes les instructions ;
- à l'allumage de la HP-65, sa mémoire programme n'est pas vide (oui, je me suis fait avoir, j'ai cru que j'avais un modèle unique à mémoire constante ) : elle contient les 5 fonctions supérieures du clavier (1/x, \/¨x, etc.) assignées aux étiquettes A à E : il est plus économique de passer par ces fonctions pour un MPO. Les étiquettes peuvent être redondantes, donc on ne perd pas nécessairement les fonctions "supérieures" mais il faut être prudent ;
- pas facile de compter la mémoire utilisée : chaque instruction mesure six bits (source MOHP : "The HP-65 had 100 lines of space and used label addressing. Each instruction word was 6 bits long allowing for 64 distinct operations.").
Voici le code qui reprend l'algorithme que j'ai utilisé sur la 29c (voir plus bas) :
Code : Tout sélectionner
33 08 STO 8 {c'est le registre 8 qui permet les boucles}
02 2
33 02 STO 2
23 LBL
11 1
12 V¨x
31 ENTER
31 ENTER
02 2
81 /
33 STO
81 /
02 2
35 08 g Rd
02 2
61 +
35 g
83 DSZ
22 GTO
12 1
34 02 RCL 2
84 R/S
(un RTN n'arrête pas le programme, la machine cherche... quelque chose, sans doute le label initial qui ici n'existe pas.)
3,141591422, , comme sa petite sœur, mais en 9 sec. .
22 pas, soit (22*6 bits/8) 16,5 octets ; je suppose qu'il faut ajouter 7 octets pour chaque registre, ce qui nous fait un total de 30,5 octets ma bonne dame.
Si on arrondit à l'octet supérieur, on obtient la même somme que pour la 29c.
J'édite pour donner le résultat de la HP-65 avec le programme de zpalm pour 15c ; 3,141591422 est trouvé en 8 secondes, c'est mieux.Marge a écrit :Programme pour HP-29c
Code : Tout sélectionner
STO 0 2 STO 2 LBL 1 SQR ENTER ENTER 2 / STO / 2 Rd 2 + DSZ GTO 1 RCL 2 RTN
3,141591422 en 7 sec. 5/10
17 pas, 2 registres, soit 31 octets.
Code : Tout sélectionner
23 LBL
11 A
33 08 STO 8
02 2
33 01 STO 1
23 LBL
01 1
12 V¨x
33 STO
81 /
01 1
02 2
33 STO
71 *
01 1
61 +
35 g
83 DSZ
22 GTO
01 1
34 01 RCL 1
84 RTN