Les modules de la HP-41C comme vous ne les avez jamais vu !

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Et voila ! J'ai compile a la main ma premiere ROM. Bon, cela m'a permit de "decouvrir les entrailles d'un module" :geek:
En fait, j'ai utlise la page 2 du PANAME; j'ai supprime quelques fonctions que je trouve (c'est mon opinion) sans grand interet et j'ai en rajoute d'autres plus a gout d'utilisation.
Je l'ai baptisee -PANAME NW (NW pour NEW).
J'ai garde:
  • les instructions ALPHA (j'ai renomme SUB$ en ASUB et APPX en XTOAI),
  • les instructions de manipulation des matrices (j'ai renomme SORT en RGSORT),
  • les instructions de comparaisons indirectes avec les registres (X..NN? venant de la CX).
J'ai ajoute quelques instructions bien utiles de la SANDMATH/SANDBOX (DECX, INCX, E3/E+, X>=Y?, X>=0?, CFX, SFX,...), ainsi que COD et DCOD "empruntees" au ZENROM, quelques instructions interessantes du du MLROM (LB), et j'ai cree ma premiere instruction LX (simple, 10 mots ! C'est juste pour le fun8) ), et voila le travail:

Code : Tout sélectionner

	-PANAME NW
	AD-LC
	ALENG
	ANUM
	ANUMDEL
	AROT
	ASUB
	ATOXL
	ATOXR
	ATOXX
	BLDPT
	BRKPT
	CFX
	CLINC
	COD
	COLPT
	DCOD
	DECX
	E3/E+
	INCX
	LC-AD
	LB
	LX
	LINPT
	POSA
	PSIZE
	RCL+
	RCL-
	RCL*
	RCL/
	RG+-
	RG*
	RG/
	RG+Y
	RG*Y
	RG/Y
	RGAX
	RGCOPY
	RGINIT
	RGNb
	RGORD
	RGSORT
	RGSUM
	RGVIEW
	RGXTR
	RTN?
	SFX
	SIZE?
	STO>L
	X>=0?
	X>=Y?
	X=Y?Z?
	X=NN?
	XzNN?
	X<NN?
	X<=NN?
	X>NN?
	X>=NN?
	X<>F
	XTOAI
	XTOAL
	XTOAR
	YTOAX
Bon, il faut maintenant extraire et stocker ces instructions sous forme de sources dans un repertoire, pour pouvoir les reutiliser a volonte.

Par contre, la "contruction" de cette ROM a montre les limites de mon assembleur, et je vais devoir reflechir et implementer certaines evolutions.

PS: Un grand coup de chapeau aux ingenieurs de chez Hewlett-Packard qui ont concu "Coconut". Son OS (le main-frame) est extremement mature et puissant 8O ! RESPECT !!!
Modifié en dernier par cgh le 13 juin 2016 22:00, modifié 2 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3644
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par Hobiecat »

cgh a écrit :Je l'ai baptisee -PANAME NW (NW pour NEW).
Tu devrais la renommer PANAME CGH !
Bravo pour le boulot, c'est impressionnant ! 8O
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Ca commence a etre pas mal du tout. La premiere ROM (-PANAME NW) etait bricolee "a la main".

Maintenant, j'ai commence a decouper les sources et j'ai pu obtenir les premieres instructions assemblees depuis des sources differents, extraits des differentes ROM et des sous-programmes inclus depuis un source principal.
Le module MYROM:

Code : Tout sélectionner

FAT XROM 18 FCNS 42 ROM-ID 'MY-0A' CHECKSUM 15D (15D) OK [COMPUTED 15D]
8000/0  ......F.   012 'MYROM'       	XROM	18
8001/0  ......F.   02A "MYROM"         	FCNS	42
8002/0  ......F.   000,08E	808E	XROM	18, 0	-BASE CONV
8004/0  ......F.   000,0BC	80BC	XROM	18, 1	HEXIN
8006/0  ......F.   000,0C5	80C5	XROM	18, 2	OCTIN
8008/0  ......F.   000,0CD	80CD	XROM	18, 3	BININ
800A/0  ......F.   002,0A2	82A2	XROM	18, 4	HEXVIEW
800C/0  ......F.   002,0ED	82ED	XROM	18, 5	OCTVIEW
800E/0  ......F.   003,020	8320	XROM	18, 6	BINVIEW
8010/0  ......F.   003,054	8354	XROM	18, 7	-MISC UTIL
8012/0  ......F.   003,05A	835A	XROM	18, 8	aVIEW
8014/0  ......F.   003,0A7	83A7	XROM	18, 9	INCX
8016/0  ......F.   003,0AD	83AD	XROM	18,10	DECX
8018/0  ......F.   003,0C2	83C2	XROM	18,11	DECY
801A/0  ......F.   003,0C8	83C8	XROM	18,12	INCY
801C/0  ......F.   003,0DE	83DE	XROM	18,13	E3/E+
801E/0  ......F.   003,0F5	83F5	XROM	18,14	RCL-
8020/0  ......F.   003,0FC	83FC	XROM	18,15	RCL+
8022/0  ......F.   004,003	8403	XROM	18,16	RCL*
8024/0  ......F.   004,00A	840A	XROM	18,17	RCL/
8026/0  ......F.   005,04E	854E	XROM	18,18	X=NN?
8028/0  ......F.   005,05A	855A	XROM	18,19	XzNN?
802A/0  ......F.   005,065	8565	XROM	18,20	X<=NN?
802C/0  ......F.   005,073	8573	XROM	18,21	X<NN?
802E/0  ......F.   005,07E	857E	XROM	18,22	X>=NN?
8030/0  ......F.   005,08E	858E	XROM	18,23	X>NN?
8032/0  ......F.   005,097	8597	XROM	18,24	X=Y?Z?
8034/0  ......F.   005,0B8	85B8	XROM	18,25	-SYNTH PROG
8036/0  ......F.   005,0BC	85BC	XROM	18,26	SXL
8038/0  ......F.   005,0C4	85C4	XROM	18,27	SXR
803A/0  ......F.   005,0D6	85D6	XROM	18,28	RXR
803C/0  ......F.   005,0DD	85DD	XROM	18,29	RXL
803E/0  ......F.   005,0E4	85E4	XROM	18,30	X+Y
8040/0  ......F.   005,0EE	85EE	XROM	18,31	Y-X
8042/0  ......F.   005,0F7	85F7	XROM	18,32	1CMP
8044/0  ......F.   005,0FF	85FF	XROM	18,33	2CMP
8046/0  ......F.   006,008	8608	XROM	18,34	YANDX
8048/0  ......F.   006,012	8612	XROM	18,35	YORX
804A/0  ......F.   006,01B	861B	XROM	18,36	COD
804C/0  ......F.   006,035	8635	XROM	18,37	DCOD
804E/0  ......F.   006,056	8656	XROM	18,38	LX           PROMPT: 3
8050/0  ......F.   006,05F	865F	XROM	18,39	LA           PROMPT: 3
8052/0  ......F.   006,068	8668	XROM	18,40	LB           PROMPT: 3
8054/0  ......F.   006,077	8677	XROM	18,41	XROM
Le source:

Code : Tout sélectionner

		.OPENFAT	18

		.ORG	0082

		NOP
		NOP

		* Base instructions
		*
		.NAME	"-BASE CONV"	 
		.AUTOFAT?	.ENTRY	+
		RTN

		.INCLUDE	baseIN.SRC

		.INCLUDE	baseVIEW.SRC


		* Miscellanous instructions
		*
		.NAME	"-MISC UTIL"
		.AUTOFAT?	.ENTRY	+
		RTN

		.INCLUDE	aVIEW.SRC

		.INCLUDE	DECX_INCX.SRC
		.INCLUDE	DECY_INCY.SRC

		.INCLUDE	E3divEpls.SRC

		.INCLUDE	RCLop.SRC

		.INCLUDE	XopNNis.SRC

		.INCLUDE	X=Yis=Zis.SRC


		* Synthetic programmation
		*
		.NAME	"-SYNTH PROG"
		.AUTOFAT?	.ENTRY	+
		RTN

		.INCLUDE	56-BITS.SRC

		.INCLUDE	COD.SRC

		.INCLUDE	DCOD.SRC

		.INCLUDE	LX.SRC
		.INCLUDE	LA.SRC
		.INCLUDE	LB.SRC

		.INCLUDE	XROM.SRC

		* Vector table
		*
		.ORG	0FF4	; Vectors table
		NOP		; Pause Loop
		NOP		; Main Running Loop
		NOP		; Deep Sleep Wake Up With No Key Down
		NOP		; Power Off
		NOP		; I/O Service
		NOP		; Deep Sleep Wake Up
		NOP		; Cold Start

		* My Rom ID
		*
		.ROMID	MY-0A

		.CLOSEFAT
		.CHECKSUM
		.END
Il a fallu mettre a jour l'assembleur et rajouter de nouvelles directives, car chaque ROM ou presque a sa specificite 8O
Mais j'arrive maintenant a pouvoir "piocher" des instructions par-ci par-la et a les assembler ensemble 8)

Le plus long restant le travail de decoupage et de mise en "conformite" des sources. Il faut en effet extraire les sous-programmes et verifier si ceux-ci ne sont pas deja connus. Sinon, il seront inclus 2 fois (et meme plus).

Un petit ls de ma base de donnees d'instructions.

Code : Tout sélectionner

56-BITS.SRC  BASE2.SRC	    COD.SRC	       DECX_INCX.SRC  LA.SRC  RCLop.SRC	X=Yis=Zis.SRC  aVIEW.SRC
CFXSFX.SRC      DCOD-ZENROM.SRC  DECY_INCY.SRC  LB.SRC  XROM.SRC       baseIN.SRC
AREV.SRC     COD-ZENROM.SRC  DCOD.SRC	      E3divEpls.SRC  LX.SRC  SUB/	     XopNNis.SRC    baseVIEW.SRC
Cela fonctionne bien sur l'emulateur 8) Et ca fonctionne aussi sur une vraie HP-41CV avec un NoVRAM :D :D
Si je mene a bien mon petit projet, on pourra contruire des "ROM" a la demande (enfin, il faudra respecter certaines regles) :geek:

Je vais essayer de developper un ROM builder ! Livraison pour Noel :D
Modifié en dernier par cgh le 13 juin 2016 22:01, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3644
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par Hobiecat »

Toujours aussi impressionant ! 8O
bravo Cgh !!
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

cgh a écrit :Le plus long restant le travail de decoupage et de mise en "conformite" des sources. Il faut en effet extraire les sous-programmes et verifier si ceux-ci ne sont pas deja connus. Sinon, il seront inclus 2 fois (et meme plus).
Pour la construction de la base de donnees d'instructions et de sous-programmes, si de bonnes ames sont interessees par me donner un petit coup de main, elles sont les bienvenues!
Je fournis les images des ROMs desassemblees et "sourcees". Il faut les decouper par instructions (ou groupes d'instructions). Regarder les sous-programmes appeles. Les extraire dans des fichiers autonomes (repertoire SUB/ si ces sous-programmes sont communs a plusieurs fonctions/groupes de fonctions. Ajouter des directives pour asmrom et nsimII.
C'est TRES long.
Competences requises:
  • Etre (tres) motive,
  • Maitriser l'assembleur NUT et quelques sous-programmes du Main-Frame.
Voici le debut des baseIN.SRC:

Code : Tout sélectionner

				.INCLUDE	SUB/base943C.SRC

				.NAME	"HEXIN"	 
9032|	08E|
9033|	009|
9034|	018|
9035|	005|
9036|	008|

				.AUTOFAT?	.ENTRY	+

	(x_HPILDEVU-1A_HEXIN)
9037|	248|			SF	9
9038|	130,008|		LDI	008
903A|	08B|			JNC	(l_HPILDEVU-1A_904B)	; 904B

				.NAME	"OCTIN"	 
903B|	08E|
903C|	009|
903D|	014|
903E|	003|
903F|	00F|

				.AUTOFAT?	.ENTRY	+

	(x_HPILDEVU-1A_OCTIN)
9040|	130,00F|		LDI	00F
9042|	043|			JNC	(l_HPILDEVU-1A_904A)	; 904A

				.NAME	"BININ"	 
9043|	08E|
9044|	009|
9045|	00E|
9046|	009|
9047|	002|

				.AUTOFAT?	.ENTRY	+

	(x_HPILDEVU-1A_BININ)
9048|	130,002|		LDI	002

	(l_HPILDEVU-1A_904A)
904A|	244|			CF	9

	(l_HPILDEVU-1A_904B)
904B|	0E6|			B<>C	X
904C|	3B8|			C=REGN	14	; 'd'
904D|	33C|			RCR	1
                        .  .  .
Les nombres hexa suivis de | ne sont presents que pour suivre le code et verifier les adresses. Il ne sont pas pris en compte par l'assembleur asmrom.

Si vous etes volontaires, manifestez-vous sur le fil. On verra apres par courriel.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Ca y est ! J'ai un embryon de ROM builder.
Il construit tout seul le source a faire assembler. Tout est specifier sur la ligne de commande !

On doir fournir le XROM number (-xrom num), le ROMID (-romid MY-0A), des chemins d'include etc... eventuels, puis si on le desire un ou plusieurs groupes de fonctions (-f f1,f2,f3,...) avec un nom de groupe (-g -xxxxx ce sera le -XXXXX affiche par CAT 2), le fichier ROM image et si on desire le "packer" (format WWRAMBOX/ESMLDL pour l'instant, mais HEPAX est prevu aussi).
Et boum ! Tout droit sorti des delires de cgh, une petite ROM prete a l'emploi 8) :geek:
Un exemple:

Code : Tout sélectionner

./... -pack-wwrambox \
-x 7 -id MY-0A \
-path BLD/ \
-g "-56 BITS" -f 56-BITS.SRC \
-g "-MISC UTIL" -f XopNNis.SRC,E3divEpls.SRC,RCLop.SRC -f aVIEW.SRC,AREV.SRC \
-g "-HACK UTIL" -f COD.SRC,DCOD.SRC,LB.SRC,LA.SRC,LX.SRC -f XROM.SRC \
ROM/MYROM.ROM
Cela va nous creer l'image MYROM.ROM, la packer en format WWRAMBOX dans un fichier MYROM.r41 (type ROM41).
Puis, l'affichage de la FAT donnera:

Code : Tout sélectionner

MODULE 'MYROM' IN PAGE 8/0
FAT XROM  7 FCNS 32 ROM-ID 'MY-0A' CHECKSUM 3B5 (3B5) OK [COMPUTED 3B5]
8000/0  ......F.   007 'MYROM'       	XROM	 7
8001/0  ......F.   020 "MYROM"         	FCNS	32
8002/0  ......F.   000,08C	808C	XROM	 7, 0	-56 BITS
8004/0  ......F.   000,090	8090	XROM	 7, 1	SXL
8006/0  ......F.   000,098	8098	XROM	 7, 2	SXR
8008/0  ......F.   000,0AA	80AA	XROM	 7, 3	RXR
800A/0  ......F.   000,0B1	80B1	XROM	 7, 4	RXL
800C/0  ......F.   000,0B8	80B8	XROM	 7, 5	X+Y
800E/0  ......F.   000,0C2	80C2	XROM	 7, 6	Y-X
8010/0  ......F.   000,0CB	80CB	XROM	 7, 7	1CMP
8012/0  ......F.   000,0D3	80D3	XROM	 7, 8	2CMP
8014/0  ......F.   000,0DC	80DC	XROM	 7, 9	YANDX
8016/0  ......F.   000,0E6	80E6	XROM	 7,10	YORX
8018/0  ......F.   000,0F6	80F6	XROM	 7,11	-MISC UTIL
801A/0  ......F.   001,085	8185	XROM	 7,12	X=NN?
801C/0  ......F.   001,091	8191	XROM	 7,13	XzNN?
801E/0  ......F.   001,09C	819C	XROM	 7,14	X<=NN?
8020/0  ......F.   001,0AA	81AA	XROM	 7,15	X<NN?
8022/0  ......F.   001,0B5	81B5	XROM	 7,16	X>=NN?
8024/0  ......F.   001,0C5	81C5	XROM	 7,17	X>NN?
8026/0  ......F.   001,0CD	81CD	XROM	 7,18	E3/E+
8028/0  ......F.   001,0E4	81E4	XROM	 7,19	RCL-
802A/0  ......F.   001,0EB	81EB	XROM	 7,20	RCL+
802C/0  ......F.   001,0F2	81F2	XROM	 7,21	RCL*
802E/0  ......F.   001,0F9	81F9	XROM	 7,22	RCL/
8030/0  ......F.   002,04B	824B	XROM	 7,23	aVIEW
8032/0  ......F.   002,098	8298	XROM	 7,24	AREV
8034/0  ......F.   002,0F7	82F7	XROM	 7,25	-HACK UTIL
8036/0  ......F.   002,0FB	82FB	XROM	 7,26	COD
8038/0  ......F.   003,015	8315	XROM	 7,27	DCOD
803A/0  ......F.   003,036	8336	XROM	 7,28	LB           PROMPT: 3
803C/0  ......F.   003,043	8343	XROM	 7,29	LA           PROMPT: 3
803E/0  ......F.   003,04C	834C	XROM	 7,30	LX           PROMPT: 3
8040/0  ......F.   003,057	8357	XROM	 7,31	XROM         PROMPT: 2SIY+
Bon, ben, reste plus qu'a se motiver pour les travaux manuels de decoupage... ;-)
Modifié en dernier par cgh le 13 juin 2016 22:05, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2936
Enregistré le : 03 mai 2008 15:33
Localisation : Grenoble

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par zpalm »

8O 8O 8O impressionnant !!! C'est déjà Noël :D
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Encore de beaux progres ce soir. J'ai extrait les instructions ALPHA du PANAME et les instructions LOGIC/BITS du HPILDEV.
De plus, j'ai ajoute des directives (-Ff -Fs et -F=) pour organiser la FAT selon plusieurs criteres :geek:

Code : Tout sélectionner

Usage: ./...options] [assembler options]
		[-P path] [-L path]
		[-kH|-kE|-kW] [-N]
		-X xr -I cc-cc
		{[-g header] -f fncs1[,f2,...] [-Fs|-F=n1[,n2,...]|-Ff}
		[{-i inc1[,inc2,...]}]
		[-s file.SRC] file.ROM
with options:
	   -version    display the version and exit
	   -help       display this usage message
with assembler options:
	-E|-error      set errors or warnings as fatal
	-p|-page <n>   assume the given page address <n> for assembly
	-n|-no-rom     call the assembler without writing a .ROM image
	-d|-debug      enable the debug+verbose mode
	-v|-verbose    enable the verbose mode
with ROM builder options:
	-P|-path <bld> set sources root path to <bld>/ else BLD/ is assumed
	-L|-lif <lif>  set LIF root path to <lif>/ else LIF/ is assumed
	-kH            ROM image packed to HEPAX sdata file <lif>/<file>.sda
	-kE|-kW        ROM image packed to WWRAMBOX/ESMLDL ROM41 file <lif>/<file>.r41
	-N|-no-vector  disable the default null poll vector
	-i|-include <i1[,i2,..]>  files to be included in ROM
	-s|-source <file>.SRC     write the ROM builder source to <file>.SRC
mandatory arguments:
	-X|-xrom <xr>             set the XROM number [1..31] for the ROM
	-I|-romid <cc-cc>         set the ROM identifier to <cc-cc> for the ROM
	-g|-group <hdr>           set a header name entry for the group of functions
	-f|-fcns <f1[,f2,..]>     function files to be included in ROM
	-Ff                       FAT group order is untouched
	-Fs                       FAT group is sorted alphabetically
	-F=<n1[,n2,..]>           FAT group is ordered by <n1> [<n2> ...]
at least one -f <f1[,f2,..]> should be specified
Ca commence a devenir sympa :-D

Bon, la ligne de commande est un peu compliquee (il faut que j'ajoute automatiquement le .SRC):

Code : Tout sélectionner

.... -v -P BLD/ -kW -X 7 -I MY-0A \
-g "-56 BITS" -f 56-BITS.SRC -F=7,8,9,10,5,6,4,3,1,2 \
-g "-MISC UTIL" -f E3divEpls.SRC,RCLop.SRC -f XopNNis.SRC -Ff \
-g "-HACK UTIL" -f COD.SRC,DCOD.SRC,LB.SRC,LA.SRC,LX.SRC -f RAMEDIT.SRC -Fs -f XROM.SRC \
-g "-ALPHA" -f ACLis.SRC,ALENGis.SRC,ANUM_ANUMDEL.SRC,AREV.SRC,AROT.SRC,ASUB.SRC \
-f ATOXL_R.SRC,ATOXX_YTOAX.SRC,POSA.SRC,XTOAI.SRC,XTOAR.SRC,aVIEW.SRC -Fs \
-g "-BASE" -f baseIN.SRC,baseVIEW.SRC,LOGIC.SRC,BITis.SRC,ROTXY.SRC -Fs \
-s MYROM.SRC ROM/MYROM.ROM
Le code produit par le ROM builder devient un peu plus simple:

Code : Tout sélectionner

*       _______________________________ 
*      +-------------------------------+
*      |  N S I M II  E M U L A T O R  |
*      |           0.20.999            |
*      +-------------------------------+
*      | =ON==|=USER       PRGM=|ALPHA |
*      +--------------___--------------+
* =============================================================================

	.OPENFAT	7

	.ORG	082
	NOP
	NOP



	.NAME	"-56 BITS"
	.AUTOFAT?	.ENTRY	+
	RTN


	.PUSHFAT

	.INCLUDE	56-BITS.SRC

	.POPFAT	INORDER	7,8,9,10,5,6,4,3,1,2


	.NAME	"-MISC UTIL"
	.AUTOFAT?	.ENTRY	+
	RTN

	.INCLUDE	E3divEpls.SRC
	.INCLUDE	RCLop.SRC

	.PUSHFAT

	.INCLUDE	XopNNis.SRC

	.POPFAT	UNTOUCHED


	.NAME	"-HACK UTIL"
	.AUTOFAT?	.ENTRY	+
	RTN

	.INCLUDE	COD.SRC
	.INCLUDE	DCOD.SRC
	.INCLUDE	LB.SRC
	.INCLUDE	LA.SRC
	.INCLUDE	LX.SRC

	.PUSHFAT

	.INCLUDE	RAMEDIT.SRC
	.INCLUDE	XROM.SRC

	.POPFAT	SORTED


	.NAME	"-ALPHA"
	.AUTOFAT?	.ENTRY	+
	RTN

	.INCLUDE	ACLis.SRC
	.INCLUDE	ALENGis.SRC
	.INCLUDE	ANUM_ANUMDEL.SRC
	.INCLUDE	AREV.SRC
	.INCLUDE	AROT.SRC
	.INCLUDE	ASUB.SRC

	.PUSHFAT

	.INCLUDE	ATOXL_R.SRC
	.INCLUDE	ATOXX_YTOAX.SRC
	.INCLUDE	POSA.SRC
	.INCLUDE	XTOAI.SRC
	.INCLUDE	XTOAR.SRC
	.INCLUDE	aVIEW.SRC

	.POPFAT	SORTED


	.NAME	"-BASE"
	.AUTOFAT?	.ENTRY	+
	RTN


	.PUSHFAT

	.INCLUDE	baseIN.SRC
	.INCLUDE	baseVIEW.SRC
	.INCLUDE	LOGIC.SRC
	.INCLUDE	BITis.SRC
	.INCLUDE	ROTXY.SRC

	.POPFAT	SORTED


	.ORG	0FF4


	.ROMID	 MY-0A

	.CLOSEFAT
	.CHECKSUM

	.END

* =============================================================================
*
* Source file generated by ...
*
* ... Version 0.20.999 #0 (000143e7)
*        Compiled (cgh@varvotier) Tue Sep 10 23:14:42 CEST 2013
*
* =============================================================================
*      | [ / ]   [ 0 ]   [ . ]   [R/S] |
*      |_______________________________|
*      +_HP-41_NUT_EMULATOR_____NSIMII_+
*                            
Quant a la ROM produite... 8)

Code : Tout sélectionner

> U MYROM MYROM
Create a new ROM page 'MYROM' to 8/0
MODULE 'MYROM' IN PAGE 8/0
FAT XROM  7 FCNS 61 ROM-ID 'MY-0A' CHECKSUM 0DD (0DD) OK [COMPUTED 0DD]
> f 8
MODULE 'MYROM' IN PAGE 8/0
FAT XROM  7 FCNS 61 ROM-ID 'MY-0A' CHECKSUM 0DD (0DD) OK [COMPUTED 0DD]
8000/0  ......F.   007 'MYROM'       	XROM	 7
8001/0  ......F.   03D "MYROM"         	FCNS	61
8002/0  ......F.   000,08C	808C	XROM	 7, 0	-56 BITS
8004/0  ......F.   000,0CC	80CC	XROM	 7, 1	1CMPX
8006/0  ......F.   000,0D5	80D5	XROM	 7, 2	2CMPX
8008/0  ......F.   000,0DE	80DE	XROM	 7, 3	XANDY
800A/0  ......F.   000,0E8	80E8	XROM	 7, 4	XORY
800C/0  ......F.   000,0B8	80B8	XROM	 7, 5	X+Y
800E/0  ......F.   000,0C2	80C2	XROM	 7, 6	Y-X
8010/0  ......F.   000,0B1	80B1	XROM	 7, 7	RXL
8012/0  ......F.   000,0AA	80AA	XROM	 7, 8	RXR
8014/0  ......F.   000,090	8090	XROM	 7, 9	SXL
8016/0  ......F.   000,098	8098	XROM	 7,10	SXR
8018/0  ......F.   000,0F8	80F8	XROM	 7,11	-MISC UTIL
801A/0  ......F.   000,0FE	80FE	XROM	 7,12	E3/E+
801C/0  ......F.   001,015	8115	XROM	 7,13	RCL-
801E/0  ......F.   001,01C	811C	XROM	 7,14	RCL+
8020/0  ......F.   001,023	8123	XROM	 7,15	RCL*
8022/0  ......F.   001,02A	812A	XROM	 7,16	RCL/
8024/0  ......F.   002,085	8285	XROM	 7,17	X=NN?
8026/0  ......F.   002,091	8291	XROM	 7,18	XzNN?
8028/0  ......F.   002,09C	829C	XROM	 7,19	X<=NN?
802A/0  ......F.   002,0AA	82AA	XROM	 7,20	X<NN?
802C/0  ......F.   002,0B5	82B5	XROM	 7,21	X>=NN?
802E/0  ......F.   002,0C5	82C5	XROM	 7,22	X>NN?
8030/0  ......F.   002,0D2	82D2	XROM	 7,23	-HACK UTIL
8032/0  ......F.   002,0D6	82D6	XROM	 7,24	COD
8034/0  ......F.   002,0F0	82F0	XROM	 7,25	DCOD
8036/0  ......F.   003,011	8311	XROM	 7,26	LB           PROMPT: 3
8038/0  ......F.   003,01E	831E	XROM	 7,27	LA           PROMPT: 3
803A/0  ......F.   003,027	8327	XROM	 7,28	LX           PROMPT: 3
803C/0  ......F.   003,06A	836A	XROM	 7,29	RAMEDIT
803E/0  ......F.   004,0B9	84B9	XROM	 7,30	XROM         PROMPT: 2SIY+
8040/0  ......F.   004,0DE	84DE	XROM	 7,31	-ALPHA
8042/0  ......F.   004,0E3	84E3	XROM	 7,32	ACL?
8044/0  ......F.   005,01A	851A	XROM	 7,33	ALENG
8046/0  ......F.   005,047	8547	XROM	 7,34	ANUM
8048/0  ......F.   005,050	8550	XROM	 7,35	ANUMDEL
804A/0  ......F.   005,0CC	85CC	XROM	 7,36	AREV
804C/0  ......F.   006,061	8661	XROM	 7,37	AROT
804E/0  ......F.   006,096	8696	XROM	 7,38	ASUB
8050/0  ......F.   007,08A	878A	XROM	 7,39	ATOXL
8052/0  ......F.   007,0A3	87A3	XROM	 7,40	ATOXR
8054/0  ......F.   007,0EE	87EE	XROM	 7,41	ATOXX
8056/0  ......F.   008,0D1	88D1	XROM	 7,42	aVIEW
8058/0  ......F.   008,036	8836	XROM	 7,43	POSA
805A/0  ......F.   008,08C	888C	XROM	 7,44	XTOAI
805C/0  ......F.   007,0CB	87CB	XROM	 7,45	XTOAL
805E/0  ......F.   008,0C7	88C7	XROM	 7,46	XTOAR
8060/0  ......F.   007,0E7	87E7	XROM	 7,47	YTOAX
8062/0  ......F.   009,01F	891F	XROM	 7,48	-BASE
8064/0  ......F.   00C,000	8C00	XROM	 7,49	ANDXY
8066/0  ......F.   009,05E	895E	XROM	 7,50	BININ
8068/0  ......F.   00B,0B1	8BB1	XROM	 7,51	BINVIEW
806A/0  ......F.   00C,06F	8C6F	XROM	 7,52	BITXY?
806C/0  ......F.   009,04D	894D	XROM	 7,53	HEXIN
806E/0  ......F.   00B,033	8B33	XROM	 7,54	HEXVIEW
8070/0  ......F.   00C,031	8C31	XROM	 7,55	NOTX
8072/0  ......F.   009,056	8956	XROM	 7,56	OCTIN
8074/0  ......F.   00B,07E	8B7E	XROM	 7,57	OCTVIEW
8076/0  ......F.   00C,015	8C15	XROM	 7,58	ORXY
8078/0  ......F.   00C,081	8C81	XROM	 7,59	ROTXY
807A/0  ......F.   00C,01F	8C1F	XROM	 7,60	XORXY
Les quelques tests effectues sous l'emulateurs montrent que la ROM est parfaitement operationnelle :-D :-D :-D
Modifié en dernier par cgh le 13 juin 2016 22:08, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Bon, suite a la restauration du site, je reposte la "base des XROM" utilises pour les differents ROM. Ce n'est pas une base exhaustive, mais elle a le merite d'exister.
C'est la commande O sous nsimII qui la construit, a condition que le module soit declare aupres de nsimII.

Code : Tout sélectionner

> O
MODULE 'MATH'          PAGE 8/0 XROM  1 XFN 46 ROMID 'MA-1C' FILE 'MATH-1C'
MODULE 'MATH-STAT'     PAGE 8/0 XROM  1 XFN 46 ROMID '-M-1D' FILE 'MATH-1D'
MODULE '41Z'           PAGE 8/0 XROM  1 XFN 64 ROMID 'AM-9Z' FILE '41ZL-9Z'
MODULE 'LANDNAV'       PAGE 8/0 XROM  1 XFN 39 ROMID 'LN-1A' FILE 'LANDNAV'
MODULE 'MATH-STAT'     PAGE 9/0 XROM  2 XFN 30 ROMID 'ST-1B' FILE 'STAT-1B'
MODULE 'STAT'          PAGE 8/0 XROM  2 XFN 30 ROMID 'ST-1B' FILE 'STAT-1B'
MODULE 'SANDMATH'      PAGE 9/0 XROM  2 XFN 64 ROMID 'HL-6B' FILE 'SANDMATHU-6B'
MODULE 'DAVIDASM'      PAGE 8/0 XROM  2 XFN  6 ROMID 'DA-2C' FILE 'DAVID-2C'
MODULE 'SURVEY'        PAGE 8/0 XROM  3 XFN 33 ROMID 'SU-1B' FILE 'SURVEY-1B'
MODULE 'SANDMATH'      PAGE 8/0 XROM  3 XFN 64 ROMID 'SM-6A' FILE 'SANDMATHL-6A'
MODULE 'FINANCE'       PAGE 8/0 XROM  4 XFN 35 ROMID 'FD-1B' FILE 'FINANCE-1B'
MODULE 'ES41'          PAGE 8/0 XROM  4 XFN 62 ROMID 'RS-DF' FILE 'ES41L'
MODULE 'ESRSU'         PAGE 8/0 XROM  4 XFN 64 ROMID 'CS-DF' FILE 'RSU2-OSL'
MODULE '41Z'           PAGE 9/0 XROM  4 XFN 64 ROMID 'MA-9Z' FILE '41ZU-9Z'
MODULE 'ICEBOX1H'      PAGE 8/0 XROM  4 XFN 64 ROMID 'IB-1H' FILE 'ICEBOX1H'
MODULE 'STANDARD'      PAGE 8/0 XROM  5 XFN 64 ROMID 'ST-1C' FILE 'STANDARD-1C'
MODULE 'PANAME'        PAGE 8/0 XROM  5 XFN 64 ROMID 'XP-3C' FILE 'PANAMEL-3C'
MODULE 'CCD-OSX'       PAGE 8/0 XROM  5 XFN 26 ROMID 'CC-DD' FILE 'CCD-OSX'
MODULE 'ZENROM'        PAGE 8/0 XROM  5 XFN 13 ROMID 'Z)-La' FILE 'ZENROM-3B'
MODULE 'ROAM'          PAGE 8/0 XROM  5 XFN 48 ROMID '00-05' FILE 'ROAM-0A'
MODULE 'ROAM-0'        PAGE 8/0 XROM  5 XFN 44 ROMID '00-00' FILE 'ROAM-0'
MODULE 'CIRCUIT'       PAGE 8/0 XROM  6 XFN 64 ROMID 'CA-1A' FILE 'CIRCUIT-1A'
MODULE 'ES41'          PAGE 9/0 XROM  6 XFN 56 ROMID 'RS-AF' FILE 'ES41U'
MODULE 'ESRSU'         PAGE 9/0 XROM  6 XFN 57 ROMID 'CS-AF' FILE 'RSU2-OSU'
MODULE 'ALPHABOX'      PAGE 8/0 XROM  6 XFN 64 ROMID 'WN-41' FILE 'ALPHA'
MODULE 'ALPHA2'        PAGE 8/0 XROM  6 XFN 64 ROMID 'WN-41' FILE 'ALPHA2'
MODULE 'MNFRLB'        PAGE 8/0 XROM  6 XFN  1 ROMID '@@-@@' FILE 'MNFRLB'
MODULE 'STRUCTURAL'    PAGE 8/0 XROM  7 XFN 28 ROMID 'CE-1B' FILE 'STRUCTL-1B'
MODULE 'HEPAX'         PAGE 8/0 XROM  7 XFN 55 ROMID 'H1-1D' FILE 'HEPAX1-1D'
MODULE 'HEPAX'         PAGE 8/2 XROM  7 XFN 16 ROMID 'H3-1D' FILE 'HEPAX3-1D'
MODULE 'STRESS'        PAGE 8/0 XROM  8 XFN 33 ROMID 'ME-1A' FILE 'STRESS-1A'
MODULE 'BUFFERLAND'    PAGE 8/0 XROM  8 XFN 64 ROMID 'MA-9Z' FILE 'BUFFERLAND'
MODULE 'SANDBOX'       PAGE 8/0 XROM  8 XFN 64 ROMID 'SB-3D' FILE 'SANDBOXL-3D'
MODULE 'SANDB'         PAGE 8/0 XROM  8 XFN 64 ROMID 'SB-3D' FILE 'SANDB-3D'
MODULE 'HOMEMGT'       PAGE 8/0 XROM  9 XFN 24 ROMID 'HM-1A' FILE 'HOMEMGT-1A'
MODULE 'CCD'           PAGE 8/0 XROM  9 XFN 64 ROMID 'WW-1B' FILE 'CCDL-1B'
MODULE 'PANAME'        PAGE 9/0 XROM  9 XFN 64 ROMID 'MT-2A' FILE 'PANAMEU-2A'
MODULE 'CCD-MODIFIED'  PAGE 8/0 XROM  9 XFN 64 ROMID 'AA-1B' FILE 'TURBOL'
MODULE 'FORTH'         PAGE 5/0 XROM  9 XFN 64 ROMID 'SV-06' FILE 'FORTH5'
MODULE 'GAMES'         PAGE 8/0 XROM 10 XFN 15 ROMID 'GA-1A' FILE 'GAMES-1A'
MODULE 'PPCROM'        PAGE 8/0 XROM 10 XFN 64 ROMID 'C -81' FILE 'PPCL'
MODULE 'ESMLDLOS'      PAGE 8/0 XROM 10 XFN 28 ROMID 'OS-7B' FILE 'ESMLDLOS-7B'
MODULE 'REAL-ESTATE'   PAGE 8/0 XROM 11 XFN 47 ROMID '~E-1A' FILE 'REALESTATEL-1A'
MODULE 'REAL-ESTATE'   PAGE 9/0 XROM 11 XFN  0 ROMID '~E-1A' FILE 'REALESTATEU-1A'
MODULE 'CCD'           PAGE 9/0 XROM 11 XFN 42 ROMID 'WW-2B' FILE 'CCDU-2B'
MODULE 'CCD-MODIFIED'  PAGE 9/0 XROM 11 XFN 42 ROMID 'WW-2B' FILE 'TURBOU'
MODULE 'MACHINE'       PAGE 8/0 XROM 12 XFN 25 ROMID 'MD-1A' FILE 'MACHINE-1A'
MODULE 'PPC-MELB'      PAGE 8/0 XROM 12 XFN 38 ROMID 'PR-2C' FILE 'PPC-MELB'
MODULE 'MELBOURNE'     PAGE 8/0 XROM 12 XFN 42 ROMID 'PP-C1' FILE 'MELBOURNE'
MODULE 'THERMAL'       PAGE 8/0 XROM 13 XFN 30 ROMID 'TT-1A' FILE 'THERMAL-1A'
MODULE 'SANDBOX'       PAGE 9/0 XROM 13 XFN 64 ROMID 'SB-4U' FILE 'SANDBOXU-3D'
MODULE 'TOOLBOX'       PAGE 8/0 XROM 13 XFN 53 ROMID 'SB-4U' FILE 'TOOLBOX'
MODULE 'TOOLBOX2'      PAGE 8/0 XROM 13 XFN 58 ROMID 'TB-X2' FILE 'TOOLBOX2'
MODULE 'NAVIGATION'    PAGE 8/0 XROM 14 XFN 62 ROMID 'NA-1B' FILE 'NAVL-1B'
MODULE 'NAVIGATION'    PAGE 9/0 XROM 14 XFN  0 ROMID '@@-@@' FILE 'NAVU-1B'
MODULE 'PETROLEUM'     PAGE 8/0 XROM 15 XFN 46 ROMID 'PE-1A' FILE 'PETROLEUML-1A'
MODULE 'PETROLEUM'     PAGE 9/0 XROM 16 XFN 46 ROMID 'PE-2A' FILE 'PETROLEUMU-2A'
MODULE 'NOVCHAP'       PAGE 8/0 XROM 16 XFN 64 ROMID 'NV-CP' FILE 'NOVCHAP'
MODULE 'PLOTTER'       PAGE 8/0 XROM 17 XFN 40 ROMID 'PL-1A' FILE 'PLOTTERL-1A'
MODULE 'NFCROM'        PAGE 8/0 XROM 17 XFN 42 ROMID 'NC-1B' FILE 'NFCROM-1B'
MODULE 'PLOTTER'       PAGE 9/0 XROM 18 XFN 21 ROMID 'PL-2A' FILE 'PLOTTERU-2A'
MODULE 'AECROM'        PAGE 8/0 XROM 18 XFN 28 ROMID 'A;-;C' FILE 'AECROML'
MODULE 'AECROM'        PAGE 9/0 XROM 18 XFN  0 ROMID 'AE-1A' FILE 'AECROMU'
MODULE 'AVIATION'      PAGE 8/0 XROM 19 XFN 22 ROMID 'AV-1A' FILE 'AVIATION-1A'
MODULE 'CLINICAL'      PAGE 8/0 XROM 19 XFN 47 ROMID 'CL-1A' FILE 'CLINICAL-1A'
MODULE 'SECURITIES'    PAGE 8/0 XROM 19 XFN 21 ROMID 'SE-1A' FILE 'SECURITIES-1A'
MODULE 'STRUCTURAL'    PAGE 9/0 XROM 19 XFN  8 ROMID 'CB-1A' FILE 'STRUCTU-1A'
MODULE 'ADV-APP'       PAGE 8/0 XROM 19 XFN 35 ROMID 'AA-1A' FILE 'ADV-APP'
MODULE 'ICODE'         PAGE 8/0 XROM 19 XFN 64 ROMID 'PC-04' FILE 'ICODE'
MODULE 'PPCROM'        PAGE 9/0 XROM 20 XFN 59 ROMID '00-00' FILE 'PPCU'
MODULE 'ASSEMBLER3'    PAGE 8/0 XROM 21 XFN 50 ROMID 'MT-3A' FILE 'ASSEMBLER3'
MODULE 'ASSEMBLER4'    PAGE 8/0 XROM 21 XFN 48 ROMID 'AS-4D' FILE 'ASSEMBLER4'
MODULE 'MLROM'         PAGE 8/0 XROM 21 XFN 64 ROMID 'ML-9B' FILE 'MLROM'
MODULE 'ADVANTAGE.MOD' PAGE 8/0 XROM 22 XFN 64 ROMID 'AD-V1' FILE 'AdvL1-1B'
MODULE 'NEW-DEVIL.MOD' PAGE 8/0 XROM 22 XFN 64 ROMID 'PD--2' FILE '-HP-IL DEV+'
MODULE 'IL_BUFFER.MOD' PAGE 8/0 XROM 22 XFN 64 ROMID 'PD--2' FILE '-IL BUFFER'
MODULE 'HPILDEV'       PAGE 8/0 XROM 22 XFN 62 ROMID 'PD-1B' FILE 'HPILDEVL-1B'
MODULE 'ADVANTAGE'     PAGE 8/0 XROM 22 XFN 64 ROMID 'AD-V1' FILE 'ADVL1-1B'
MODULE 'NEW-ILDEV'     PAGE 8/0 XROM 22 XFN 64 ROMID 'PD-2C' FILE 'HPILDEVL-2P'
MODULE 'ILBUFFER'      PAGE 8/0 XROM 22 XFN 64 ROMID 'PD-2C' FILE 'ILBUFFER'
MODULE 'EXT-IO'        PAGE 8/0 XROM 23 XFN 63 ROMID 'IO-1A' FILE 'EXTIO-1A'
MODULE 'ADVANTAGE.MOD' PAGE 9/0 XROM 24 XFN 57 ROMID 'AD-V2' FILE 'AdvU1-1B'
MODULE 'DIGITPAC.MOD'  PAGE 8/0 XROM 24 XFN 60 ROMID 'BF--2' FILE '-DIGITS'
MODULE 'NEW-DEVIL.MOD' PAGE 9/0 XROM 24 XFN 60 ROMID 'BF--2' FILE '-DIGITS'
MODULE 'HPILDEV'       PAGE 9/0 XROM 24 XFN 21 ROMID 'BF-1A' FILE 'HPILDEVU-1A'
MODULE 'ADVANTAGE'     PAGE 9/0 XROM 24 XFN 57 ROMID 'AD-V2' FILE 'ADVU1-1B'
MODULE 'NEW-ILDEV'     PAGE 9/0 XROM 24 XFN 60 ROMID 'BF-2B' FILE 'HPILDEVU-2P'
MODULE 'MLDLOS'        PAGE 8/0 XROM 24 XFN 37 ROMID 'OS-1A' FILE 'MLDLOS1A'
MODULE 'NUT-CX.MOD'    PAGE 3/0 XROM 25 XFN 63 ROMID 'EF-2D' FILE 'XFUNS3-2D'
MODULE 'XFUNCS'        PAGE 8/0 XROM 25 XFN 48 ROMID 'AP-1C' FILE 'XFUNS-1C'
MODULE 'CXFUNCS'       PAGE 3/0 XROM 25 XFN 63 ROMID 'EF-2D' FILE 'XFUNS3-2D'
MODULE 'NUT-CX.MOD'    PAGE 5/0 XROM 26 XFN 36 ROMID 'TM-2C' FILE 'TIME-2C'
MODULE 'TIME'          PAGE 5/0 XROM 26 XFN 30 ROMID 'TM-1C' FILE 'TIME-1C'
MODULE 'CXTIME'        PAGE 5/0 XROM 26 XFN 36 ROMID 'TM-2C' FILE 'TIME-2C'
MODULE 'WAND'          PAGE 8/0 XROM 27 XFN  7 ROMID 'WD-1F' FILE 'WAND-1F'
MODULE 'WAND1E'        PAGE 8/0 XROM 27 XFN  7 ROMID 'WD-1E' FILE 'WAND-1E'
MODULE 'EXTEND-IL'     PAGE 8/0 XROM 27 XFN 28 ROMID 'cn-<y' FILE 'EXT-IL'
MODULE 'EXTEND-ILPLS'  PAGE 8/0 XROM 27 XFN 42 ROMID 'CK-1B' FILE 'EXTILPLS'
MODULE 'ILMODULE'      PAGE 7/0 XROM 28 XFN 42 ROMID 'CS-1H' FILE 'ILMODULE-1H'
MODULE 'ILMODULE7'     PAGE 7/0 XROM 28 XFN 42 ROMID 'CS-1H' FILE 'ILMODULE-1H'
MODULE 'PRINTER'       PAGE 6/0 XROM 29 XFN 25 ROMID 'PR-1E' FILE 'PRINTER-1E'
MODULE 'ILPRINTER'     PAGE 6/0 XROM 29 XFN 27 ROMID 'PL-2E' FILE 'ILPRINTER-2E'
MODULE 'IRPRINTER'     PAGE 6/0 XROM 29 XFN 39 ROMID 'PR-1B' FILE 'IRPRINTER1-1B'
MODULE 'CARDREADER'    PAGE E/0 XROM 30 XFN 37 ROMID 'CR-1E' FILE 'CRDRDR-1E'
MODULE 'EXTEND-IL2'    PAGE 8/0 XROM 30 XFN 28 ROMID 'Kn-<9' FILE 'EXTIL2'
MODULE 'WWRAMBOXII.MOD' PAGE 8/0 XROM 31 XFN 34 ROMID 'WW-3M' FILE 'WWRambox1'
MODULE 'WWRAMBOX'      PAGE 8/0 XROM 31 XFN 34 ROMID 'WW-3M' FILE 'WWRAMBOX1'
MODULE 'WWRAMBOX2'     PAGE 8/0 XROM 31 XFN 38 ROMID 'WW-4C' FILE 'WWRAMBOX2'
MODULE 'WWRAMBOX64'    PAGE 8/0 XROM 31 XFN 37 ROMID 'WW-4D' FILE 'WWRAMBOX64A'
MODULE 'WWRAMBOX64'    PAGE 8/1 XROM 31 XFN 37 ROMID 'WW-5D' FILE 'WWRAMBOX64B'
Si 2 modules ont les memes numeros de XROM, celui qui est dans le port de numero le plus bas aura priorite sur l'autre. Le main-frame recherche les XROM en commencant la page 5 (3 pour la CX) et jusqu'a la page 15. Il y a 11 pages de disponibles pour les C/CV et 12 pour la CX.
Modifié en dernier par cgh le 13 juin 2016 21:58, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Ca avance tout doucement... mais surement :D J'ai decoupe quelques ROM et le builder a maintenant atteint une bonne maturite. De meme que l'assembleur qui a quelque peu evolue.
Il y a maintenant 179 instructions disponibles, mais certaines que par groupe, car soit elles n'ont pas d'interet seule, soit elles sont imbriquees ensemble pour etre decoupees et extraites seules.
Je teste un minimum et seules RAMED (zenrom) et RAMEDIT (sandbox) fonctionnent de facon plus ou moins bonne. En fait, cela semble liee a l'emplacement du code de l'instruction... Il y a quelque chose qui m'echappe, mais bon...

Toutes les instructions dispos ce soir:

Code : Tout sélectionner

1-D    2-D     3-D    4-D
SXL    SXR    RXR    RXL
X+Y    Y-X
1CMPX    2CMPX
XANDY    XORY
ALENG
ANUM    ANUMDEL
AREV
AROT
ASUB
ATOXL    ATOXR    XTOAL
YTOAX    ATOXX
BCD>BIN
BIN>BCD
BITXY?
BUFCAT
BUFHEAD
BUFLIST
BUFLNG    BUFAD
RCLBUF    STOBUF
BUF?
B>D
CF33     SF33
CFX      SFX
CLBUF
CODE
CRBUF
CTRST
DECODE
VIEWA
INCX     DECX
DECY    INCY
DELBUF
D>B
E3/E+
GETPC
HEXKB
-----------------Les instructions BUFFER I/O de l'HPILDEV -------------------
OUTBIN
OUTBINY
INBIN
PT=
X=BUF?
X-BUF
BUF-XB
A=BUF?
A=BUFX?
A-BUF
BUF-AX
RG-BUFX
RG=BUF?
BUF-RGX
BSIZEX
AIPT
MIPT
BSIZE?
PT?
OUTBUFX
INBUFX
BUF-XA
PRBYTES
---------------------------------------------------------------
------------------- Les instructions IL de l'HPILDEV -----------------
WREG
RREG
RFRM
WFRM
IFCR?
SRQR?
FRAV?
FRNS?
ORAV?
AAU
GET
GTL
IFC
LPD
NRE
REN
SDC
UNL
UNT
CMD
IDY
AAD
NRD
SST
SAI
SDI
TCT
SDA
DDL
DDT
LAD
TAD
-----------------------------------------------------
LA
LB
LX
------------Les instructions logiques de l'ADVANTAGE -----------------------
ANDXY
ORXY
XORXY
NOTX
------------------------------------------------------
NNN
NRCL
NSTO
POSA
PUTPC
RAMED
RAMEDIT
RCLBYTE
RCL-     RCL+     RCL*     RCL/
REG>ROM
REIDBUF
RESZBUF
BUF>RGX    RGX>BUF
ROMCHKX
ROM?
ROM>REG
ROM>X
ROTXY
BUF>ST    ST>BUF
ARCLBUF    ASTOBUF
STOBYTE
INSBYTE
X=Y?Z?
XROM
XTOAI
XTOAR
X>=Y?    X>=0?
X=NN?   XzNN?    X<=NN?    X<NN?    X>=NN?    X>NN?
X<>F
X>ROM
aVIEW
------------------------ Les instructions de conversion de Bases de l'ADVANTAGE ---------------------
HEXIN
OCTIN
BININ
HEXVIEW
OCTVIEW
BINVIEW
-----------------------------------------------------------------------
AIPTBUF    MIPTBUF    GETPTBUF    SETPTBUF
COD
DCOD
J'ai pris la liberte de remonner certaines instructions, cela evite les doublons. Avec l'assembleur, c'est facile 8) Autant en profiter
Modifié en dernier par cgh le 13 juin 2016 22:10, modifié 2 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7148
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par gege »

Mmm ça semble balaise...
Et l'avantage c'est que venant de toi, je n'ai même pas honte de ne rien comprendre 8O
Aurais-tu la possibilité d'expliquer les (très) grands principes ?
C'est une "FAT" à créer avec des adresses calculées après avoir concaténé les divers morceaux de code ?
Tu dis que l'OS est mature, c'est parce que des 'hooks' sont prévus pour des extensions ?
Mmmm
G.E.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3644
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par Hobiecat »

gege a écrit :Mmm ça semble balaise...
Et l'avantage c'est que venant de toi, je n'ai même pas honte de ne rien comprendre 8O
Aurais-tu la possibilité d'expliquer les (très) grands principes ?
C'est une "FAT" à créer avec des adresses calculées après avoir concaténé les divers morceaux de code ?
Tu dis que l'OS est mature, c'est parce que des 'hooks' sont prévus pour des extensions ?
Mmmm
G.E.
Je vais expliquer ce que j'ai compris, je pense avoir à peu près tout suivi : ce que Cgh a réussi à faire, c'est à décomposer les ROM sur les modules en instructions individuelles (chaque instruction correspondant à un programme en assembleur). Il est donc possible maintenant, mais c'est un gros boulot, de lister ce qui se trouve sur chaque module existant pour HP-41, les instructions disponibles, et leur morceau de code assembleur correspondant.

Maintenant, avec les outils mis au point, Cgh peut aussi recombiner un module "sur mesure", en picorant les instructions individuelles nécessaires provenant d'autres modules. Il est donc potentiellement possible, à partir de toutes les instructions disponibles, et leur code assembleur correspondant, de rebâtir un module complètement nouveau, avec toutes les instructions déjà existantes, voire de créer de nouvelles instructions.

Cela veut dire que ce développement ouvre des possibilités quasi-infinies sur les modules de 41 : c'est de mon point de vue une sacrée performance !
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

Hobiecat a écrit :
gege a écrit :Mmm ça semble balaise...
Et l'avantage c'est que venant de toi, je n'ai même pas honte de ne rien comprendre 8O
Aurais-tu la possibilité d'expliquer les (très) grands principes ?
C'est une "FAT" à créer avec des adresses calculées après avoir concaténé les divers morceaux de code ?
Tu dis que l'OS est mature, c'est parce que des 'hooks' sont prévus pour des extensions ?
Mmmm
G.E.
Je vais expliquer ce que j'ai compris, je pense avoir à peu près tout suivi : ce que Cgh a réussi à faire, c'est à décomposer les ROM sur les modules en instructions individuelles (chaque instruction correspondant à un programme en assembleur). Il est donc possible maintenant, mais c'est un gros boulot, de lister ce qui se trouve sur chaque module existant pour HP-41, les instructions disponibles, et leur morceau de code assembleur correspondant.

Maintenant, avec les outils mis au point, Cgh peut aussi recombiner un module "sur mesure", en picorant les instructions individuelles nécessaires provenant d'autres modules. Il est donc potentiellement possible, à partir de toutes les instructions disponibles, et leur code assembleur correspondant, de rebâtir un module complètement nouveau, avec toutes les instructions déjà existantes, voire de créer de nouvelles instructions.

Cela veut dire que ce développement ouvre des possibilités quasi-infinies sur les modules de 41 : c'est de mon point de vue une sacrée performance !
Merci Hobiecat. Oui c'est tout a fait cela. Mon but etant de fournir une base d'instructions (seules ou en groupe) et un logiciel/programme, le ROM builder, capable de "fabriquer" une ROM sur mesure en "prenant" les instructions qui interessent.
D'ailleurs, le post precedent ayant disparu, je recherche quelqu'un pour realiser le portage sous Windows. De meme, si vous voulez me donner un petit coup de pouce pour le "decoupage" des ROMs, n'hesitez a vous manifester.

Pour repondre a gege, et expliquer la structure d'une ROM, le mieux serait d'ouvrir un nouveau fil comme je l'ai fait avec les Pensees du PC-1500. Mais cela sera apres que mon developpement actuel soit termine.

Pour les impatients, une petite synthese:
Une ROM contient de 1 a plusieurs pages de 4Ko. Chaque page de 4Ko, commence par le numero de XROM (1..31), et 0 si la ROM est vide. Apres le XROM, on trouve le nombre d'instructions (0..64) disponibles pour cet XROM. Apres, on trouve un tableau de N pointeurs (N etant le nombre d'instructions) donnant l'offset du code assembleur (ou FOCAL pour des ROMs comme MATH). C'est ce qui se nomme la FAT (Function-Address-Table ???)
Le pointeur donne donc la premiere instruction MCODE. Le nom de la fonction (celle qui apparait dans CAT 2) etant codee a l'envers depuis ce pointeur - 1.
Voici un exemple avec le module XFunctions:

Code : Tout sélectionner

> f 8
MODULE 'XFUNCS' IN PAGE 8/0
FAT XROM 25 FCNS 48 ROM-ID 'AP-1C' CHECKSUM 3DC (3DC) OK [COMPUTED 3DC]
8000/0  ......F.   019 'XFUNCS'      	XROM	25
8001/0  ......F.   030 "XFUNS-1C"      	FCNS	48
8002/0  ......F.   000,06F	806F	XROM	25, 0	-EXT FCN 1C
8004/0  ......F.   001,04A	814A	XROM	25, 1	ALENG
8006/0  ......F.   001,0FC	81FC	XROM	25, 2	ANUM
8008/0  ......F.   00B,024	8B24	XROM	25, 3	APPCHR
800A/0  ......F.   00B,0CC	8BCC	XROM	25, 4	APPREC
800C/0  ......F.   005,082	8582	XROM	25, 5	ARCLREC
800E/0  ......F.   002,06E	826E	XROM	25, 6	AROT
8010/0  ......F.   001,064	8164	XROM	25, 7	ATOX
8012/0  ......F.   00A,0F2	8AF2	XROM	25, 8	CLFL
8014/0  ......F.   000,075	8075	XROM	25, 9	CLKEYS
8016/0  ......F.   00A,083	8A83	XROM	25,10	CRFLAS
8018/0  ......F.   00A,07B	8A7B	XROM	25,11	CRFLD
801A/0  ......F.   00D,066	8D66	XROM	25,12	DELCHR
801C/0  ......F.   00D,06E	8D6E	XROM	25,13	DELREC
801E/0  ......F.   00C,017	8C17	XROM	25,14	EMDIR
8020/0  ......F.   001,07D	817D	XROM	25,15	FLSIZE
8022/0  ......F.   006,0E1	86E1	XROM	25,16	GETAS
8024/0  ......F.   003,02A	832A	XROM	25,17	GETKEY
8026/0  ......F.   008,0FE	88FE	XROM	25,18	GETP
8028/0  ......F.   00E,07B	8E7B	XROM	25,19	GETR
802A/0  ......F.   005,079	8579	XROM	25,20	GETREC
802C/0  ......F.   00E,04C	8E4C	XROM	25,21	GETRX
802E/0  ......F.   008,0F8	88F8	XROM	25,22	GETSUB
8030/0  ......F.   008,00B	880B	XROM	25,23	GETX
8032/0  ......F.   00B,05F	8B5F	XROM	25,24	INSCHR
8034/0  ......F.   00B,06A	8B6A	XROM	25,25	INSREC
8036/0  ......F.   001,000	8100	XROM	25,26	PASN
8038/0  ......F.   003,0BD	83BD	XROM	25,27	PCLPS
803A/0  ......F.   002,0A1	82A1	XROM	25,28	POSA
803C/0  ......F.   007,06D	876D	XROM	25,29	POSFL
803E/0  ......F.   000,0AB	80AB	XROM	25,30	PSIZE
8040/0  ......F.   00D,0F6	8DF6	XROM	25,31	PURFL
8042/0  ......F.   003,066	8366	XROM	25,32	RCLFLAG
8044/0  ......F.   00F,0B3	8FB3	XROM	25,33	RCLPT
8046/0  ......F.   00F,0BB	8FBB	XROM	25,34	RCLPTA
8048/0  ......F.   00E,0D4	8ED4	XROM	25,35	REGMOVE
804A/0  ......F.   00E,0CB	8ECB	XROM	25,36	REGSWAP
804C/0  ......F.   006,052	8652	XROM	25,37	SAVEAS
804E/0  ......F.   008,062	8862	XROM	25,38	SAVEP
8050/0  ......F.   00E,082	8E82	XROM	25,39	SAVER
8052/0  ......F.   00E,045	8E45	XROM	25,40	SAVERX
8054/0  ......F.   008,005	8805	XROM	25,41	SAVEX
8056/0  ......F.   00F,041	8F41	XROM	25,42	SEEKPT
8058/0  ......F.   00F,04A	8F4A	XROM	25,43	SEEKPTA
805A/0  ......F.   001,088	8188	XROM	25,44	SIZE?
805C/0  ......F.   003,074	8374	XROM	25,45	STOFLAG
805E/0  ......F.   003,0D9	83D9	XROM	25,46	X<>F
8060/0  ......F.   00C,004	8C04	XROM	25,47	XTOA
Prenons l'instruction X<>F. La FAT nous indique que X<>F (XROM 25,46) commence en 83D9 (en fait en x3D9 car ces ROMs sont relogeables. Le 8xxx indique que le module est insere dans le port 1) et desassemblons a cette addresse:

Code : Tout sélectionner

				.NAME	"X<>F"
83D5/0  B.G.....   086		#086	; "F"
83D6/0  ..G.....   03E		#03E	; ">"
83D7/0  ..G.....   03C		#03C	; "<"
83D8/0  .TG.....   018		#018	; "X"

		[X<>F]       	; XROM	25,46	'XFUNCS'
83D9/0  ..G..E..   379,03C,197	NCXQREL	8197
83DC/0  ........   379,03C,3EE	NCXQREL	83EE
83DF/0  ........   3B8		C=REGN	14	; 'd'
83E0/0  ........   37C		RCR	12
83E1/0  ........   0AA		A<>C	WPT
En 83D9... se trouvent les instructions MCODE de X<>F. De 83D5 a 83D8 (soit pointeur - 1), se trouve le nom de l'instruction a l'envers et code directement pour le LCD, soit F><X, qui remis a l'endroit donnera X<>F !

Il y a aussi des vecteurs (hooks) qui permettent au Main-Frame de realiser des taches en fonction d'evenements. Le CPU NUT n'a pas d'interruption, le Main-Frame "polle" donc en permanence ces differents vecteurs ou "s'endormira" au bout d'un certain temps. La table des vecteurs est situee de xFF4 a xFFA, comme suit (ce sont ceux du CCD, car le XFunctions n'a pas de vecteurs particuliers specifies) :

Code : Tout sélectionner

BFF4/0  ........   000		NOP		; Pause Loop
BFF5/0  ........   000		NOP		; Main Running Loop
BFF6/0  ........   000		NOP		; Deep Sleep Wake Up With No Key Down
BFF7/0  ........   000		NOP		; Power Off
BFF8/0  ........   3C3		JNC	BFF0	; I/O Service
BFF9/0  ........   2D3		JNC	BFD3	; Deep Sleep Wake Up
BFFA/0  ........   000		NOP		; Cold Start
Enfin, pour finir, on trouve un identifiant de la ROM, sur 4 caracteres et a l'envers:

Code : Tout sélectionner

8FFB/0  ........   003		ROMID	'AP-1C'
8FFC/0  ........   031
8FFD/0  ........   010
8FFE/0  ........   001
Le AP-1C sera affiche par des instructions comme ROMCHKX. C'est ce marqueur qui est demande avec l'option -R rr-rr.

Enfin, le dernier mot de la page (xFFF) contient la checksum. Il s'agit d'une somme de controle permettant de verifier que le contenu de la page n'est pas corrompu (ROMCHKX)

Code : Tout sélectionner

8FFF/0  ........   3DC		CKSM	#3DC	; OK
Modifié en dernier par cgh le 13 juin 2016 22:09, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2143
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par cgh »

cgh a écrit :Il y a aussi des vecteurs (hooks) qui permettent au Main-Frame de realiser des taches en fonction d'evenements. Le CPU NUT n'a pas d'interruption, le Main-Frame "polle" donc en permanence ces differents vecteurs ou "s'endormira" au bout d'un certain temps. La table des vecteurs est situee de xFF4 a xFFA, comme suit (ce sont ceux du CCD, car le XFunctions n'a pas de vecteurs particuliers specifies) :

Code : Tout sélectionner

BFF4/0  ........   000		NOP		; Pause Loop
BFF5/0  ........   000		NOP		; Main Running Loop
BFF6/0  ........   000		NOP		; Deep Sleep Wake Up With No Key Down
BFF7/0  ........   000		NOP		; Power Off
BFF8/0  ........   3C3		JNC	BFF0	; I/O Service
BFF9/0  ........   2D3		JNC	BFD3	; Deep Sleep Wake Up
BFFA/0  ........   000		NOP		; Cold Start
D'ailleurs ces vecteurs me posent un probleme. Ils peuvent etre necessaires au fonctionnement d'une ROM, et je ne sais pas comment les specifier avec le ROM builder. J'ai ajoute l'option -i file.SRC[,file.SRC[]] pour inclure du code "directement", mais il faut que je fasse evoluer l'assembleur pour pouvoir "attacher" ces vecteurs.
Cela vient du fait, que pour me changer du "decoupage" d'instruction, je suis en train de regarder comment extraire l'OS du CCD (un must ce CCD 8O ) sans aucune instruction. Et ben c'est la galere !!! Ca saute dans tous les coins et j'avoue que ma meconnaissance des routines internes du Main-Frame me joue des tours.
Modifié en dernier par cgh le 13 juin 2016 22:11, modifié 1 fois.
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
babaorhum
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 454
Enregistré le : 13 janv. 2013 19:44
Localisation : Marseille-est

Re: Les modules de la HP-41C comme vous ne les avez jamais v

Message par babaorhum »

Le HP-41 puzzle !!
Et une question sûrement très bête ... ca marche qu'avec un émulateur ou une fois un code pleins de fonctions hétéroclites généré, on peut créer un vrai module qu'on peut mettre dans une vrai machine ?
BaBaoRhum
HP J728,200LX,1000CX,75C,71B,48GX,42s,41CX,32E,32Sii,28S,22s,21,16C,11C
Sharp PC- E500,1600,1500,1350,1261,1245
Casio FX-502P,602p,850P,3900P,4000P
TI-74,92,95 ; Canon X-07 ; TANDY EC-4026 ; Wp34S
Répondre

Retourner vers « Tous les Pockets »