TOULROM: la première ROM française

Questions et discussions relatives à l'histoire du HP-41.
Avatar de l’utilisateur
hpmaniac
Expert
Messages : 213
Inscription : mar. 16 sept. 2008 15:18
Localisation : Grenoble

TOULROM: la première ROM française

Message par hpmaniac »

Introduction

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:
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.
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é.

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…
Toulrom.zip
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.

Image Image Image

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:

Image Image

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 :
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.
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 :

Image

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):
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.
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:

Image

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
Entre la MELBROM 1A de fin janvier/début février 1982 et la PPC ROM 2C de mai 1982 il y a eu plusieurs itérations avec au moins la MELBROM 1B et les PPC ROM 2A et 2B. Toutes ces roms sont citées dans un extrait du numéro 12 de PPC-TN (page 24) mais leur contenu détaillé reste inconnu:
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.

Image

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.

Image

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.

Image

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).

Image

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.

Image

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.

Image

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par hpmaniac le dim. 28 août 2022 13:38, modifié 4 fois.

Avatar de l’utilisateur
pcscote
Apprenti expert
Messages : 26
Inscription : lun. 23 janv. 2017 04:51
Localisation : Quebec/Canada

Re: TOULROM: la première ROM française

Message par pcscote »

Article super intéressant et très complet, merci!
Sylvain

Avatar de l’utilisateur
jeffcalc
Expert HP-41
Messages : 65
Inscription : mer. 5 mars 2008 21:32
Localisation : France, Isere
Contact :

Re: TOULROM: la première ROM française

Message par jeffcalc »

Merci pour tous ces détails sur la TOULROM.
J'avais connaissance de la relation avec la PPCROM-2 mais je ne connaissais pas l'origine australienne de celle-ci.
Et je ne connaissais pas du tout la JIMROM.

On peut aussi relier la TOULROM à la TOULMATH puisque celle-ci inclut les fonctions REP, Y<>T, Z<>T et Y<>Z sous des noms à peine différents. Je sais maintenant que les TMY<>T, TMZ<>T et TMY<>Z proviennent de la JIMROM et non pas de PPC-T comme je le pensais jusqu'ici !

Ces fonctions REP, Y<>T, ... étaient faciles à comprendre et à écrire. Sans pièges, elles étaient souvent les premières fonctions des nouveaux venus au MCODE.

J-F

Avatar de l’utilisateur
hpmaniac
Expert
Messages : 213
Inscription : mar. 16 sept. 2008 15:18
Localisation : Grenoble

Re: TOULROM: la première ROM française

Message par hpmaniac »

Je viens de rajouter à la fin de l'article ci-dessus un guide de référence des fonctions que l'on trouve dans ces roms (JIMROM, MELBROM, PPC ROM 2 et TOULROM).

Mike
Sous apprenti
Messages : 6
Inscription : ven. 29 juil. 2022 22:25

Re: TOULROM: la première ROM française

Message par Mike »

Merci. C'est bien intéressant.

M.

Avatar de l’utilisateur
jeffcalc
Expert HP-41
Messages : 65
Inscription : mer. 5 mars 2008 21:32
Localisation : France, Isere
Contact :

Re: TOULROM: la première ROM française

Message par jeffcalc »

J'écrivais plus haut:
"On peut aussi relier la TOULROM à la TOULMATH puisque celle-ci inclut les fonctions REP, Y<>T, Z<>T et Y<>Z sous des noms à peine différents."

On peut aussi ajouter la fonction CLRGX (TMCLRGX dans TOULMATH), et curieusement celle-ci ne fonctionne pas plus dans TOULROM que dans TOULMATH ! Sauf si quelque chose m'échappe.
CLRGX était donc probablement la seconde fonction, avec ?X=0, "ne donnant pas le résultat attendu" (comme c'est bien dit!) dans TOULROM 1B, voir l'article "NOMAS" dans PPC-T N2p14. A l'inverse de ?X=0, CLRGX a pourtant été conservé (non corrigé) dans les versions suivantes de TOULROM.

La fonction TMCLRGX du TOULMATH semble avoir été ré-écrite, on en a même le code "source" dans Micro-Revue 7 p27-29, et c'est peut-être juste une coïncidence qu'elle ne fonctionne pas non plus.

J-F

Répondre