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

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 »

Oui, tu parles des Include <file> alors que moi je parle des include "file" qui eux recherchent à partir du répertoire courant.
Pour l'assemblage de gros projet tels qu'un firmware, il est intéressant de pouvoir inclure des modules séparés et donc d'avoir la forme include "fil".
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 :Oui, tu parles des Include <file> alors que moi je parle des include "file" qui eux recherchent à partir du répertoire courant.
Pour l'assemblage de gros projet tels qu'un firmware, il est intéressant de pouvoir inclure des modules séparés et donc d'avoir la forme include "fil".
Certes, mais je crois pas que les includes prennent en compte le chemin du parent dans ce cas la non plus.
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 »

Bon ben j'ai réussi à faire fonctionner le FORTH en mode Firmware.
pas de grosses modif. seleument un

Code : Tout sélectionner

FORTHWORKAREA .EQU 40C5
.INCLUDE:	MAIN.asm
et WORKAREA.asm commence par

Code : Tout sélectionner

%00m	.EQU	FORTHWORKAREA
J'ai aussi modifié les fonctions d'affichage car ce ne sont pas les même registres que nous utilisons avec le grand écran.
Image
Modifié en dernier par remy le 13 févr. 2019 23:16, modifié 1 fois.
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 »

cgh a écrit :
remy a écrit :Oui, tu parles des Include <file> alors que moi je parle des include "file" qui eux recherchent à partir du répertoire courant.
Pour l'assemblage de gros projet tels qu'un firmware, il est intéressant de pouvoir inclure des modules séparés et donc d'avoir la forme include "fil".
Certes, mais je crois pas que les includes prennent en compte le chemin du parent dans ce cas la non plus.
Non, les include sont relatifs au répertoire du fichier faisant l'include.
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 :
cgh a écrit :
remy a écrit :Oui, tu parles des Include <file> alors que moi je parle des include "file" qui eux recherchent à partir du répertoire courant.
Pour l'assemblage de gros projet tels qu'un firmware, il est intéressant de pouvoir inclure des modules séparés et donc d'avoir la forme include "fil".
Certes, mais je crois pas que les includes prennent en compte le chemin du parent dans ce cas la non plus.
Non, les include sont relatifs au répertoire du fichier faisant l'include.
Vu ! C'est plie. Merci remy :)
Modifié en dernier par cgh le 28 févr. 2014 20:41, 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
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 »

remy a écrit :Bon ben j'ai réussi à faire fonctionner le FORTH en mode Firmware.
SUPER ! Content de voir que mon Forth vous tient occupés !
J'ai mis au point l'editeur de ligne ce soir (touches < > CL INS et DEL suportées), je l'integrerai au Forth ce week-end. Je voudrais, comme le suggérait Rémy, en faire un editeur multi-lignes (l'ecran du PC1500 etant une fenetre sur un ecran virtuel qui pourrait être celui du 1560, 32x8 ). Sii vous avez des recommendations pour le code soit le plus proche possible des specs du 1560, dites-le moi..

Le pied, le debugging avec pockemul et lhasm !!!
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 »

Bon et bien, cela fonctionne pas mal du tout :) Par exemple, le petit test ci-dessous

Code : Tout sélectionner

.IF MACHINE?
.ELSE
.PC1500
.ENDIF

.IF MODULE?
.ELSE
.CE161
.ENDIF

.IF MACHINE? PC1560
.PRINT "Woow, C'est un PC1560"
.ELSE
.PRINT "Boooh, un PC1500 tout simple"
.ENDIF

.IF MODULE? CE161
.PRINT "Woow, avec un CE161"
.ELSE
.PRINT "Boooh, avec ou sans module..."
.ENDIF
	.CODE
	.RAM

	NOP

.IF MACHINE? PC1500A
	.ORIGIN: 7C10
	.LM

	.ORIGIN: 7E00
	.ROM
.ENDIF
.IF MACHINE? PC1560
	.ORIGIN: 8000
	.ROM
.ENDIF

.END
plante si on specifie un PC1500A, mais compile dans les autres cas.
Modifié en dernier par cgh le 01 mars 2014 14:00, 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
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 »

Un petit truc qui m'embète.
Si .LOCAL alors qu'on est déjà en LOCAL, il génère une erreur.

Code : Tout sélectionner

***ERROR*** Symbols are already set to local
    			    >>> .LOCAL	 <<<
C'est trop violent à mon avis. Un Warning suffit.

Autre point, j'essaye d'écrire à l'adresse &FFFF et il ne veut pas, il s'arrete à &FFFE:

Code : Tout sélectionner

74		.BYTE	FFFE
75	FFFE	C0             	C0	
76		.BYTE	FFFF
79	FFFF	.END
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 »

Bon, le coup du .LOCAL c'est corrige, mais si j'avais mis une erreur que j'etais sur un loup a l'epoque. A surveiller donc...

Ah le coup de l'adresse en &FFFF, bien vu. Je vais regarder. Merci Remy !
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 »

Un autre point plus impactant est la limite a &ffff.
Il serait bien que lhtools sache gérer automatiquement un mécanisme de bankswitch de ROM.
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 :Un autre point plus impactant est la limite a &ffff.
Il serait bien que lhtools sache gérer automatiquement un mécanisme de bankswitch de ROM.
Hmmmm, Mwwwouais... Je ne suis pas trop pour, car lhasm produit des binaires pour faire des WAV a la base, donc des binaires dans l'espace &0000..&FFFF. Si il y a bank switch, pour moi il y a plusieurs binaires distincts... quitte a les concatener plus tard.
C'est pour cela entre autres que j'exporte les fichiers de symboles et de fragments.
En tout cas, cette problematique reste tres interessante, et je vais quand meme regarde ce que je peux faire...

J'ai sous le coude une autre version des lhTools (que j'ai abandonnee car trop complexe et que je n'en avais pas d'utilite) qui gere les binaires avec des sections comme pour un ELF, et dans ce cas, on peut mettre plusieurs binaires, avec leurs fichiers de fragments et de symboles respectifs. C'etait a l'epoque en vue d'etre utilise dans un emulateur. Mais c'est tombe a l'abandon.
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 »

Les lhTools-0.5.0rc1 sont en tests aupres de la Team. On verra selon leurs retours. Apres ce sera mis a disposition sur le site de repaire.

Ces lhTools corrigent:
  • L'erreur sur .LOCAL (Remy). J'ai laisse le message de warning, car cela peut laisser apparaitre des problemes eventuels. Au cas ou. En debug.
  • L'adresse 0xFFFF est assemblable (Remy), mais si le PC revient a 0 pour l'instant. A faire selon le bank-switch ou une erreur d'overwrite.
  • On peut declarer des machines (option -m ... ou .<machine>) et de modules (option -m ... ou .<module>). Cela fabrique une map de la memoire, et permet donc de verifier la validite de sections. RAM dans la section RAM, etc. Une erreur fatale est levee si les sections sont melangees.
  • Les problemes d'ORIGIN: vus par Philippe semblent resolus, maintenant. En fait c'est un gros foutoir, et il faudrait un jour que je fasse un place claire.
Le manuel pdf est mis a jour.

N'hesitez pas a me reporter les problemes rencontres ou vos idees/suggestions d'evolution.
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 »

J'ai du revenir à la 4.8 car il ne me trouvait plus les symboles en .EXPORT:
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 »

C'est corrige :roll: Une optim vraiment trop violent ce midi... Desole
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 »

Dis moi, je suis en train de regarder Le deassemblage des instructions BASIC et je vois que lhdump fait de sacrés optimisations sur certains appels.
Par exemple un SBR(E2) que tu transforme en RST.
Mais le SBR(E2) ne fait pas qu'un RST , il modifie des registres.
Tu peux m'en dire plus ?

edit: ok , j'ai compris. ce sont simplement des macros et lhasm sait les retranscrire.
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
Répondre

Retourner vers « Tous les Pockets »