La Place des Développeurs Question sur Slot/RAM MAPPER ASCII16
ericb59
Membre non connecté
Conseiller Municipal
Hop hop...
J'ai une question qui me turlupine, et je ne trouve pas la réponse.
Très certainement que cela à déjà été abordé ici, ou ailleurs, mais avant de dire que je "tombe de la lune", sachez que j'ai vraiment cherché et que je ne trouve pas....
Je pose les fait...
Supposons que l'on ai une cartouche Megarom ASCII 16 de 128K.
Elle se compose donc de 8 blocks de 16K, numérotés de 0 à 7
Au tout début de la ROM on fait en sortie d'avoir les block 0 et 1 sur le même slot, ce qui va nous donner le schéma suivant
Block 0 en page 1 et Block 1 en page 2.
C'est ok ? j'ai pas dit de bêtises jusque là ?
Maintenant je veux switcher ce qu'il y a dans la page 2, et y placer le block 2 de ma Megarom.
Je fait donc ceci :
J'ai toujours bon ?
Alors la question qui me turlupine est la suivante. en 0x7000 c'est quoi ? C'est pas de la RAM ? Vu que c'est censé être une adresse qui correspond à au Block 0 de ma Megarom...
y a un truc qui m'échappe !
Comment se fait t-il que je puisse écrire en 0x7000 alors que la RAM commence en 0xC000. ?
Edité par ericb59 Le 20/01/2022 à 17h52
J'ai une question qui me turlupine, et je ne trouve pas la réponse.
Très certainement que cela à déjà été abordé ici, ou ailleurs, mais avant de dire que je "tombe de la lune", sachez que j'ai vraiment cherché et que je ne trouve pas....
Je pose les fait...
Supposons que l'on ai une cartouche Megarom ASCII 16 de 128K.
Elle se compose donc de 8 blocks de 16K, numérotés de 0 à 7
Au tout début de la ROM on fait en sortie d'avoir les block 0 et 1 sur le même slot, ce qui va nous donner le schéma suivant
Block 0 en page 1 et Block 1 en page 2.
C'est ok ? j'ai pas dit de bêtises jusque là ?
Maintenant je veux switcher ce qu'il y a dans la page 2, et y placer le block 2 de ma Megarom.
Je fait donc ceci :
Code ASM :
ld (0x7000),2
J'ai toujours bon ?
Alors la question qui me turlupine est la suivante. en 0x7000 c'est quoi ? C'est pas de la RAM ? Vu que c'est censé être une adresse qui correspond à au Block 0 de ma Megarom...
y a un truc qui m'échappe !
Comment se fait t-il que je puisse écrire en 0x7000 alors que la RAM commence en 0xC000. ?
Edité par ericb59 Le 20/01/2022 à 17h52
0x7000 c'est quoi ?
c'est le décodage de l'adresse par les Bits d'Adresses qui font que le composant 74LS670 ( registre 4 bits ) qui garde le numéro des pages soit activé
on écrit dans ce registre qui se comporte alors comme une mémoire et garde les pages
c'est le même composant utilisé dans les Memory Mapper
c'est donc purement électronique comme la sauvegarde valeur des slot étendus en 0xFFFF
c'est le décodage de l'adresse par les Bits d'Adresses qui font que le composant 74LS670 ( registre 4 bits ) qui garde le numéro des pages soit activé
on écrit dans ce registre qui se comporte alors comme une mémoire et garde les pages
c'est le même composant utilisé dans les Memory Mapper
c'est donc purement électronique comme la sauvegarde valeur des slot étendus en 0xFFFF
ericb59
Membre non connecté
Conseiller Municipal
JIPEMSX :
0x7000 c'est quoi ?
c'est le décodage de l'adresse par les Bits d'Adresses qui font que le composant 74LS670 ( registre 4 bits ) qui garde le numéro des pages soit activé
on écrit dans ce registre qui se comporte alors comme une mémoire et garde les pages
c'est le même composant utilisé dans les Memory Mapper
c'est donc purement électronique comme la sauvegarde valeur des slot étendus en 0xFFFF
c'est le décodage de l'adresse par les Bits d'Adresses qui font que le composant 74LS670 ( registre 4 bits ) qui garde le numéro des pages soit activé
on écrit dans ce registre qui se comporte alors comme une mémoire et garde les pages
c'est le même composant utilisé dans les Memory Mapper
c'est donc purement électronique comme la sauvegarde valeur des slot étendus en 0xFFFF
D'acoooorrrd !
Donc ca veut dire qu'en aucun cas je ne pourrais avoir de la RAM en Page 1, car sinon ca marcherait plus ! ?
tu peux avoir de la ram en page 1 mais pas dans le même slot que la cartouche
les ascii avec de la Sram commutent sur un appel de bank
voir ici : http://bifi.msxnet.org/msxnet/tech/megaroms#ascii8sram
les ascii avec de la Sram commutent sur un appel de bank
voir ici : http://bifi.msxnet.org/msxnet/tech/megaroms#ascii8sram
ericb59
Membre non connecté
Conseiller Municipal
JIPEMSX :
tu peux avoir de la ram en page 1 mais pas dans le même slot que la cartouche
[/url]
[/url]
Oui c'est ce que je voulais dire. Pour y accéder on devrait passer par une routine interslot.
Par contre en théorie (sur le schéma ci dessus) je pourrais basculer la RAM de la page 3 du slot 3 vers le Slot1
et mettre la RAM de la Page2 du slot 3 sur le Slot 1 aussi ?
(C'est pour voir si je comprend bien)
Je crois qu'Eric voulait avoir la RAM (donc slot3) en page 1 de 0x4000 à 0x7FFF
et le contenu de sa cartouche ASCII 16 (en slot1) en page 3 donc le bloc 0 visible de 0xC000 à 0xFFFF.
Je pense que c'est le bloc 0 qui va apparaitre car avec une Megarom ASCII 16, de 0xC000 à 0xFFFF, on a un miroir de la zone 0x4000 à 0x7FFF de la Megarom (source le Wiki de MSX.org). Par contre, est-ce qu'en écrivant en 0xF000, on peut changer le bloc visible en page 2 ? Je ne pense pas...
et le contenu de sa cartouche ASCII 16 (en slot1) en page 3 donc le bloc 0 visible de 0xC000 à 0xFFFF.
Je pense que c'est le bloc 0 qui va apparaitre car avec une Megarom ASCII 16, de 0xC000 à 0xFFFF, on a un miroir de la zone 0x4000 à 0x7FFF de la Megarom (source le Wiki de MSX.org). Par contre, est-ce qu'en écrivant en 0xF000, on peut changer le bloc visible en page 2 ? Je ne pense pas...
Nous sommes en 2010 aps JC, toute la Gaule est envahie. Ah ben non, apparement, un village résiste encore aux envahisseurs Personalcomputerum et autres Consoledessalum. Bienvenue dans l'antre du emessix !
ericb59
Membre non connecté
Conseiller Municipal
KN2000 :
Je crois qu'Eric voulait avoir la RAM (donc slot3) en page 1 de 0x4000 à 0x7FFF
Ben. C‘est juste théorique pour savoir comment ça marche en fait.
aoineko
Membre non connecté
Conseiller Municipal
J'ai pas vérifié, mais si la ROM est bien visible en miroir, le segment sélectionné en page #1 devrait aussi être visible en page #3, et celui visible en page #2 sera aussi visible en page #0.
Donc techniquement, on devrait pouvoir avoir des segments visibles en page #0 et #3 sur le slot de la MegaROM.
Donc techniquement, on devrait pouvoir avoir des segments visibles en page #0 et #3 sur le slot de la MegaROM.
On est toujours ignorant avant de savoir.
Par contre en théorie (sur le schéma ci dessus) je pourrais basculer la RAM de la page 3 du slot 3 vers le Slot1
et mettre la RAM de la Page2 du slot 3 sur le Slot 1 aussi ?
et mettre la RAM de la Page2 du slot 3 sur le Slot 1 aussi ?
je crois bien que ericb59 mélange les slots et les pages
tu ne pourra jamais avoir la RAM de la page 3 du slot 3 vers le slot 1 ni celle de la page 2 sur le slot 1
leur emplacement est figé
rappel sur un MSX standard de base il y 4 slots contenant chacun 4 pages de 16K
dans le mappage final de la mémoire qui n'est que de 64K ( maxi pour un Z80 ) on ne peut avoir que 4 pages de 16K
il faut donc juste penser au mappage final
donc dans ton cas de :
0x0000 à 0x3FFF BIOS en SLOT 0
0x4000 à 0x7FFF MEGAROM ASCII 16K en SLOT 1
0x8000 à 0xBFFF MEGAROM ASCII 16K en SLOT 1
0xC000 à 0xFFFF RAM en SLOT3
mais en changeant la page 2 par des OUT le PORT &HA8 on peux obtenir
0x0000 à 0x3FFF BIOS en SLOT 0
0x4000 à 0x7FFF MEGAROM ASCII 16K en SLOT 1
0x8000 à 0xBFFF RAM en SLOT3
0xC000 à 0xFFFF RAM en SLOT3
c'est une question d'aiguillage des pages en interne
j'espère que c'est un peu plus clair
il y a une doc en anglais sur les memoires msx1 et msx2 sur cette page : http://marmsx.msxall.com/artigos/english.php
ericb59
Membre non connecté
Conseiller Municipal
Citation :
mais en changeant la page 2 par des OUT le PORT &HA8 on peux obtenir
0x0000 à 0x3FFF BIOS en SLOT 0
0x4000 à 0x7FFF MEGAROM ASCII 16K en SLOT 1
0x8000 à 0xBFFF RAM en SLOT3
0xC000 à 0xFFFF RAM en SLOT3
c'est une question d'aiguillage des pages en interne
0x0000 à 0x3FFF BIOS en SLOT 0
0x4000 à 0x7FFF MEGAROM ASCII 16K en SLOT 1
0x8000 à 0xBFFF RAM en SLOT3
0xC000 à 0xFFFF RAM en SLOT3
c'est une question d'aiguillage des pages en interne
Oui oui. En fait je ne m'exprime pas correctement. Mais c'est exactement ce que je voulais savoir.
Citation :
c'est une question d'aiguillage des pages en interne
Oui.
On peut aussi dire que la page pointe sur un slot ?
aoineko
Membre non connecté
Conseiller Municipal
ericb59 :
On peut aussi dire que la page pointe sur un slot ?
Oui, les pages du Z80 "pointent" vers un slot ou un sous-slot.
Et les banks des ROM mappées (qui sont dans l'une des pages), pointent vers un segment.
On est toujours ignorant avant de savoir.
ericb59
Membre non connecté
Conseiller Municipal
aoineko :
[quote=ericb59]
Et les banks des ROM mappées (qui sont dans l'une des pages), pointent vers un segment.
Et les banks des ROM mappées (qui sont dans l'une des pages), pointent vers un segment.
?
En fait c'est la même chose non ?
Les segments de la Megarom sont pointées sur des adresses ?
Qu'est-ce que tu appels "banks des ROM mappées" ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie