Donc... pour faire suite au cahier des charges, et bien que je ne sois absolument pas qualifié pour traiter moi-même ces besoins , je vais jeter un bon pavé dans la mare (trop calme jusqu'à présent)...
1 - Ajouter l'insertion et le traitement automatique de points d'arrêt ("breakpoints") : Il semble bien que le méthode du RST 6 ("user restart") ait fait ses preuves depuis 30 ans sur le CPC... il ne reste plus qu'à l'intégrer à DAMS pour en faire le moniteur ultime (mode trace en isolation + points d'arrêt).
2 - Et tant qu'à faire, pourquoi pas, en supplément, la possibilité de définir facilement des conditions en pseudo-code sur les points d'arrêt ? (code généré automatiquement et inséré dans la routine de traitement du RST !). cette fonction étant cette fois associée au chargement d'un "text" dans l'éditeur. Pour le pseudo-code, il y a, après tout, déjà un interpréteur d'expressions numériques dans DAMS. L'étendre à l'examen des registres serait probablement un beau (bon) boulot. Pour faire plus simple, la possibilité d'ajouter des conditions en code Z80 dans le RST directement depuis l'interface de DAMS serait déjà un plus indéniable !
1 - Ajouter l'insertion et le traitement automatique de points d'arrêt ("breakpoints")
Au fait, je me demande si dams 1.2 n'aurait pas une commande en plus de dams 1.0 qui permet de poser un point d'arrêt: !addr (point d'exclamation suivi de l'adresse) En tout cas c'est pas dans le manuel si j'ai bien lu.
Voyez que la dernière commande est '!', elle pointe sur une routine 'SETBRK' qui pose effectivement un breakpoint. dsl, pas de moyen simple de vérifier là.
Waaaaaaaaaaah c'est un énorme scoop en ce qui me concerne : il y aurait eû une commande breakpoint dans DAMS v1.1 !?
Concernant DAMS v1.0 (la seule version publique à ce jour), je n'ai jamais rien vu de ce genre dans la doc, alors j'ai jusqu'à présent été obligé de bidouiller mes breaks à la main (extrêmement fatiguant à la longue quand on est sur du code externe) ou... de me tourner parfois vers "le" principal concurrent de l'époque ou encore... un émulateur ! (oui,... j'ai honte ! pardon,... j'ai parfois péché lorsque j'étais affaibli, c'est mal !... )
Apparemment on ne peut placer qu'un seul point d'arrêt à la fois. Au pire, il faudra prendre un peu de RAM pour garder la trace de plusieurs breakpoints du moniteur (ce qui n'est plus trop un problème aujourd'hui car la majorité des développeurs ont 128K ou 320K à disposition, voire plus!).
Code :
; ; Install a breakpoint at BC, cancelling a previous one ; SWAP PUSH BC LD HL,BRKCPY ; storage for the original user's code LD DE,(BRKPT) ; DE = requested breakpoint address LD BC,3 PUSH BC LDIR ; Restore the breakpoint location original code POP BC POP HL PUSH HL LD (BRKPT),HL ; store the new BP address LD DE,BRKCPY PUSH BC LDIR ; Save the BP pointed bytes (original user's code) POP BC LD HL,SWAPZ ; HL = address of our debugger breakpoint entry point POP DE LDIR ; patch the user's code with a jump to our breakpoint entry RET
SWAPZ ; A 'jump to dams debuger' sample code used by the BP installer DEFB 195 ; 195 => opcode 'jump' DEFW BRKENT
PSy a écrit :
qbert a écrit :
1 - Ajouter l'insertion et le traitement automatique de points d'arrêt ("breakpoints")
Au fait, je me demande si dams 1.2 n'aurait pas une commande en plus de dams 1.0 qui permet de poser un point d'arrêt: !addr
Dans la doc affichée par github, y'a pas la table des matières. Si vous la générez a partir du makefile elle y est, c'est juste qu'ils l'ont viré pour la visu.
Ci-joint ce que mon asciidoc sous Ubuntu/trusty produit en html (gzipé sinon ca passe pas).
Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.
Est-ce que quelqu'un aurait généré les fichiers sources d1.bin, d2.bin et d3.bin de dams dans un fichier dsk ? Si tel est le cas, je serais interressé.
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 0 invité(s)
Vous ne pouvez pas publier de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas insérer de pièces jointes dans ce forum