LhTools - Cross-Assembler/Desassembleur pour PC-1500

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

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

LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

Les lhTools sont maintenant disponibles en version 0.4.6.

La documentation est en pdf (lhTools.pdf). Le README restera minimaliste.

Ils sont diffuses sous forme de sources (il suffit de faire make install) pour les *nix/Linux/*BSD (je n'ai pas teste sur Mac OS/X, mais si les outils de developpement sont installes, le make doit marcher), et je fournis maintenant des executables pour Windows32 cross-compiles par les MinGW 8) . Dans le zip pour les Win32, il est necessaire de renommer les lhdump_win32 et lhasm_win32 en lhdump_win32.exe et lhasm_win32.exe; WinXP refusant d'executer les programmes si ils n'ont pas ces extensions (???).

J'ai ajoute de nombreuses nouvelles directives et de nouveaux operateurs, essentiellement pour l'assemblage du kernel MMPS et de ses executables (qui doivent etre entierement relogeables) et j'ai un peu ameliore les macros (merci a phe78 pour les tests et les idees :-D ).
Je gere en plus les symboles locaux, de VRAIES variables (y'avaiungrobugla!) de nouveaux operateurs et un minuscule embryon d'evaluateur (pas encore d'expressions completes, mais ca arrivera un jour).

Voila. N'hesitez a me faire part de vos remarques, suggestions, idees, critiques,... etc. C'est un code qui ne demande qu'a evoluer.

Messieurs, a vos PC !
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
phe78
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 721
Enregistré le : 22 avr. 2011 19:08
Localisation : Les Adrets de l'Esterel (Var)

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par phe78 »

YEAH ! :D
Avatar du membre
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Enregistré le : 29 nov. 2013 16:24
Localisation : Pas très loin de Lyon
Contact :

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par Rom1500 »

Impeccable !!! M'ci :D
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

Je vous propose d'utiliser ce fil pour me donner vos retours (bugs, remarques,...), mais aussi vos idees et vos suggestions d'evolutions futures.
Par contre, j'aurais beaucoup moins de temps a consacrer a ces developpements dans les mois qui viennent. Il faudra etre un peu patient...

N'hesitez pas ! C'est ouvert !
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
phe78
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 721
Enregistré le : 22 avr. 2011 19:08
Localisation : Les Adrets de l'Esterel (Var)

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par phe78 »

Hello Christophe,
nickel les macros, ca va grandement me simplifier la vie :) et bravo pour la doc, la grande classe !

heu, je crois avoir trouve un bug sur l'operateur "~" qui inverse les bytes d'un mot de 16 bits et semble plutot faire un shift de 4 bits a droite dans les macros ? il marche correctement a l'exterieur de la macro (j'ai essaye d'inserer un statement .WORD dans la macro mais il est rejete par lhasm).

je t'avais dit que j'allais utiliser les macros sans attendre .. :wink:

Code : Tout sélectionner

   78	01D8		;-------------------------------------------------	
   79	01D8	%00h	.EQU 0000
   80	01D8		;-------------------------------------------------	
   81	01D8		;	Header definition 
   82	01D8		;	HEAD link label length name 
   83			.MACRO:	HEAD
   83				{
   84	; HEAD: 1		WORD	~__#0
   85	; HEAD: 2		WORD	__#0
   86	; HEAD: 3		WORD	~%00h
   87	; HEAD: 4		WORD	%00h
   88	; HEAD: 5		BYTE	00
   89	; HEAD: 6		__#0	.EQU	.
   90	; HEAD: 7		BYTE	__#2
   91	; HEAD: 8		STRINGIFY __#3
   92				}
   92			.ENDMACRO	; HEAD
   93	01D8		;-------------------------------------------------	
   94		.CODE	01D8
   95			HEAD	%00h LAB 04 TOTO
   95				{
   95	01D8	00 00          	WORD	~__#0 
   95	01DA	00 00          	WORD	%00h 
   95	01DC	00 00          	WORD	~%00h 
   95	01DE	00 00          	WORD	%00h 
   95	01E0	00             	BYTE	00 
   95	01E1	%00h	.EQU 01E1
   95	01E1	04             	BYTE	04 
   95	01E2	54 4F 54 4F    	STRINGIFY	TOTO 
   95				}
   96			HEAD	%00h LAB2 05 TATA2
   96				{
   96	01E6	00 1E          	WORD	~__#0 
   96	01E8	01 E1          	WORD	%00h 
   96	01EA	00 1E          	WORD	~%00h 
   96	01EC	01 E1          	WORD	%00h 
   96	01EE	00             	BYTE	00 
   96	01EF	%00h	.EQU 01EF
   96	01EF	05             	BYTE	05 
   96	01F0	54 41 54 41 32 	STRINGIFY	TATA2 
   96				}
   97		.WORD	01F5
   98	01F5	01 EF          	%00h	
   99	01F7	EF 01          	~%00h	
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

:oops: Copier-coller malheureux... En ligne 940 de lhasm.c, il faut modifier de LINK_MEM_8 par un LINK_MEM_16 comme suit:

Code : Tout sélectionner

   if( 1 == lhAsmGetLHUValue( argv[0], argv[0], &v, LINK_MEM_16, 0, 1 ) )
Je vais attendre un peu que tu "secoues" lhasm pour refaire une mise a jour. Merci.
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
phe78
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 721
Enregistré le : 22 avr. 2011 19:08
Localisation : Les Adrets de l'Esterel (Var)

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par phe78 »

C'est OK, j'ai fait la modif et recompile, ca marche.

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

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

phe78 a écrit :C'est OK, j'ai fait la modif et recompile, ca marche.

Merci :D
Parfait. Bon, je te laisse secouer un peu lhasm durant cette semaine, et je referai un zip le week-end prochain avec ce nous aurons trouve d'ici la.
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 : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

J'ai oublie de mettre dans ma documentation les symboles globaux de la ROM BASIC connus par lhasm et lhdump. Ce n'est donc pas la peine de les definir. En plus, lors d'un desassemblage, ces appels en ROM seront affiches par leur nom au lieu de leur adresse. En attendant la mise a jour du manuel, voici ces symboles avec leur adresse. Par contre, il en manque...

Code : Tout sélectionner

0xE42C	INKEY
0xE451	ISBREAK
0xE24A	GETKEY
0xED95	HEXDEC
0xE771	CLS
0xED5B	PRINTA
0xEDEB	GPRINTA
0x764E	HIGHLCDFLAG
0x764F	LOWLCDFLAG
0x7863	STARTRAM
0x7864	ENDRAM
0x7865	STARTBASIC
0x7867	ENDBASIC
0x7869	MERGEBASIC
0x789B	ERRORNUM
0x78B4	ERRORLINE
0xD925	CONCATCHAR
0xD9B1	CHR
0xD9CF	STR
0xD9D7	VAL
0xD9DD	LEN
0xD9DD	ASC
0xD9F3	RIGHT
0xD9F3	MID
0xD9F3	LEFT
0xEFB6	SUBSTRACT
0xEFBA	ADD
0xF01A	MULTIPLY
0xF084	DIVIDE
0xF161	LN
0xF165	LOG
0xF1CB	EXP
0xF1D4	10N
0xF391	COS
0xF39E	TAN
0xF3A2	SIN
0xF492	ACS
0xF496	ATN
0xF49A	ASN
0xF531	DEG
0xF564	DMS
0xF597	ABS
0xF59D	SGN
0xF5BE	INT
0xF89C	POW
0xD0D2	NUMCMP
0xD0F9	STRCMP
0xD2EA	LINESEARCH
0xD461	VARSEARCH
0xE42C	KEYSCAN1
0xE243	KEYSCAN2
0xE33F	AUTOPOWOFF
0xE8CA	PRGMDISP
0xEDEF	GRAPHDISP
0xED57	ONECHARDISP
0xED3B	NCHARDISP
0xED4D	CURMOVONECHAR
0xED00	CURMOVNCHAR
0x7900	_A
0x7908	_B
0x7910	_C
0x7918	_D
0x7920	_E
0x7928	_F
0x7930	_G
0x7938	_H
0x7940	_I
0x7948	_J
0x7950	_K
0x7958	_L
0x7960	_M
0x7968	_N
0x7970	_O
0x7978	_P
0x7980	_Q
0x7988	_R
0x7990	_S
0x7998	_T
0x79A0	_U
0x79A8	_V
0x79B0	_W
0x79B8	_X
0x79C0	_Y
0x79C8	_Z
0x78C0	A$
0x78D0	B$
0x78E0	C$
0x78F0	D$
0x7650	E$
0x7660	F$
0x7670	G$
0x7680	H$
0x7690	I$
0x76A0	J$
0x76B0	K$
0x76C0	L$
0x76D0	M$
0x76E0	N$
0x76F0	O$
0x7750	P$
0x7760	Q$
0x7770	R$
0x7780	S$
0x7790	T$
0x77A0	U$
0x77B0	V$
0x77C0	W$
0x77D0	X$
0x77E0	Y$
0x77F0	Z$
0x7A00	XREG
0x7A08	YREG
0x7A10	ZREG
0x7A18	UREG
0x7A20	VREG
0x7A28	WREG
0x7A30	SREG
0x7A38	BASICSTACKTOP
0x7AFF	BASICSTACKBOTTOM
0x7800	SYSTEMSTACKEND
0x784F	SYSTEMSTACKBASE
Les symboles _A .. _Z correspondent aux 26 variables fixes numeriques. Je les fait precede d'un souligne _ pour ne pas faire doublon avec les registres CPU.

J'ai meme une liste de symboles sans nom. L'adresse est 0xFFFF (c'est VRAIMENT nul); soit je n'avais pas le nom, soit j'ai ete trop faineant pour les ecrire :oops: ...

Code : Tout sélectionner

&CDE6
&CE38
&CF27
&CFCC
&CFF7
&D00D
&D02B
&D048
&D091
&D0AA
&D0B0
&D2E0
&D3C7
&D3D5
&D407
&D9E7
&DA6C
&DB95
&DBB3
&DBCA
&DE99
&DEC7
&DEFC
&DFA1
&DFB4
&E5B4
&ECAE
&ECFA
&ED7D
&EDF6
&EE22
&EE88
&EE99
&EEB0
&EECE
&F019
&F082
&F0E9
&F707
&F711
&F737
&F73F
&F743
&F75B
&F763
&F7BB
&F957
&FA58
De meme si vous connaissez des symboles/routines interessant a ajouter, dites-le moi.
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
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Enregistré le : 29 nov. 2013 16:24
Localisation : Pas très loin de Lyon
Contact :

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par Rom1500 »

As-tu récupéré le fichier ASMADDR.Txt contenu dans le Zip de ROM1500 ?
J'ai essayé d'y mettre toutes les adresses trouvées dans les articles et manuels.
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

Rom1500 a écrit :As-tu récupéré le fichier ASMADDR.Txt contenu dans le Zip de ROM1500 ?
J'ai essayé d'y mettre toutes les adresses trouvées dans les articles et manuels.
Non. Bien vu. Je vais integre les symboles de ASMADDR.Txt. Effectivement, c'est tres tres riche. Merci :-D
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
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par remy »

Je viens d'essayer la version win32 et elle ne fait pas les INCLUDE.
Je sais que tu ne peux pas tester, j'essayerai de jeter un coup d'oeil.
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
remy
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2218
Enregistré le : 13 mars 2006 15:39
Localisation : Issy
Contact :

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par remy »

Je cherche à faire un truc du genre

Code : Tout sélectionner

POINTERL	.EQU MEMORYAREA
POINTERH	.EQU [+1]MEMORYAREA
mais lhasm n'accepte pas: "Badly formed parameter"
Y a t il un autre moyen de faire ça ?
PockEmul, Emulateur de pocket Sharp, Canon, Casio, HP, TI, NEC, Panasonic, Sanco, Seiko, General, National, ....
sur Windows, Linux, OS X et Android
Available now on the Google Play Store and the Apple Store
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

remy a écrit :Je viens d'essayer la version win32 et elle ne fait pas les INCLUDE.
Je sais que tu ne peux pas tester, j'essayerai de jeter un coup d'oeil.
Normalement, si. J'ai pu tester sous WinXP, et j'ai assemble MMPS, a l'identique sous WinXP avec les lhTools pour Windows.
MMPS utilise plusieurs niveaux d'includes.
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 : 2142
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: LhTools - Cross-Assembler/Desassembleur pour PC-1500

Message par cgh »

remy a écrit :Je cherche à faire un truc du genre

Code : Tout sélectionner

POINTERL	.EQU MEMORYAREA
POINTERH	.EQU [+1]MEMORYAREA
mais lhasm n'accepte pas: "Badly formed parameter"
Y a t il un autre moyen de faire ça ?
Il faut passer par une variable. L'evaluateur n'est pas appele pour l'assignation des symboles.

Code : Tout sélectionner

MEMORYAREA	.EQU &4100

%00m	.EQU MEMORYAREA

POINTERL	.EQU %00m
POINTERH	.EQU [+1]%00m
Tu auras donc:

Code : Tout sélectionner

    1		.CODE	40C5
    3	40C5	MEMORYAREA:	.EQU 4100
    5	40C5	%00m	.EQU 4100
    7	40C5	POINTERL:	.EQU 4100
    8	40C5	POINTERH:	.EQU 4101
    9	40C5	.END
		;; 40C5	t.asm$$._start
		;; 40C5	t.asm$$._end
		;; 0000	t.asm$$._length

		.SYMBOLS:
	4100	MEMORYAREA
	4101	POINTERH
	4100	POINTERL

	4100	%00m
POINTERL	.EQU %00m
POINTERH	.EQU [+1]%00m
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
Répondre

Retourner vers « Tous les Pockets »