[DCMOTO] Amélioration de la fonction "Trace"

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

[DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

L'ancienne fonction trace de dcmoto stockait en mémoire les 2000 dernières instructions exécutées et les affichait dans une liste déroulante de l'outil de mise au point. La limitation à 2000 instructions était très frustrante, c'est à peine une dizaine de millisecondes d'exécution.

La nouvelle fonction, à partir de la version 20210324, stocke la trace dans le fichier dcmoto_trace.txt à concurrence de 100 Mo, soit plus d'un millon d'instructions. Elle est activée par l'outil de mise au point, très simplement :
- En cochant la case Trace on ouvre un fichier dcmoto_trace.txt (vide)
- Toutes les instructions exécutées sont listées dans le fichier
- En décochant la case Trace on ferme le fichier et on peut le lire avec n'importe quel visualiseur de fichiers texte.

La trace s'arrête automatiquement à la fermeture de l'outil de mise au point ou si le fichier dépasse 100 Mo.

Chargement de la dernière version de développement de dcmoto (20210324 ou suivante) : http://dcmoto.free.fr/emulateur/index.html

dcmoto_trace.png
dcmoto_trace.png (20.53 Kio) Consulté 8515 fois

Code : Tout sélectionner

dcmoto trace
EFC3 8660       LDA    #$60                D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C8
EFC5 1F8B       TFR    A,DP                D=6000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
EFC7 9619       LDA    <$19                D=6000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
EFC9 8502       BITA   #$02                D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
EFCB 1027008A   LBEQ   $F059               D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F059 B6E7C1     LDA    $E7C1               D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F05C 8501       BITA   #$01                D=3900 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
F05E 2706       BEQ    $F066               D=3900 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
F060 1FA8       TFR    CC,A                D=3900 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
F062 8510       BITA   #$10                D=C000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C0
F064 270E       BEQ    $F074               D=C000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F074 5F         CLRB                       D=C000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F075 965E       LDA    <$5E                D=C000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F077 9167       CMPA   <$67                D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F079 2711       BEQ    $F08C               D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
F08C 359A       PULS   A,DP,X,PC           D=0000 X=4140 Y=0006 U=5FD0 S=60BE DP=60 CC=C4
FFB2 3403       PSHS   A,CC                D=0000 X=4140 Y=0006 U=5FD0 S=60C4 DP=60 CC=C4
FFB4 1A50       ORCC   #$50                D=0000 X=4140 Y=0006 U=5FD0 S=60C2 DP=60 CC=C4
FFB6 B6E7C3     LDA    $E7C3               D=0000 X=4140 Y=0006 U=5FD0 S=60C2 DP=60 CC=D4
FFB9 84EF       ANDA   #$EF                D=B500 X=4140 Y=0006 U=5FD0 S=60C2 DP=60 CC=D8
FFBB B7E7C3     STA    $E7C3               D=A500 X=4140 Y=0006 U=5FD0 S=60C2 DP=60 CC=D8
FFBE 3583       PULS   CC,A,PC             D=A500 X=4140 Y=0006 U=5FD0 S=60C2 DP=60 CC=D8
2EB2 5D         TSTB                       D=0000 X=4140 Y=0006 U=5FD0 S=60C6 DP=60 CC=C4
2EB3 26F8       BNE    $2EAD               D=0000 X=4140 Y=0006 U=5FD0 S=60C6 DP=60 CC=C4
2EB5 4D         TSTA                       D=0000 X=4140 Y=0006 U=5FD0 S=60C6 DP=60 CC=C4
2EB6 271B       BEQ    $2ED3               D=0000 X=4140 Y=0006 U=5FD0 S=60C6 DP=60 CC=C4
2ED3 BDE818     JSR    $E818               D=0000 X=4140 Y=0006 U=5FD0 S=60C6 DP=60 CC=C4
E818 7EFF3D     JMP    $FF3D               D=0000 X=4140 Y=0006 U=5FD0 S=60C4 DP=60 CC=C4
FF3D 6E9F6000   JMP    [$6000]             D=0000 X=4140 Y=0006 U=5FD0 S=60C4 DP=60 CC=C4
Dernière modification par Daniel le 24 mars 2021 15:23, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par __sam__ »

Voilà qui ava aider les patients à trouver le "truc bizarre mais qui nous échappe" qui fait planter le programme à un moment.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Patrice
Messages : 1474
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Cette amélioration serait la bienvenue pour l'émulateur DcAlice également avec une présentation des registres équivalente. :wink: 8)
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

@Patrice : peux-tu essayer cette version 20210324 ?
dcalice_20210324.zip
(126.22 Kio) Téléchargé 166 fois
La trace fonctionne comme dans dcmoto. Si c'est bon je mettrai cette nouvelle version sur le site de dcalice.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Patrice
Messages : 1474
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Procédure: Je charge un programme en L.M., j'installe un point d'arrêt, je lance le programme L.M. en mettant son adresse d'exécution dans le compteur PC, je valide et ensuite je lance l'exécution.

Le premier test semble ne pas fonctionner. Le fichier TRACE.TXT ne se créé pas.
J'ai essayé dans les modes statique, pas à pas et saut des sous-programmes; j'obtient le même résultat. :(
J'applique à chaque fois avec mode trace coché et mode trace décoché.
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Je pense qu'il y a un malentendu, car chez moi dès que je clique sur la case Trace le fichier dcalice_trace.txt se crée aussitôt, je le vois apparaître dans le gestionnaire de fichiers. Ensuite, dès que je lance l'exécution dans n'importe quel mode, le fichier grossit, je peux voir sa taille augmenter en rafraîchissant le gestionnaire de fichiers.

Pour pouvoir le lire ensuite avec un éditeur de texte il faut d'abord le fermer par l'un des trois moyens suivants :
- Soit décocher la cas Trace
- Soit fermer l'outil de mise au point
- Soit fermer dcalice

Un autre membre du forum a-t-il essayé ?
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par 6502man »

Au premier test j'ai eu le même problème que patrice !

Mais après avoir fermer et réouvert DCalice et retester l'option trace le fichier c'est crée instantanément.

la première fois j'avais charger un binaire avant d'activer la fonction trace.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Je ne comprends pas le problème, j'ai fait à nouveau des dizaines de tests sans rien trouver d'anormal.
Rappel du mode d'emploi :
La trace est activée par l'outil de mise au point.
- En cochant la case Trace on ouvre un fichier dcalice_trace.txt (vide)
- Toutes les instructions exécutées ensuite sont listées dans le fichier
- En décochant la case Trace on ferme le fichier et on peut le lire avec n'importe quel visualiseur de fichiers texte.

Le fichier est aussi fermé automatiquement à la fermeture de l'outil de mise au point.
La trace est limitée à 100 Mo.
Remarque : Si on cherche à lire le fichier dcalice_trace.txt alors qu'il est encore ouvert dans dcalice il peut paraître incomplet (ou vide).
Pour le lire entièrement il faut au préalable le fermer dans dcalice, en décochant la case Trace ou en quittant l'outil de mise au point.
Tout ceci s'applique aussi au fichier dcmoto_trace.txt dans dcmoto, j'ai recopié exactement les mêmes fonctions dans dcalice.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
6502man
Messages : 12242
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par 6502man »

Oui ca fonctionne mais comme je l'indique à la première utilisation le fichier trace ne c'est pas du tout crée.
Même après avoir fermé DCalice le fichier trace n'était pas présent dans le répertoire.


Je viens de reproduire le même problème avec DCalice:

1) ouvrir DCalice (ne rien faire d'autres)
2) F9
3) charger binaire en $C000 (DIAG.BIN)
4) modifier PC à $C000
5) valider la modification des registres
6) cocher trace
7) continuer l'exécution en mode debug.

Le fichier trace n'est jamais crée, même en fermant la fenêtre debug et DCalice.
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par __sam__ »

J'ai essayé sur DCMoto. Ca marche exactement comme décrit. Strictement aucun soucis ou perplexité en ce qui me concerne. Aucun soucis entre la 1ère et 2nde execution.

Note: j'ai lancé dans un dossier où il y avait déjà un dcmoto.ini

En revanche si je déplace l'executable (et lui seul) dans un nouveau dossier (dcmoto.ini absent donc), le fichier de trace n'est pas créé, et ne semble jamais être créé, même si l'ini apparait (à la sortie du 1er lancement). C'est très surprenant de voir marcher cette fonctionnalité dans mon dossier habituel de fonctionnement, mais nulle part ailleurs.

Tiens c'est bizarre.. j'ai recopié dcmoto_20210312.exe + son dcmoto.ini dans le même répertoire, et là ca fonctionne. Je supprime ces deux fichiers, dcmoto_20210324.exe se retrouve à nouveau seul, et ca continue de fonctionner. Bon.. à présent peu importe le dossier, même vide, aucun soucis. Le fichier est créé comme attendu.

C'est à n'y rien comprendre. Il y a comme un truc aléatoire difficile à isoler. Ce pourrait-il que ce soit windows defender qui se moque de nous ? (fort possible)
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Patrice
Messages : 1474
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Premier test:
Si on charge un programme en L.M. par le processus normal "Charger cassette", puis "CLOADM" et qu' ensuite on lance l'outils par "F9", le déclenchement de la fonction "TRACE" ne créé pas le fichier "DCALICE_TRACE.TXT" à priori. :?

Deuxième test:
Je lance DcAlice seul, puis "F9", puis validation de l'adresse courante dans le compteur PC, puis je coche la fonction "TRACE", puis exécution (avec les 4 possibilités d'exécution et là le fichier "DCALICE_TRACE.TXT" se créé et contient le traçage.
Dernière modification par Patrice le 25 mars 2021 10:45, modifié 1 fois.
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Merci à tous pour les tests. Je continue les investigations. Il y a peut-être, dans certaines conditions, une erreur d'ouverture du fichier. Je vais ajouter des messages d'erreur pour mieux cerner le problème.
Daniel
L'obstacle augmente mon ardeur.
Avatar de l’utilisateur
Patrice
Messages : 1474
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Autre remarque:

Lorsqu' on charge un programme par la procédure classique "Charger cassette", "CLOADM", puis "F9", puis "TRACE" quand on ressort de l'outils de mise au point la vitesse d'exécution de l'émulateur est plus lente et même remarque en lançant l'outils et ensuite "TRACE" sans charger de programme en L.M. ! :o
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Merci à tous pour vos retours, je commence à y voir plus clair.

- Le fichier trace est bien créé dans tous les cas, mais pas dans le répertoire prévu.
Il est créé dans le répertoire par défaut. Pour les anciennes versions de Windows je crois que le répertoire par défaut était le répertoire du fichier exécutable (dcmoto.exe ou dcalice.exe). Apparemment ce n'est plus le cas. D'après les quelques tests que je viens d'effectuer, c'est le répertoire du dernier fichier ouvert. Par exemple le fichier .ini de __sam__, ou le fichier binaire chargé par Patrice, ou n'importe quel répertoire si l'émulateur n'a ouvert aucun fichier. Si vous cherchez dans tous vos répertoires vous allez retrouver des fichiers trace un peu partout.
Cette évolution de Windows a probablement pour objectif d'être plus "user-friendly", mais dans le cas présent c'est une régression. Je me méfie toujours de la soi-disant intelligence artificielle des programmes. Il vaut mieux qu'ils restent bêtes, c'est plus facile à comprendre. Et surtout qu'ils ne changent pas les règles d'une version à l'autre. Je vais être obligé de revoir la création du fichier trace, mais aussi de tous les autres (.ini, .mrx, .key, etc.).

- Le dernier problème soulevé par Patrice est un petit bug que je vais corriger. En fermant l'outil de mise au point le fichier trace est bien fermé et la trace est arrêtée, mais la fonction Trace() est toujours appelée à chaque instruction. Elle ne fait rien mais consomme du temps processeur, ce qui ralentit l'émulateur.

Dès que tout cela sera corrigé je publierai une nouvelle version des deux émulateurs.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Les nouvelles versions des émulateurs sont dcmoto.20210325 et dcalice.20210325.

Version de développement de dcmoto ici :
http://dcmoto.free.fr/emulateur/index.html

Version 20210325 de dcalice ici :
dcalice_20210325.zip
(130.41 Kio) Téléchargé 170 fois
Daniel
L'obstacle augmente mon ardeur.
Répondre