MSX Village forum

La Place des Développeurs Question sur Slot/RAM MAPPER ASCII16

ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 20/01/2022 à 17h49
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.... :gne

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 ! :hum
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


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10287

Le 20/01/2022 à 19h46
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


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 20/01/2022 à 19h53
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


:| :| :|

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 ! ?


banniere-ericb59e
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10287

Le 20/01/2022 à 20h03
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


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 20/01/2022 à 20h08
JIPEMSX :
tu peux avoir de la ram en page 1 mais pas dans le même slot que la cartouche ;)
[/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)


banniere-ericb59e
Site web    
Sector28 Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 552

Le 20/01/2022 à 20h26
Normalement quand on place une cartouche dans un slot (1 ou 2), elle occupe les 4 pages..


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
KN2000 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 08/06/2010 à 09h30

Messages: 209

Le 20/01/2022 à 20h43
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...


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

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 20/01/2022 à 21h26
Sector28 :
Normalement quand on place une cartouche dans un slot (1 ou 2), elle occupe les 4 pages..

Dans des slots différents donc ?


banniere-ericb59e
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 20/01/2022 à 21h28
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.


banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2680

Le 20/01/2022 à 21h32
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.


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

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10287

Le 21/01/2022 à 08h35
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 ?


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


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10287

Le 21/01/2022 à 09h04
il y a une doc en anglais sur les memoires msx1 et msx2 sur cette page : http://marmsx.msxall.com/artigos/english.php


:noel
Site web    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 21/01/2022 à 09h33
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


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 ?




banniere-ericb59e
Site web    
aoineko Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 02/01/2011 à 21h17

Messages: 2680

Le 21/01/2022 à 09h47
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.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5469

Le 21/01/2022 à 13h13
aoineko :
[quote=ericb59]
Et les banks des ROM mappées (qui sont dans l'une des pages), pointent vers un segment.


? :hum
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" ?


banniere-ericb59e
Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie