La Place des Développeurs asMSX megaROM ASCII16
Bonjour à tous, j'ai quelques questions:
J'essaye de coder un truc avec asMSX. Jusque là je me limitais à une rom de 16Ko et faisais mon header à la main, tout se passait bien. Mais j'ai besoin de plus d'espace et me suis donc décidé à passer en megaROM ASCII16
ASCII16 semble le plus pratique puisque si j'ai bien tout compris, on garde en #4000 une première page et on peut changer celle en #8000 comme on le veux.
Sauf que... Ca ne fonctionne pas...
Voici le début de mon source:
J'obtiens bien un fichier.rom de 256Ko mais rien à faire cela ne boot pas.
D'où la question suivante afin de savoir si j'ai bien tout compris ou non et quelle(s) erreur(s) je fais:
Pour une ROM ASCII16 on est bien d'accord que cela boot en #4000 ? Car à priori ca ne saute simplement jamais à cette adresse où je vois pourtant mon code en ram...
Merci de votre aide.
J'essaye de coder un truc avec asMSX. Jusque là je me limitais à une rom de 16Ko et faisais mon header à la main, tout se passait bien. Mais j'ai besoin de plus d'espace et me suis donc décidé à passer en megaROM ASCII16
ASCII16 semble le plus pratique puisque si j'ai bien tout compris, on garde en #4000 une première page et on peut changer celle en #8000 comme on le veux.
Sauf que... Ca ne fonctionne pas...
Voici le début de mon source:
Code ASM :
.zilog .megaROM ASCII16 .size 256 .start debut ;*************************************** debut: CALL setIM2 CALL screenMode CALL vRamInit
J'obtiens bien un fichier.rom de 256Ko mais rien à faire cela ne boot pas.
D'où la question suivante afin de savoir si j'ai bien tout compris ou non et quelle(s) erreur(s) je fais:
Pour une ROM ASCII16 on est bien d'accord que cela boot en #4000 ? Car à priori ca ne saute simplement jamais à cette adresse où je vois pourtant mon code en ram...
Merci de votre aide.
il faut que le début de ta cartouche incorpore le header prévu par la norme MSX
00 ID 41 42
02 INIT adresse de start
04 STATEMENT gère les sous programmes
06 DEVICE gère les sous programmes d'organe matériel présent dan sla cartouche
08 TEXT adresse de début du texte basic si contient un programme basic
0A reservé
10 debut pour le programme
dans ton cas
41 42 10 40 00 00 00 00 00 00 00 00 00 00 00 00
F3
00 ID 41 42
02 INIT adresse de start
04 STATEMENT gère les sous programmes
06 DEVICE gère les sous programmes d'organe matériel présent dan sla cartouche
08 TEXT adresse de début du texte basic si contient un programme basic
0A reservé
10 debut pour le programme
dans ton cas
41 42 10 40 00 00 00 00 00 00 00 00 00 00 00 00
F3
Il faut aussi que tu sélectionnes le slot de ta cartouche dans la page 2 (adresse 8000-BFFF).
Tu as un exemple de comment faire sur le wiki de RMC : https://www.msx.org/wiki/Develop_a_program_in_cartridge_ROM#Typical_examples_to_make_a_32kB_ROM
Par défaut, ta cartouche n'est sélectionné que dans la page ou se trouve l'entête de ROM (la page 1 dans ton cas). Edité par aoineko Le 20/03/2026 à 13h03
Tu as un exemple de comment faire sur le wiki de RMC : https://www.msx.org/wiki/Develop_a_program_in_cartridge_ROM#Typical_examples_to_make_a_32kB_ROM
Par défaut, ta cartouche n'est sélectionné que dans la page ou se trouve l'entête de ROM (la page 1 dans ton cas). Edité par aoineko Le 20/03/2026 à 13h03
On est toujours ignorant avant de savoir.
Bon j'ai corrigé à priori tous mes petits bugs qui trainaient. Mais reste un problème majeur : je ne parviens pas à changer la souspage en page 2...
J'utilise le switch en faisant un LD A,1:LD (#7000),A mais aucun changement en #8000 c'est remplis de #FF...
J'ai pourtant bien défini :
Page 2
.subpage 1 at #8000
DB "PAGE 2"
Mais pas de trace de ces données en #8000 après le switch
J'ai vérifié le contenu de ma rom et je trouve bien ces données en #4000 dans la rom avec un éditeur hexa, donc c'est au bon endroit.
Une idée ?
J'utilise le switch en faisant un LD A,1:LD (#7000),A mais aucun changement en #8000 c'est remplis de #FF...
J'ai pourtant bien défini :
Page 2
.subpage 1 at #8000
DB "PAGE 2"
Mais pas de trace de ces données en #8000 après le switch
J'ai vérifié le contenu de ma rom et je trouve bien ces données en #4000 dans la rom avec un éditeur hexa, donc c'est au bon endroit.
Une idée ?
Bonsoir.
J'ai un jeu qui fonctionne sur mon Sanyo PHC28S.
Mais... Si je lance ma cartouche (ascii16) sur mon yashica YC64, il semblerait que la connection de la page 2 ne se fasse pas. Du moins, mes datas pour les caractères ne sont pas chargés (et ils sont dans une bank).
Je suppose que c'est dû au fait que le Yashica soit mono slot... Avez-vous une idée ?
J'ai un jeu qui fonctionne sur mon Sanyo PHC28S.
Mais... Si je lance ma cartouche (ascii16) sur mon yashica YC64, il semblerait que la connection de la page 2 ne se fasse pas. Du moins, mes datas pour les caractères ne sont pas chargés (et ils sont dans une bank).
Je suppose que c'est dû au fait que le Yashica soit mono slot... Avez-vous une idée ?
Tu peux tester depuis openMSX en émulant tes 2 MSXs.
Tu pourras afficher l'état des slots pour voir si ton code qui switch la page 2 fonctionne bien.
Tu pourras afficher l'état des slots pour voir si ton code qui switch la page 2 fonctionne bien.
On est toujours ignorant avant de savoir.
j'ai regardé dans les xml d'openMSX c'est la même rom que le CANON V20
Yashica :
<?xml version="1.0" ?>
<!DOCTYPE msxconfig SYSTEM 'msxconfig2.dtd'>
<msxconfig>
<info>
<manufacturer>Yashica</manufacturer>
<code>YC-64</code>
<release_year>1984</release_year>
<description>Basic European MSX1 with 64kB RAM. The only MSX computer ever created by Yashica (Kyocera).</description>
<type>MSX</type>
<region>eu</region>
</info>
<CassettePort/>
<devices>
<PPI id="ppi">
<sound>
<volume>16000</volume>
</sound>
<io base="0xA8" num="4"/>
<keyboard_type>gb</keyboard_type>
<has_keypad>false</has_keypad>
<key_ghosting_sgc_protected>true</key_ghosting_sgc_protected>
<code_kana_locks>false</code_kana_locks>
<graph_locks>false</graph_locks>
</PPI>
<VDP id="VDP">
<version>TMS9929A</version>
<io base="0x98" num="2"/>
</VDP>
<PSG id="PSG">
<type>YM2149</type>
<sound>
<volume>21000</volume>
</sound>
<io base="0xA0" num="4" type="IO"/>
<ignorePortDirections>false</ignorePortDirections>
</PSG>
<PrinterPort id="Printer Port">
<io base="0x90" num="2"/>
</PrinterPort>
<primary slot="0">
<ROM id="MSX BIOS with BASIC ROM">
<rom>
<filename>yc-64_basic-bios1.rom</filename>
<sha1>8963fc041975f31dc2ab1019cfdd4967999de53e</sha1>
</rom>
<mem base="0x0000" size="0x8000"/>
</ROM>
</primary>
<primary external="true" slot="1"/>
<primary slot="3">
<RAM id="Main RAM">
<mem base="0x0000" size="0x10000"/>
</RAM>
</primary>
</devices>
</msxconfig>
<!DOCTYPE msxconfig SYSTEM 'msxconfig2.dtd'>
<msxconfig>
<info>
<manufacturer>Yashica</manufacturer>
<code>YC-64</code>
<release_year>1984</release_year>
<description>Basic European MSX1 with 64kB RAM. The only MSX computer ever created by Yashica (Kyocera).</description>
<type>MSX</type>
<region>eu</region>
</info>
<CassettePort/>
<devices>
<PPI id="ppi">
<sound>
<volume>16000</volume>
</sound>
<io base="0xA8" num="4"/>
<keyboard_type>gb</keyboard_type>
<has_keypad>false</has_keypad>
<key_ghosting_sgc_protected>true</key_ghosting_sgc_protected>
<code_kana_locks>false</code_kana_locks>
<graph_locks>false</graph_locks>
</PPI>
<VDP id="VDP">
<version>TMS9929A</version>
<io base="0x98" num="2"/>
</VDP>
<PSG id="PSG">
<type>YM2149</type>
<sound>
<volume>21000</volume>
</sound>
<io base="0xA0" num="4" type="IO"/>
<ignorePortDirections>false</ignorePortDirections>
</PSG>
<PrinterPort id="Printer Port">
<io base="0x90" num="2"/>
</PrinterPort>
<primary slot="0">
<ROM id="MSX BIOS with BASIC ROM">
<rom>
<filename>yc-64_basic-bios1.rom</filename>
<sha1>8963fc041975f31dc2ab1019cfdd4967999de53e</sha1>
</rom>
<mem base="0x0000" size="0x8000"/>
</ROM>
</primary>
<primary external="true" slot="1"/>
<primary slot="3">
<RAM id="Main RAM">
<mem base="0x0000" size="0x10000"/>
</RAM>
</primary>
</devices>
</msxconfig>
canon v20 :
<?xml version="1.0" ?>
<!DOCTYPE msxconfig SYSTEM 'msxconfig2.dtd'>
<msxconfig>
<info>
<manufacturer>Canon</manufacturer>
<code>V-20 (EU)</code>
<release_year>1984?</release_year>
<description>Canon's MSX1 proposition in Europe, with 64kB RAM.</description>
<type>MSX</type>
<region>eu</region>
</info>
<CassettePort/>
<devices>
<primary slot="0">
<ROM id="MSX BIOS with BASIC ROM">
<mem base="0x0000" size="0x8000"/>
<rom>
<sha1>8963fc041975f31dc2ab1019cfdd4967999de53e</sha1>
<filename>v-20eu_basic-bios1.rom</filename>
</rom>
</ROM>
</primary>
<primary external="true" slot="1"/>
<primary external="true" slot="2"/>
<primary slot="3">
<RAM id="Main RAM">
<mem base="0x0000" size="0x10000"/>
</RAM>
</primary>
<PPI id="ppi">
<io base="0xA8" num="8"/>
<sound>
<volume>16000</volume>
</sound>
<keyboard_type>gb</keyboard_type>
<has_keypad>false</has_keypad>
<key_ghosting_sgc_protected>true</key_ghosting_sgc_protected>
<code_kana_locks>false</code_kana_locks>
<graph_locks>false</graph_locks>
</PPI>
<VDP id="VDP">
<io base="0x98" num="8"/>
<version>TMS9929A</version>
<initialContent encoding="hex">FF00</initialContent>
</VDP>
<PSG id="PSG">
<type>YM2149</type>
<keyboardlayout>JIS</keyboardlayout>
<io base="0xA0" num="4" type="IO"/>
<sound>
<volume>21000</volume>
</sound>
<ignorePortDirections>false</ignorePortDirections>
</PSG>
<PrinterPort id="Printer Port">
<io base="0x90" num="2"/>
</PrinterPort>
</devices>
</msxconfig>
<!DOCTYPE msxconfig SYSTEM 'msxconfig2.dtd'>
<msxconfig>
<info>
<manufacturer>Canon</manufacturer>
<code>V-20 (EU)</code>
<release_year>1984?</release_year>
<description>Canon's MSX1 proposition in Europe, with 64kB RAM.</description>
<type>MSX</type>
<region>eu</region>
</info>
<CassettePort/>
<devices>
<primary slot="0">
<ROM id="MSX BIOS with BASIC ROM">
<mem base="0x0000" size="0x8000"/>
<rom>
<sha1>8963fc041975f31dc2ab1019cfdd4967999de53e</sha1>
<filename>v-20eu_basic-bios1.rom</filename>
</rom>
</ROM>
</primary>
<primary external="true" slot="1"/>
<primary external="true" slot="2"/>
<primary slot="3">
<RAM id="Main RAM">
<mem base="0x0000" size="0x10000"/>
</RAM>
</primary>
<PPI id="ppi">
<io base="0xA8" num="8"/>
<sound>
<volume>16000</volume>
</sound>
<keyboard_type>gb</keyboard_type>
<has_keypad>false</has_keypad>
<key_ghosting_sgc_protected>true</key_ghosting_sgc_protected>
<code_kana_locks>false</code_kana_locks>
<graph_locks>false</graph_locks>
</PPI>
<VDP id="VDP">
<io base="0x98" num="8"/>
<version>TMS9929A</version>
<initialContent encoding="hex">FF00</initialContent>
</VDP>
<PSG id="PSG">
<type>YM2149</type>
<keyboardlayout>JIS</keyboardlayout>
<io base="0xA0" num="4" type="IO"/>
<sound>
<volume>21000</volume>
</sound>
<ignorePortDirections>false</ignorePortDirections>
</PSG>
<PrinterPort id="Printer Port">
<io base="0x90" num="2"/>
</PrinterPort>
</devices>
</msxconfig>
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie



