MSX Village forum

L'école Description des SLOT MSX (pour les programmeurs)

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 03/06/2012 à 07h33
Voir le Pratique du MSX. Edité par GDX Le 04/06/2017 à 06h59
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 03/06/2012 à 08h54
Moi qui me contente de tartiner du beurre et d'la confiture à s't'heure là :moue

Tu nous offre de la gelée royale GDX. Tiroirs et commode, ça me parle. C'est très explicite, bravo ;)

On va voir si j'ai bien compris :oups :

1) Lorsque l'on possède un mapper interne de 4046Ko.
2) Sachant que chaque BANK peut contenir 256Ko (maxi).
3) Il y a 4 BANK par SLOT.
4) Il y à 4 SLOTs dans un MSX.

Les 16 TIROIRS du MSX sont tous utilisés :gne

Donc à supposé que l'on veuille faire un petit programme en BASIC, qui par définition va utiliser la ROM BASIC du MSX.
On va donc la aussi utiliser un TIROIR qui a un potentiel maximum de 256Ko. (même si seulement 32Ko sont utilisés.

5) Cela veut dire qu'en réalité on ne pourra utiliser que (4096-256) => 3840Ko ?

Le programme devant être contenu dans la RAM, là encore, on utilise un TIROIR de 32 Ko (ou plus), qui à un potentiel de 256Ko et donc:

6) Il faut encore soustraire 256Ko au 3840Ko restants à l'étape 5?

Au final, un PROGRAMME de 32ko ( Tiroir de 32 mais potentiel de 256) utilisant le BASIC (Tiroir de 32 mais potentiel de 256), laisse un potentiel mémoire restant de [4096-256-256 => 3584Ko visible par le CPU.

C'est bien ça? :heink







Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10734

Le 03/06/2012 à 10h34
le CPU Z80 ne peut voir que 64K a la fois quelque soit le bank
les pages visibles font toutes 16K
le memory mapper permet de commuter les pages de mémoire dans les banks ,on peux placer la même page dans 2 banks
donc oublie tous tes calculs et reste simple
16k bios
16k basic
16k ram
16k ram
d'ou les 28k a l'init d'un MSX1 ( 32k - la place des variables systéme )


:noel
Site web    
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 03/06/2012 à 10h40
Il faut voir ça comme les placards industriels ou l'on ne peux ouvrir qu'un tiroir à la fois.
Tout le contenu est disponible mais pas en même temps

Après tu y mets ce que tu veux dedans même de la confiture :lol
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 03/06/2012 à 12h00
igal :
Moi qui me contente de tartiner du beurre et d'la confiture à s't'heure là :moue



Tu nous offre de la gelée royale GDX. Tiroirs et commode, ça me parle. C'est très explicite, bravo ;)


En fait, ça fait des mois que ça traine. J'ai écrit ça petit à petit tranquillement. :tea

igal :
On va voir si j'ai bien compris :oups :



1) Lorsque l'on possède un mapper interne de 4046Ko.

2) Sachant que chaque BANK peut contenir 256Ko (maxi).

3) Il y a 4 BANK par SLOT.

4) Il y à 4 SLOTs dans un MSX.



Les 16 TIROIRS du MSX sont tous utilisés :gne


Il ne peut y avoir qu'un Memory Mapper par Slot étendu ou pas. Un Memory Mapper, quelque soit sa taille, prend toute la place d'un Slot.



http://www.msxvillage.fr/forum/topic.php?id=1244



Il y a 4 SLOT primaires dans un MSX au maximum mais il peut y en avoir moins. 1 Slot primaire peut contenir 4 Slot secondaires au maximum mais il peut y en avoir moins.

igal :


Donc à supposé que l'on veuille faire un petit programme en BASIC, qui par définition va utiliser la ROM BASIC du MSX.

On va donc la aussi utiliser un TIROIR qui a un potentiel maximum de 256Ko. (même si seulement 32Ko sont utilisés.



5) Cela veut dire qu'en réalité on ne pourra utiliser que (4096-256) => 3840Ko ?



Le programme devant être contenu dans la RAM, là encore, on utilise un TIROIR de 32 Ko (ou plus), qui à un potentiel de 256Ko et donc:



6) Il faut encore soustraire 256Ko au 3840Ko restants à l'étape 5?



Au final, un PROGRAMME de 32ko ( Tiroir de 32 mais potentiel de 256) utilisant le BASIC (Tiroir de 32 mais potentiel de 256), laisse un potentiel mémoire restant de [4096-256-256 => 3584Ko visible par le CPU.



C'est bien ça? :heink


Un programme en BASIC va utiliser le BIOS, la ROM BASIC et la RAM disponible dans les 2 autres Bank du MSX.

Le BASIC ne gère pas les Slot ni le(s) Memory Mapper. Donc soit tu devras mixer avec le langage machine pour utiliser le reste de mémoire, soit modifier le BASIC pour qu'il gère toute la RAM (je crois que ça a déjà été fait). Edité par GDX Le 03/06/2012 à 12h03
   
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 03/06/2012 à 14h05
tres interessant et instructif :top , des p'tits exemples en Basic avec des OUT seraient un plus (et tres interessant) pour les Beotiens comme moi :oups pour exemple savoir ''lire'' , si l'on a un mapper , une Fmpac , ou autres .... dans un slot !!:)

du genre , par exemple , si mapper > 256Ko = creation d'un RamDisc pour stockage ^^ sinon utilisation du lecteur :siffle Edité par TurboSEB Le 03/06/2012 à 14h37



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6286

Le 03/06/2012 à 22h05
Moi je vais relire tout ça tranquillement demain matin :oups :lol Edité par MSXlegend Le 03/06/2012 à 22h05


KCX Bluetooth emitter Mono/ Stéréo, Smart USB
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 04/06/2012 à 11h52
TurboSEB :
tres interessant et instructif :top , des p'tits exemples en Basic avec des OUT seraient un plus (et tres interessant) pour les Beotiens comme moi :oups pour exemple savoir ''lire'' , si l'on a un mapper , une Fmpac , ou autres .... dans un slot !!:)



du genre , par exemple , si mapper > 256Ko = creation d'un RamDisc pour stockage ^^ sinon utilisation du lecteur :siffle


Le Basic est l'environnement dans lequel c'est le plus difficile de manipuler les Slot ou un Memory mapper car le programme Basic et ses variables sont à cheval sur le Bank 2 et 3. La ROM du Basic est sans cesse appelée lors de l'interprétation et le Bios contient la routine des interruptions entre autres. Le moindre changement de Slot ou de page retire une partie nécessaire au bon fonctionnement. Il faut donc bidouiller mais ça sort un peu du but de ce post.



Pour détecter une ROM précise il faut rechercher dans les Slot le signe de reconnaissance qui est spécifique. Dans le cas de l'FM-PAC, en Basic, on peut exécuter une instruction spécifique au MSX-Music dans une ligne précise et utiliser ON ERROR GOTO.



Pour le RAM-Disk, il faut créer une routine en machine placée dans le bank 3 (donc limiter la taille du programme basic) qui effectuera les tâches suivantes :



1/ couper les interruptions.

2/ Sélectionner la page 255 du Memory Mapper dans le bank 2. (OUT 0FEh,A)

3/ Lire un octet du bank 2, par exemple 8000h et sauvegarder la valeur.

4/ Ecrire le numéro de page sélectionné à 8000h.

5/ Sélectionner la page inférieure du Mapper dans le bank 2.

6/ Si le numéro de page est différent de 0 alors retourner au 3/.

7/ Lire les octets 8000h de chaque page de mapper. Sauvegarder la valeur la plus grande. Elle indiquera le nombre de page du Mapper.

8/ Remettre les valeurs sauvegardées en 3/ à 8000h de chaque page respective.

9 / Rétablir les interruptions et revenir au basic.

10 / Tester la valeur sauvegardée en 7/.



PS : J'ai modifié la description du Memory Mapper. J'ai ajouté le cas du MSX1 avec un schéma d'explication. Edité par GDX Le 18/06/2012 à 03h01
   
gradius Membre non connecté

Maire-adjoint

Rang

Avatar

Inscrit le : 06/10/2009 à 18h27

Messages: 613

Le 21/12/2016 à 08h27
Y en a qui vont rigoler en lisant cela (je pense notamment à Z80 et Jipe) :

Ca fait 25 ans que je n'ai toujours pas compris ces histoires de slots ! :(

Et pourtant ça a l'air "simple" ! :lol

J'offre mon GT à quiconque pourra me faire assimiler tout ça !



(indice pour vous chez vous en bas de l'écran : j'ai 47 piges et... vous croyez encore au Père Noêl ?!!)


MSX Turbo-R FS A1GT - 1 Mo de RAM - Disque dur SCSI Syquest cartouches de 270 Mo - Lecteur CD. Musique, musique, musique et encore musique !
   
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5886

Le 21/12/2016 à 10h43
Moi je trouve l'explication de GDX très bien imagé:

Gdx:
Pour résumé le fonctionnement :

De façon imagée, on peut comparer un slot à une commode avec 4 tiroirs superposés (4 Bank). Il y a 4 commodes. Le CPU ne peut ouvrir que 4 tiroirs en même temps et un seul par niveau (Bank).

Les Slot secondaires sont des boites placées dans les tiroirs. Il y en a 4 par tiroir. Le CPU ne peut ouvrir qu'une boite par tiroir.

Une commode possèdent des tiroirs (Slot primaires) avec des boites (Slot secondaires) contenant de la RAM ou de la ROM mais ça peut être aussi un dispositif quelconque à la place (un Memory Mapper, une puce SCC, un mapper de cartouche, etc).
-----------

Perso j'aurais comparer à 4 immeubles de 4 étages avec par étage un appartement de 4 pièces :)

C'est vraiment très bien expliqué, Merci GDX :):top



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie