MSX Village forum

La Place des Développeurs Comment passer d'une rom au basic

Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 561

Le 24/06/2013 à 22h34

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 !
   
65c02 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 24/06/2013 à 10h28

Messages: 27

Le 25/06/2013 à 07h34
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 :?!
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 25/06/2013 à 08h30
J'ai testé ce que j'ai dit plus haut et ça marche ! :glass
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
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 25/06/2013 à 09h30
Joli GDX!
Bravo et respects!


TurboR GT (1Mo), CANON V20! ( en kit, modif 2+ en cours) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 25/06/2013 à 09h57
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'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 :D

J'ai de suite pensé à un petit lifting de la BEER (je sais je pense qu'à ça :oups )

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 :top



Il existe bien un programme pour créer des ROM à partir du BASIC

https://sites.google.com/site/msxpage/pc-tools
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 25/06/2013 à 12h43
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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10731

Le 25/06/2013 à 15h58
pour info EDDY II lance un petit programme d'affichage avant de rendre la main au basic

la cartouche démarre en 4010

a creuser ;)


:noel
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 26/06/2013 à 00h41
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.



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.


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

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/06/2013 à 07h43
Faut il toujours un intérêt à tous ce que l'on fait :hum
65c02 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 24/06/2013 à 10h28

Messages: 27

Le 26/06/2013 à 07h55
bah, de toute façon, le plus gros est fait.
Il manque juste passer au dos. depuis un programme en rom (question B :) )

Du coup, je prépare le développement d'un jeu
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/06/2013 à 10h37
Non à la fin de ton programme tu reviens au basic car ton DOS n'est pas opérationnel.
65c02 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 24/06/2013 à 10h28

Messages: 27

Le 26/06/2013 à 11h44
oui il manque le dos.
mais ça dépasse mes compétences pour le moment
   
z80 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 17/05/2013 à 22h52

Messages: 987

Le 26/06/2013 à 12h14
Fabf :
Faut il toujours un intérêt à tous ce que l'on fait :hum


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) :top
Pas encore retrouvés: V9990, Grafx9000, SUNRISE IDE 2x CF, SUNRISE MOONSOUND, FM PAC, MUSIC MODULE, NMS8280, SD SNATCHER,... :\'(
   
65c02 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 24/06/2013 à 10h28

Messages: 27

Le 26/06/2013 à 12h35
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
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 26/06/2013 à 13h45
1/ à peu près comme sur un PC
2/ Oui. La ROM du DOS 1.XX est normalement incluse avec les contrôleurs de lecteur de disquette avec le disk Basic.
3/ Oui aussi.
4/ Secteur de Boot
   
65c02 Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 24/06/2013 à 10h28

Messages: 27

Le 26/06/2013 à 15h33
Est il possible de forcer le système à ignorer le lancement d'une disquette dans le lecteur ?
Si j'arrive à lui dire d'ignorer la disquette dos : c'est gagné.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie