MSX Village forum

La Place des Développeurs asMSX megaROM ASCII16

BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 19/03/2026 à 19h02
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:

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.
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 11210

Le 19/03/2026 à 19h54
Essaye d'initialiser les pages au début de ta megarom

di
xor a
ld (6000h),a
inc a
ld (7000h),a


:noel
Site web    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 19/03/2026 à 21h05
Effectivement ca aurait pu aider puisque la detection se fait aussi par la detection de ces écritures. Mais ca ne change rien.
Au boot j'ai un message : Init ROM in slot : 1
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 11210

Le 20/03/2026 à 09h33
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


:noel
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 3221

Le 20/03/2026 à 12h59
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


On est toujours ignorant avant de savoir.
Github    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 20/03/2026 à 20h52
Bein voilà c'était bien le slot de la page 2 qui posait problème. Ma cartouche se lance enfin !!! Merci pour cette aide précieuse :)
Site web    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 21/03/2026 à 01h12
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 ?
Site web    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 16/04/2026 à 22h03
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 ?
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 3221

Le 16/04/2026 à 22h58
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.


On est toujours ignorant avant de savoir.
Github    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 16/04/2026 à 23h43
Je n'ai pas trouvé la rom pour le yashica... Si tu sais ou je peux trouver cela.
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 3221

Le 17/04/2026 à 09h22
Cherche "MSX system ROM" et tu trouveras facilement. :)


On est toujours ignorant avant de savoir.
Github    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 11210

Le 17/04/2026 à 09h56
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>


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>


:noel
Site web    
BDCIron Membre non connecté

Vagabond

Rang

Avatar

Inscrit le : 12/07/2022 à 00h57

Messages: 12

Le 17/04/2026 à 22h47
Ok merci je regarde ça dès que j'ai une heure de dispo.
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie