La Place des Développeurs Comment passer d'une rom au basic
Sector28
Membre non connecté
Villageois
Reprise du message précédent
quelque chose ainsi:ORG $8000
DEFB 'A','B' ; expansion ROM header
DEFW START ; start of the init code, 0 if no initcode
DEFW 0; pointer to CALL statement handler, 0 if no such handler
DEFW 0; pointer to expansion device handler, 0 if no such handler
DEFW $8010 ; pointer to the start of a tokenized basicprogram, 0 if no basicprogram
DEFS 6,0 ; room reserved for future extensions
ORG $BF00 ; (par exemple)
START:
...
...
RET
il faut reloger le basic avec
poke &HF676,&H11 : poke &h8010,0 : new
DONALD TRUMP IS FAST APPROACHING
NEMESIS ! RETURN IMMEDIATELY !
Ok, merci pour vos réponses.
Je comprends mieux comment marche la séquence de démarrage.
Le retour au basic : c'est une demande d'un gars sympa qui ne connait pas l'assembleur et m'a demandé une interface.
J'avoue n'avoir qu'une idée vague du résultat final
je n'ose en dire plus, ce n'est pas vraiment mon projet. Ce n'est pas mon rôle de faire des annonces
Il vous en parlera surement le moment venu.
bon ok, ça marche (sans le DEFW $8010)
sector28:
J'imagine que le pointeur en $8010 permet d'exécuter directement un programme basic en sortant du code de la rom.
C'est bien ça ?
Je trouve ça étonnant. Je ne vois pas comment on mets un programme basic en data dans une rom :?!
Je comprends mieux comment marche la séquence de démarrage.
Le retour au basic : c'est une demande d'un gars sympa qui ne connait pas l'assembleur et m'a demandé une interface.
J'avoue n'avoir qu'une idée vague du résultat final
je n'ose en dire plus, ce n'est pas vraiment mon projet. Ce n'est pas mon rôle de faire des annonces
Il vous en parlera surement le moment venu.
bon ok, ça marche (sans le DEFW $8010)
sector28:
J'imagine que le pointeur en $8010 permet d'exécuter directement un programme basic en sortant du code de la rom.
C'est bien ça ?
Je trouve ça étonnant. Je ne vois pas comment on mets un programme basic en data dans une rom :?!
J'ai testé ce que j'ai dit plus haut et ça marche !
Le pointeur par défaut du basic est en fait 8000h.
Pour mettre son programme Basic en ROM, il faut suivre la procédure suivante.
1/ Charger le programme Basic en mémoire en le plaçant au même endroit que l'on veut le mettre en ROM.
Par exemple pour le charger en 8100h :
POKE&HF676,1:POKE&HF677,&H81:POKE&H8100,0:LOAD"PROG.BAS"
Ensuite, le sauvegarder en binaire.
BSAVE"PROG.BIN",&H8100,&H8100+(longueur du programme)
2/ Créer un début de ROM de 100h octets de longueur avec un éditeur Hexa.
Coller à la suite le contenu du fichier binaire mais sans l'entête.
L'entête fait 7 octets. Dans ce cas : "FE 00 81 XX X8 00 81".
3/ Remplir le reste de 00h ou FFh jusqu'a ce que la ROM fasse 8 ou 16Ko puis sauvegarder
Ton programme machine devra se trouver entre le C5 et le C1 du "F5 E5 D5 C5 C1 D1 E1 F1 C9"
Un programme Basic a le Format suivant :
Ligne 1 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
Ligne 2 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
Ligne 3 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
etc
Lorsqu'on sauvegarde un programme Basic, le premier octet du fichier est FFh et les adresses de ligne suivante sont celles par défaut. C'est pour ça qu'il faut sauvegarder le programme en binaire une fois décalé et ajouter le 00h au début.
Voici la ROM de test que j'ai crée :
99.rom.zip
Voici le programme basic utilisé :
http://www.msxvillage.fr/forum/topic.php?id=601&pt=2#m41027
Il doit surement exister un utilitaire qui fait ça automatiquement. Ça serait plus simple. Il y aurait juste à ajouter le programme machine à la suite. Edité par GDX Le 25/06/2013 à 09h53
Le pointeur par défaut du basic est en fait 8000h.
Pour mettre son programme Basic en ROM, il faut suivre la procédure suivante.
1/ Charger le programme Basic en mémoire en le plaçant au même endroit que l'on veut le mettre en ROM.
Par exemple pour le charger en 8100h :
POKE&HF676,1:POKE&HF677,&H81:POKE&H8100,0:LOAD"PROG.BAS"
Ensuite, le sauvegarder en binaire.
BSAVE"PROG.BIN",&H8100,&H8100+(longueur du programme)
2/ Créer un début de ROM de 100h octets de longueur avec un éditeur Hexa.
Code TEXT :
41 42 10 80 00 00 00 00 00 81 00 00 00 00 00 00 F5 E5 D5 C5 C1 D1 E1 F1 C9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Coller à la suite le contenu du fichier binaire mais sans l'entête.
L'entête fait 7 octets. Dans ce cas : "FE 00 81 XX X8 00 81".
3/ Remplir le reste de 00h ou FFh jusqu'a ce que la ROM fasse 8 ou 16Ko puis sauvegarder
Ton programme machine devra se trouver entre le C5 et le C1 du "F5 E5 D5 C5 C1 D1 E1 F1 C9"
Un programme Basic a le Format suivant :
Ligne 1 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
Ligne 2 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
Ligne 3 : 00h + adresse de la ligne suivante + numéro de ligne + programme + 00h
etc
Lorsqu'on sauvegarde un programme Basic, le premier octet du fichier est FFh et les adresses de ligne suivante sont celles par défaut. C'est pour ça qu'il faut sauvegarder le programme en binaire une fois décalé et ajouter le 00h au début.
Voici la ROM de test que j'ai crée :
99.rom.zip
Voici le programme basic utilisé :
http://www.msxvillage.fr/forum/topic.php?id=601&pt=2#m41027
Il doit surement exister un utilitaire qui fait ça automatiquement. Ça serait plus simple. Il y aurait juste à ajouter le programme machine à la suite. Edité par GDX Le 25/06/2013 à 09h53
Fabf
Membre non connecté
Conseiller Municipal
65c02 :
Le retour au basic : c'est une demande d'un gars sympa qui ne connait pas l'assembleur et m'a demandé une interface.
J'avoue n'avoir qu'une idée vague du résultat final
je n'ose en dire plus, ce n'est pas vraiment mon projet. Ce n'est pas mon rôle de faire des annonces
Il vous en parlera surement le moment venu.
J'avoue n'avoir qu'une idée vague du résultat final
je n'ose en dire plus, ce n'est pas vraiment mon projet. Ce n'est pas mon rôle de faire des annonces
Il vous en parlera surement le moment venu.
J'ai rencontré 65c02 sur un forum alors qu'il cherchait un bon ordinateur avec des périphériques modernes afin de programmer dessus.
Je luis ai bien sur proposé le MSX
J'ai de suite pensé à un petit lifting de la BEER (je sais je pense qu'à ça )
Il a de suite relevé le challenge malgré le fait qu'il ne connait pas le MSX.
L'idée pour commencer est donc de faire une page de démarrage pour la BEER avec possibilité de charger le BASIC ou le MSXDOS.
La ROM de cette page d'accueil est en 8000H (ce qui a pu porter confusion avec les ROM basic) ce qui permet d'utiliser une eprom 32ko pour le BIOS et la ROM d'accueil.
d'ou le sélecteur d'eprom sur le PCB BEER
Voila le mystère est levé, merci pour votre aide
Il existe bien un programme pour créer des ROM à partir du BASIC
https://sites.google.com/site/msxpage/pc-tools
pour info : la mise en cartouche d'un programme basic est bien expliquée dans l'article Elektor suivant :
http://www.msxvillage.fr/download/download.php?id=102
http://www.msxvillage.fr/download/download.php?id=102
La méthode que je donne pour mettre un programme Basic en ROM marche aussi sur une ROM qui commence en 4000h à condition de mettre une entête en 4000h pour le programme machine et une autre en 8000h pour le programme Basic.
Quant à EDDY II, il ne lance pas de programme Basic donc c'est normal.
Comme Jipé, je ne vois pas l'intérêt puisque normalement c'est mieux que ça boot automatiquement sur le DOS si présent. En suite, on peut quitter le DOS pour aller sous Basic.
Quant à EDDY II, il ne lance pas de programme Basic donc c'est normal.
Fabf :
L'idée pour commencer est donc de faire une page de démarrage pour la BEER avec possibilité de charger le BASIC ou le MSXDOS.
L'idée pour commencer est donc de faire une page de démarrage pour la BEER avec possibilité de charger le BASIC ou le MSXDOS.
Comme Jipé, je ne vois pas l'intérêt puisque normalement c'est mieux que ça boot automatiquement sur le DOS si présent. En suite, on peut quitter le DOS pour aller sous Basic.
Fabf
Membre non connecté
Conseiller Municipal
Fabf
Membre non connecté
Conseiller Municipal
Non à la fin de ton programme tu reviens au basic car ton DOS n'est pas opérationnel.
Fabf :
Faut il toujours un intérêt à tous ce que l'on fait
Si ce n'est un intérêt, un but c'est bien aussi
TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours)
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,...
Comment ça marche le dos ?
C'est une rom dans un slot ?
C'est une disquette dans le lecteur ?
C'est quoi la séquence de lancement ?
Apparemment (pour ce que j'en ai compris) :
- le bios parcours tous les slots à la recherche des deux octets A,B.
- si il les trouve, il exécute la rom, sinon il passe au slot suivant.
- le basic est toujours (?) sur un slot après le slot 0 et les deux slot roms.
Donc, a priori, si le dos est dans une rom sur un slot, on peut peut être l'activer en remappant l'orde des slots (possible ?) ou en mettant un truc en ram qui dise au basic de passer au dos ou à un autre slot (possible ?) ou en désactivant le slot basic (possible ?)
Je suis super trop dans le flou pour savoir quoi faire à ce stade.
Faut dire que je n'ai jamais allumé un MSX aussi... Edité par 65c02 Le 26/06/2013 à 12h36
C'est une rom dans un slot ?
C'est une disquette dans le lecteur ?
C'est quoi la séquence de lancement ?
Apparemment (pour ce que j'en ai compris) :
- le bios parcours tous les slots à la recherche des deux octets A,B.
- si il les trouve, il exécute la rom, sinon il passe au slot suivant.
- le basic est toujours (?) sur un slot après le slot 0 et les deux slot roms.
Donc, a priori, si le dos est dans une rom sur un slot, on peut peut être l'activer en remappant l'orde des slots (possible ?) ou en mettant un truc en ram qui dise au basic de passer au dos ou à un autre slot (possible ?) ou en désactivant le slot basic (possible ?)
Je suis super trop dans le flou pour savoir quoi faire à ce stade.
Faut dire que je n'ai jamais allumé un MSX aussi... Edité par 65c02 Le 26/06/2013 à 12h36
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie