La Place des Développeurs Cross developpement : Tests rapides + debug
Salut,
Je commence mon apprentissage du MSX pour coder quelques joyeusetés,
j'aimerais savoir quel est le moyen le plus rapide pour tester son code sous émulateur après avoir généré le binaire ? (charger un snapshot, un DSK...etc.)
J'aimerais mettre en place toute une toolchain invoquée par un seul appui de touche depuis mon editeur de texte favori comme je le fais pour les autres plateformes rétro.
J'aimerais aussi, si possible, avoir la possibilité d'importer automatiquement des breakpoints dans l'émulateur à partir par exemple de labels spécifiques dans mon source (ex: brk_monlabel: ...).
J'ai crée tous les outils qui me permettent déjà de faire ça avec les émulateurs C64,Spectrum,Amstrad.
J'aimerais juste savoir quel serait le format de fichier le plus adapté à mes besoins à charger dans l'émulateur ?
Et question subsidiaire : OpenMSX ou BlueMSX ?
Merci
Je commence mon apprentissage du MSX pour coder quelques joyeusetés,
j'aimerais savoir quel est le moyen le plus rapide pour tester son code sous émulateur après avoir généré le binaire ? (charger un snapshot, un DSK...etc.)
J'aimerais mettre en place toute une toolchain invoquée par un seul appui de touche depuis mon editeur de texte favori comme je le fais pour les autres plateformes rétro.
J'aimerais aussi, si possible, avoir la possibilité d'importer automatiquement des breakpoints dans l'émulateur à partir par exemple de labels spécifiques dans mon source (ex: brk_monlabel: ...).
J'ai crée tous les outils qui me permettent déjà de faire ça avec les émulateurs C64,Spectrum,Amstrad.
J'aimerais juste savoir quel serait le format de fichier le plus adapté à mes besoins à charger dans l'émulateur ?
Et question subsidiaire : OpenMSX ou BlueMSX ?
Merci
Rétro coder fou : Z80 : MSX / Amstrad CPC / ZX Spectrum -- 6502 : C64 / VIC20 -- 68000 : Amiga
Mon site dédié à ma passion pour la programmation : http://majikeyric.free.fr
BlueMSX est plus rapide a prendre en main coté MSX mais le coté debug reste flou pour moi malgré la doc
http://www.msxblue.com/manual/debugger_c.htm
OpenMSX fonctionne surtout avec des commandes spécifiques et j'ai pas accroché son loader
quel assembleur va tu utiliser ? sur PC ou sur MSX ?
diskmanager permet de créer des disquettes rapidement a partir des fichiers sur PC
pour le format de fichier tu as le choix .COM executable sous dos .BIN fichier binaire .GRP fichier écran
http://www.msxblue.com/manual/debugger_c.htm
OpenMSX fonctionne surtout avec des commandes spécifiques et j'ai pas accroché son loader
quel assembleur va tu utiliser ? sur PC ou sur MSX ?
diskmanager permet de créer des disquettes rapidement a partir des fichiers sur PC
pour le format de fichier tu as le choix .COM executable sous dos .BIN fichier binaire .GRP fichier écran
Salut Jipé,
J'utilise SJASM+ sur PC,
Pour lancer un fichier .BIN, je crois avoir vu qu'il faut une entête à ajouter au fichier non ? (style: adresse de chargement, adresse d'exécution) ?
J'utilise SJASM+ sur PC,
Pour lancer un fichier .BIN, je crois avoir vu qu'il faut une entête à ajouter au fichier non ? (style: adresse de chargement, adresse d'exécution) ?
Rétro coder fou : Z80 : MSX / Amstrad CPC / ZX Spectrum -- 6502 : C64 / VIC20 -- 68000 : Amiga
Mon site dédié à ma passion pour la programmation : http://majikeyric.free.fr
OpenMSX et BlueMSX on chacun ses avantages et ses inconvénients mais le debugger de BlueMSX est plus simple à utiliser. OpenMSX émule mieux le hardware.
Mettre son fichier dans un DSK pour le tester peut devenir gonglant à la longue. A part ça, peu importe le format. Si c'est un fichier COM, on met un breackpoint à 0100h, si c'est binaire, on met un breackpoint à Start (voir l'entête donnée par Jipé au dessus), Si c'est un ROM, l'adresse de lancement est indiquée dans l'entête derrière le 41 42.
Non, le debugger de blueMSX est assez rudimentaire (mais c'est celui que j'utilise tout de même). Edité par GDX Le 16/10/2015 à 08h56
majikeyric :
j'aimerais savoir quel est le moyen le plus rapide pour tester son code sous émulateur après avoir généré le binaire ? (charger un snapshot, un DSK...etc.)
j'aimerais savoir quel est le moyen le plus rapide pour tester son code sous émulateur après avoir généré le binaire ? (charger un snapshot, un DSK...etc.)
Mettre son fichier dans un DSK pour le tester peut devenir gonglant à la longue. A part ça, peu importe le format. Si c'est un fichier COM, on met un breackpoint à 0100h, si c'est binaire, on met un breackpoint à Start (voir l'entête donnée par Jipé au dessus), Si c'est un ROM, l'adresse de lancement est indiquée dans l'entête derrière le 41 42.
majikeyric :
J'aimerais aussi, si possible, avoir la possibilité d'importer automatiquement des breakpoints dans l'émulateur à partir par exemple de labels spécifiques dans mon source (ex: brk_monlabel: ...).
Non, le debugger de blueMSX est assez rudimentaire (mais c'est celui que j'utilise tout de même). Edité par GDX Le 16/10/2015 à 08h56
majikeyric :
J'aimerais aussi, si possible, avoir la possibilité d'importer automatiquement des breakpoints dans l'émulateur à partir par exemple de labels spécifiques dans mon source (ex: brk_monlabel: ...)
Avec BlueMSX, pas dans les labels, mais par contre, il suffit d'insérer une séquence de 2 instructions (je ne sais plus la première, mais la 2e c'est "ld b,b") pour générer un breakpoint. Donc tu peux aussi créer une macro dans ton assembleur qui va générer un breakpoint.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Il existe un debuggeur "externe" à OpenMSX (http://openmsx.sourceforge.net/temp/openmsx-debugger-win32-bin-snapshot.zip) qui est plutôt bien.
Il suffit de lancer OpenMSX puis de faire "connect" dans le debuggeur et les 2 applis communiquent entre elles comme si le debuggeur était intégré à l'émulateur.
Je suis en train d'essayer de mettre en place la solution suivante pour mes tests:
-modifier un savestate OpenMSX (d'un MSX1 au prompt BASIC) pour y injecter en RAM mon code à tester et modifier le PC pour sauter à l'adresse d'exécution.
-balayer le fichier des symbols ASM à la recherche de labels : brk_.... et génération d'un fichier TCL avec les commandes 'set breakpoint...."
Et donc normalement une fois tout ça fait, il suffira d'appeler l'émulateur avec en paramètre les fichiers savestate et TCL pour tester de suite.
Il suffit de lancer OpenMSX puis de faire "connect" dans le debuggeur et les 2 applis communiquent entre elles comme si le debuggeur était intégré à l'émulateur.
Je suis en train d'essayer de mettre en place la solution suivante pour mes tests:
-modifier un savestate OpenMSX (d'un MSX1 au prompt BASIC) pour y injecter en RAM mon code à tester et modifier le PC pour sauter à l'adresse d'exécution.
-balayer le fichier des symbols ASM à la recherche de labels : brk_.... et génération d'un fichier TCL avec les commandes 'set breakpoint...."
Et donc normalement une fois tout ça fait, il suffira d'appeler l'émulateur avec en paramètre les fichiers savestate et TCL pour tester de suite.
Rétro coder fou : Z80 : MSX / Amstrad CPC / ZX Spectrum -- 6502 : C64 / VIC20 -- 68000 : Amiga
Mon site dédié à ma passion pour la programmation : http://majikeyric.free.fr
Pas mal comme méthode, c'est original.
Si cela fonctionne comme tu le veux, partage ta méthode, ce sera intéressant pour tout le monde.
Moi ce que je fait, c'est que je génère systématiquement une ROM (un format cartouche, donc). Il suffit alors de monter l'image de la cartouche dans BlueMSX (c'est 2 clics de souris ...) pour tester le programme.
Si cela fonctionne comme tu le veux, partage ta méthode, ce sera intéressant pour tout le monde.
Moi ce que je fait, c'est que je génère systématiquement une ROM (un format cartouche, donc). Il suffit alors de monter l'image de la cartouche dans BlueMSX (c'est 2 clics de souris ...) pour tester le programme.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Je n'arrive pas à faire ce que je veux avec les savestates..grrr...
Quel est le format de ta ROM ?
elle ne peut faire que 16k ? et commencer en $8000 ?
Par contre je peux te faire éviter tes 2 clics de souris ;-) Edité par majikeyric Le 16/10/2015 à 19h16
Quel est le format de ta ROM ?
elle ne peut faire que 16k ? et commencer en $8000 ?
Par contre je peux te faire éviter tes 2 clics de souris ;-) Edité par majikeyric Le 16/10/2015 à 19h16
Rétro coder fou : Z80 : MSX / Amstrad CPC / ZX Spectrum -- 6502 : C64 / VIC20 -- 68000 : Amiga
Mon site dédié à ma passion pour la programmation : http://majikeyric.free.fr
les roms peuvent avoir 32k et s'installent entre 4000H et BFFFH
ensuite il y a des megaroms qui ont des pages mappées dans la même zone par bank 8k ou 16k
moi je n'arrive pas a me balader dans les slots du MSX avec BlueMSX donc je préfére utiliser un vrai
il existe des roms 8K 16K 32K 64K
et des megaroms 64K 128k 256k 512k 1024k 2048k
ensuite il y a des megaroms qui ont des pages mappées dans la même zone par bank 8k ou 16k
moi je n'arrive pas a me balader dans les slots du MSX avec BlueMSX donc je préfére utiliser un vrai
il existe des roms 8K 16K 32K 64K
et des megaroms 64K 128k 256k 512k 1024k 2048k
majikeyric :
Quel est le format de ta ROM ?
Une ROM fait minimum 16Ko (la taille d'une plage mémoire d'un Slot). Il existe des ROM plus petite mais ces ROM se refleteront dans leur plage mémoire. Par exemple, une ROM de 8Ko aura son double pour faire 16Ko. (Les reflets sont causés par le hardware. Les programmeurs n'ont pas à s'en préoccuper.)
Les ROM en cartouche ont une entête de 16 octets dont le format est :
"41h, 42h, ADRS1, ADRS2, ADRS3, ADRS4, 0000h, 0000h, 0000h". Les 6 derniers octets sont en fait des octets réservés inutilisés. Les adresses inutilisés doivent être mises à 0000h.
Au démarrage, le MSX cherche les deux premiers octets 41h et 42h dans chacune des plages mémoire (0000h, 4000h, 8000h et C000h) de chaque Slot. Et lance, la routine de la ROM à l'adresse indiquée dans entête lorsqu'il en trouve une.
ADRS4 est une adresse indiquant le début d'un programme Basic en ROM. Pour commencer utilise seulement ADRS1. ADRS2, ADRS3 et ADRS4 sont pour les utilisateurs avancés.
Voici deux exemple de code :
Code pour créer une ROM de 16Ko (.ROM) :
Code ASM :
db 041h,042h dw prgStart dw 0,0,0,0,0,0 org 04000h prgStart: ; Insère ton programme ici. prgEnd: ds 08000h-prgEnd
Code pour créer une ROM de 32Ko (.ROM) :
Code ASM :
Edité par
GDX
Le 17/10/2015 à 01h33
db 041h,042h dw prgStart-020h dw 0,0,0,0,0,0 org 04000h ;-- Routine de sélection de la ROM sur la plage mémoire de 8000h à BFFFh db 0CDh,038h,001h,00Fh,00Fh,0E6h,003h,04Fh db 006h,000h,021h,0C1h,0FCh,009h,07Eh,0E6h db 080h,0B1h,04Fh,023h,023h,023h,023h,07Eh db 0E6h,00Ch,0B1h,026h,080h,0CDh,024h,000h ;-- prgStart: ; Insère ton programme ici. prgEnd: ds 0C000h-prgEnd
Visiteurs
Vagabond
Message : 0
Salut majikeyric,
Tes travaux sont très intéressants, je pense qu'un fois la technique au point il faudrait constituer un kit de développement regroupant les outils et les informations pour démarrer un atelier rapidement sur tout ordi PC.
Comme tu as du le voir, certains d'entre-nous sur le forum cherchent à réaliser des jeux que l'on pourra ensuite placer sur cartouche.
Est-ce que tu utilises un outil de gestion de configuration pour conserver les différentes versions de programme ? Un outil de gestion de conf permet également de travailler en équipe.
Juste en passant, Blue MSX permet, dans son debugger, de charger un fichier de symboles (.SYM) généré par l'assembleur (AsMSX par exemple).
Tes travaux sont très intéressants, je pense qu'un fois la technique au point il faudrait constituer un kit de développement regroupant les outils et les informations pour démarrer un atelier rapidement sur tout ordi PC.
Comme tu as du le voir, certains d'entre-nous sur le forum cherchent à réaliser des jeux que l'on pourra ensuite placer sur cartouche.
Est-ce que tu utilises un outil de gestion de configuration pour conserver les différentes versions de programme ? Un outil de gestion de conf permet également de travailler en équipe.
Juste en passant, Blue MSX permet, dans son debugger, de charger un fichier de symboles (.SYM) généré par l'assembleur (AsMSX par exemple).
Merci pour vos infos sur le format des ROMs,
GDX tu devrais le rajouter à ton excellent document, cela en ferait encore plus le doc ultime de DEV MSX
@Sylvain: non je n'utilise pas de gestionnaire de conf, Github ne permet pas de faire cela ?
Je suis en train de finaliser mon environnement de dev msx qui permettra en appuyant sur UNE seule de touche dans mon editeur de texte favori :
d'assembler
ouvrir BlueMSX
charger la ROM généreé
charger un fichier de symbols
et charger les points d'arrêts
Quand ça sera au point, je partagerai tout ça.
GDX tu devrais le rajouter à ton excellent document, cela en ferait encore plus le doc ultime de DEV MSX
@Sylvain: non je n'utilise pas de gestionnaire de conf, Github ne permet pas de faire cela ?
Je suis en train de finaliser mon environnement de dev msx qui permettra en appuyant sur UNE seule de touche dans mon editeur de texte favori :
d'assembler
ouvrir BlueMSX
charger la ROM généreé
charger un fichier de symbols
et charger les points d'arrêts
Quand ça sera au point, je partagerai tout ça.
Rétro coder fou : Z80 : MSX / Amstrad CPC / ZX Spectrum -- 6502 : C64 / VIC20 -- 68000 : Amiga
Mon site dédié à ma passion pour la programmation : http://majikeyric.free.fr
igal
Membre non connecté
Conseiller Municipal
Sector28
Membre non connecté
Villageois
@GDX
les "org"s sont mal placé!
Code pour créer une ROM de 16Ko (.ROM) :
Code pour créer une ROM de 32Ko (.ROM) :
les "org"s sont mal placé!
Code pour créer une ROM de 16Ko (.ROM) :
Code ASM :
org04000h db041h,042h dwprgStart dw0,0,0,0,0,0 prgStart: ; Insère ton programme ici. prgEnd: ds08000h-prgEnd
Code pour créer une ROM de 32Ko (.ROM) :
Code ASM :
org04000h db041h,042h dwprgStart-020h dw0,0,0,0,0,0 ;-- Routine de sélection de la ROM sur la plage mémoire de 8000h à BFFFh db0CDh,038h,001h,00Fh,00Fh,0E6h,003h,04Fh db006h,000h,021h,0C1h,0FCh,009h,07Eh,0E6h db080h,0B1h,04Fh,023h,023h,023h,023h,07Eh db0E6h,00Ch,0B1h,026h,080h,0CDh,024h,000h ;-- prgStart: ; Insère ton programme ici. prgEnd: ds0C000h-prgEnd
DONALD TRUMP IS FAST APPROACHING
NEMESIS ! RETURN IMMEDIATELY !
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie