L'article de J-F sur le TOULMATH m'a incité à mettre en forme et publier le résultat de mes investigations faites il y a quelques années sur l'histoire du TOULROM, et rendues possibles par la numérisation des revues des différents clubs de l'époque (JPC, PPC-T, PPC TN).
Pour commencer, quoi de mieux qu'un faire-part de naissance?
Dans PPC-T N1 de septembre/octobre 1982, Jean-Daniel Dodin annonçait le module TOULROM disponible sous forme d’EPROMs auprès du club toulousain:
Cette première version offrait aux utilisateurs français disposant d’une EPROM box un accès aux premières fonctions développées en microcode en dehors d’HP, le résultat d’une longue histoire de décodage des instructions des processeurs utilisés par HP dans ses calculatrices. Une histoire qui mérite par ailleurs un article dédié.TOULROM1A est né! Outre une disposition légèrement différente de PPC ROM 2 il contient son nom et une nouvelle fonction "REP". Cette fonction recopie x dans y, z et t.
Quatre versions du TOULROM sont répertoriées aujourd’hui : 1A, 1B, 1C et 1D, et je dispose des images de trois de ces versions. Il faut remercier ici Emmanuel Compès pour sa contribution à la préservation des roms françaises dont le TOULROM, Toul pour Toulouse (comme le T dans PPC-T) et clin d'oeil à l’anglais Tool…
L'EPROM BOX HHP-16K
Historiquement c’est la conception en 1981 par Jim De Arras puis la commercialisation par Weaver Associates fin 1981 de l’émulateur de ROM HHP-16K qui va permettre aux membres des différents clubs PPC de se lancer dans le développement de programmes en microcode qui pourront, après programmation dans un jeu d’EPROM, être exécutés sur une HP-41 comme s’ils se trouvaient dans un module ROM. D'autres EPROM BOX suivront comme l'eprom-box MBK allemande ou le BE-04-K proposé par le PPC-T.
La genèse du HHP-16K est racontée par Jim De Arras, dans la section "EPROM BOXES" à la fin de son article "RAM, ROM, EPROM BOXES, RAM BOXES, and the HP-41C" écrit pour la PPC SOUTHEAST CONFERENCE de 1983 à Orlando: EPROM Boxes-Pages from 1983Orl-2.pdf.
Très actifs dans le déchiffrage du microcode de la HP-41 les Australiens du PPC club de Melbourne ont acquis un HHP-16K dès qu’il fut disponible et ont rapidement créé leur propre ROM en ajoutant de nouvelles fonctions à la JIMROM, la ROM écrite par Jim De Arras et fournie sur un jeu d’EPROM avec le HHP-16k. Cette ROM australienne a évolué rapidement au fur et à mesure que de nouvelles fonctions étaient développées et deux images en sont parvenues jusqu’à nous: la ROM Melbourne (MELBROM 1A) et la ROM PPC_MELB (PPC ROM 2C).
Ceci nous permet d’établir la filiation du module TOULROM :
JIMROM => MELBROM => PPC ROM 2 => TOULROM
On va donc retrouver dans le TOULROM la quasi-totalité des fonctions de la JIMROM avec celles ajoutées dans la PPC ROM 2, et enfin celles développées par Jean-Daniel Dodin et les membres du PPC-T.
JIMROM
L’image de la JIMROM n’a pas encore été retrouvée, mais on connait la liste de ses fonctions à travers un article du numéro 10 de PPC-TN (pages 66-70) ainsi que par une photo trouvée sur eBay d’un HHP-16K avec le listing des fonctions de la JIMROM 1H:
Note : la JIMROM contient 3 headers (un header est une fonction dont le nom contient entre 8 et 11 caractères et n’est pas exécutable par XEQ), le premier, "JIMROM 1H", identifie la ROM, les deux derniers "MEMORY LOST" et "UST KIDDING" sont une petite plaisanterie de Jim De Arras .
Note: le 'J' de "JUST KIDDING" est bien présent dans la ROM d’après l’article de PPC-TN, mais comme le nom fait 12 caractères seuls les 11 derniers sont affichés par un CAT 2.
MELBROM
La MELBROM est mentionnée dans le supplément au numéro 10 de PPC-TN (Février 1982 - page 3) où l’on découvre qu’elle commença brièvement son existence sous le nom de JOHNROM (en référence à John McGechie, l’éditeur de PPC-TN). La prose de John McGechie nous permet de revivre ces début de la programmation en microcode sur HP-41 :
Lorsque l’on regarde l’image de cette ROM qui nous est parvenue sous le nom de Melbourne rom, elle débute par le header "MELBROM 1A" suivi de 36 fonctions, soit deux de plus que ce qui mentionné ci-dessus. On retrouve bien toutes les fonctions de la JIMROM à l’exception de la fonction TP (Tone Programmable) qui est remplacée par PSIZE. Suivent ensuite 15 fonctions développées par les membres du PPC Melbourne :MALMAC Progress
Thanks to Stephen Colgan, the Melbourne Chapter is managing to keep up with progress in this area. He has been able to obtain for us the use of a compact, fairly portable AIM computer with attached ROM programming and editing facilities. In December he taught himself to use this machine, and late in January on Thursday 25th, he and Richard Collett started a marathon run. Richard went for three days on about two hours sleep per night/morning, with Stephen not far behind, and by the Saturday evening Richard had written several working MALMAC* routines and merged them with those of JIMROM 1H. [….]
After getting some sleep on that Saturday evening, Richard brought the AIM to my home on the Sunday, and we went at it from about 6pm to 4.30am. Richard wrote another function and merged it with the rest on (as it was then called) the JOHNROM 1, with, I like to pretend, some assistance from me. [….]
More recently, with further routines written, Richard and Robert Groom spent a day with the AIM and two further routines by Robert were added. MELBROM 1 now has 34 microcode/assembly language/machine Language/machine code/MALMAC* functions in it, including all of those in JIMROM 1H except the programmable TONE.
*MALMAC est le terme utilisé dans PPC-TN pour le microcode.
PPC ROM 2
On trouve une référence à la PPC-MELB ROM dont l'image nous est parvenue dans le numéro 12 de PPC-TN (page 25):
Cette ROM "PPC ROM 2C" du PPC Melbourne (à ne pas confondre avec le module PPC ROM du PPC californien) est similaire à la MELBROM 1A, avec quelques différences: la fonction TP (Tone Programmable) de la JIMROM est de retour (débugée?), une nouvelle fonction XROMTST écrite par Jim De Arras remplace le header "MEMORY LOST" et le header "UST KIDDING" est remplacé par "MELBROM 1A" suivi des fonctions de la MELBROM 1A:Richard Collet burned new EPROM pairs, which he labelled PPC ROM 2C, at the May meeting of the Melbourne chapter, where he had, as always thanks to Steve Colgan, the AIM 65 and EPROM burner. This time Richard kept all unused bits/words clear - not an F in sight unless wanted for code. The pairs made also had the correct checksum, as can now be verified by Jim De Arras' new function XROMTST.
Une autre différence entre la MELBROM 1A et la PPC ROM 2C apparait lorsque l'on compare les microcodes. Ils sont différents pour certaines fonctions comme VP, X<>ROM, Y<>T.... qui commencent dans la MELBROM 1A par deux instructions qui ont été supprimées dans la PPC ROM 2C:
Code : Tout sélectionner
04E C=0 W
270 DADD=C
Murphy strikes again!!! A new problem, implying a new need for standardisation, perhaps, emerged from a letter from Rolf Mach. He first rang me some months ago (with nervous parents hovering at the cost), asking about the EPROM box, then wrote, ordered one, asked for and was sent a MELBROM, tried Gerhard Coder's PPC ROM 2C, found the same functions in it, but with different XROM numbers. Quite natural, of course. Jim De Arras simply placed the MELBROM 1A name, followed by the MELBROM 1A functions after those of (presumably) PPC ROM 2A. DIS, in MELBROM 1B is XROM 12,23. In PPC ROM 2B it is XROM 12,33, while XROM 12,23 becomes PRAB!!!
TOULROM 1A
Après un détour en Australie, nous voici de retour à Toulouse pour le sujet qui nous intéresse. Comme mentionné au début de cet article, la première version du TOULROM diffère très peu du PPC ROM 2: changement de l'ordre des fonctions avec le déplacement de TP et VP en début de liste (ce qui change le numéro XROM des autres fonctions issues de la JIMROM), duplication de la fonction PKEY dans la FAT à la place de X>Y?? dont le code est toujours présent mais inaccessible, et ajout d'un header "TOULROM 1A" avec une seule fonction: REP qui remplit la pile avec la valeur de X.
En regardant le microcode du TOULROM 1A on voit aussi que les deux instructions supprimées au début de certaines fonctions dans la PPC ROM 2C sont toujours présentes, comme dans la MELBROM. Le TOULROM a donc été généré à partir d'une version du PPC ROM 2C antérieure à l'image dont on dispose.
TOULROM 1B
La seconde version du TOULROM est mentionnée dans le PPC-T N2 de novembre/décembre 1982 avec la présentation de la fonction XCAT permettant de démarrer un CAT 2 par la ROM dont le numéro XROM se trouve dans X. Le résultat de XCAT fourni montre le début de la section PPC ROM 2C ainsi que la section TOULROM 1B comprenant quatre fonctions : REP, XCAT, ?X=0 et CLRGX.
Cependant l’image de la version 1B dont je dispose contient beaucoup plus de fonctions, fonctions qui pour la plupart (en grisé dans le tableau ci-dessous) ne se sont pas dans les versions suivantes mais que l’on retrouve dans la ROM MLDL OS 1A de de Didier Jehl et Janick Taillandier (décrite dans le JPC 14) car elles sont propres à la gestion d'un MLDL. Je me demande donc si l’image TR1B dont je dispose est bien celle du TOULROM 1B diffusée par le PPC-T, ou s’il s’agit d’une version de travail, mélange entre le TOULROM 1B et le MLDS OS. De plus la rom revision en fin de rom n'est pas TR1B comme on pourrait s'y attendre mais WW3M ce qui indique que l'image provient d'une W&W RAM-Box.
TOULROM 1C
La troisième version du TOULROM est mentionnée dans le PPC-T N3 de janvier/février1983 avec la présentation des fonctions BHEX, R? et MEMLOST. Je n'ai pas l'image de cette version mais grâce à J-F j'ai la liste des fonctions qui se trouvent page 115 du livre "Au fond de la HP-41C" (ed.3, mai 1983).
On peut donc voir qu'il n'y a plus qu'un seul header "TOULROM 1C" au début, que le programme utilisateur "BHEX" remplace le header "MELBROM 1A" et que CLRGX remplace le header "TOULROM 1x" des versions précédentes. En plus des fonctions décrites dans PPC-T N3 on trouve aussi la fonction ECRAN décrite dans PPC-T N4.
Note: dans le tableau ci-dessus je n'ai gardé pour TR1B que les fonctions listées dans le PPC-T N2.
TOULROM 1D
Enfin pour terminer voici la dernière version connue du TOULROM, la version 1D. Elle diffère peu de la version 1C avec seulement deux nouvelles fonctions :
- CHARGE écrite par Stephane Barisien et équivalent en microcode de la fonction LB du PPC ROM américain (PPC-T N4 p24)
- X>ROM pour écrire le contenu de X dans un MLDL (PPC-T N5 p31)
Cette dernière fonction introduite par Jean-Daniel Dodin dans le TOULROM 1D se retrouve aussi dans l’image du TOULROM 1B dont on dispose, ce qui prouve que cette image ne représente pas la version 1B originale mais plutôt une version dérivée.
Comme les versions précédentes la version 1D contient toujours au début des fonctions VP, X<>ROM, Y<>T … les deux instructions supprimées dans l’image de la PPC ROM 2C dont on dispose.
Guide de référence
Pour faciliter l'utilisation de ces différentes ROMS j'ai regroupé dans un guide de référence la description de toutes les fonctions telles que l'on peut les trouver dans les revues PPC TN et PPC-T: Reference Guide JIMROM-MELBROM-PPC ROM 2-TOULROM
Conclusion
Cet aperçu des origines et du contenu du module TOULROM et de ses différentes versions nous montre l’effervescence des développements autour du microcode de la HP-41 au début des années 1980.
Cette effervescence fait aussi que les images des différentes ROMs qui nous sont parvenues ne sont qu’une photo à un instant donné et que sous le même numéro de version des contenus différents aient pu exister.
Il ne reste plus qu’à espérer que de nouvelles images de ces premières ROMs soient redécouvertes et publiées.
Références
- les revues PPC-T et JPC des chapitres toulousains et parisiens du PPC sont disponible sur le site de J-F : Revues PPC et documents divers
- les PPC-TN du chapitre PPC de Melbourne ainsi que les comptes-rendus des Conférences PPC comme celle d’Orlando en 1983 sont disponibles sur The PPC HP Calculator Archive et aussi sur la clé USB HHC 2021