L'atelier Le MSX et les signaux CS
igal
Membre non connecté
Conseiller Municipal
En cherchant dans les ruelles du village, j'ai retrouvé ça:
@Jipe: Quel est l'intérêt d'avoir deux signaux différents /CS1 et /CS2 qui s'adresseraient à une même plage (quantité?) de données?
Est ce que CS1 "met en mirroir" 16Ko quelconques dans la RAM [obligatoirement En &h000 jusqu'à &h3FFF] et CS2 "met en mirroir" 16Ko quelconques dans la RAM [obligatoirement En &h4000 jusqu'à &h7FFF]?
Faut il comprendre que le [BUS MSX A0 jusque A15] permet à l'utilisateur d'indiquer à la machine ou aller chercher les "[Blocs de données de 16Ko /CS1 ou CS2] et que dans le même temps, CS1 ou CS2 indique de facto que ces données seront placée en miroir dans la RAM du MSX soit en &h0000 si c'est cablé CS1 ou encore &h4000 si c'est cablé CS2?
Juste en dessous, la cartographie de FS-A1 extraite depuis Msx.org :
Santé Edité par igal Le 27/04/2021 à 10h40
Jipe :
le slot select doit arriver sur /OE et /CE
rappel sur les plages mémoires
/CS1 = 4000 7FFF jeu 16K
/CS2 = 8000 BFFF jeu 16K
/CS12 = 4000 BFFF jeu 32K
/SLTSL = 0000 FFFF jeu 64K
rappel sur les plages mémoires
/CS1 = 4000 7FFF jeu 16K
/CS2 = 8000 BFFF jeu 16K
/CS12 = 4000 BFFF jeu 32K
/SLTSL = 0000 FFFF jeu 64K
@Jipe: Quel est l'intérêt d'avoir deux signaux différents /CS1 et /CS2 qui s'adresseraient à une même plage (quantité?) de données?
Est ce que CS1 "met en mirroir" 16Ko quelconques dans la RAM [obligatoirement En &h000 jusqu'à &h3FFF] et CS2 "met en mirroir" 16Ko quelconques dans la RAM [obligatoirement En &h4000 jusqu'à &h7FFF]?
Faut il comprendre que le [BUS MSX A0 jusque A15] permet à l'utilisateur d'indiquer à la machine ou aller chercher les "[Blocs de données de 16Ko /CS1 ou CS2] et que dans le même temps, CS1 ou CS2 indique de facto que ces données seront placée en miroir dans la RAM du MSX soit en &h0000 si c'est cablé CS1 ou encore &h4000 si c'est cablé CS2?
Juste en dessous, la cartographie de FS-A1 extraite depuis Msx.org :
Santé Edité par igal Le 27/04/2021 à 10h40
/CS1 /CS2 /CS12 ça permet surtout de faire des cartouches 16 et 32k simples qui n'embarquent pas le décodage d'adresses donc a moindre coût
/CS1 c'est pour les roms 16k dont la plage mémoire va de 4000h à 7FFFH
/CS2 c'est pour les roms 16k dont la plage mémoire va de 8000h à BFFFH
donc oui c'est la même taille mais pas le même emplacement !!
/CS12 c'est pour les roms 32k dont la plage mémoire va de 4000h a BFFFh
/CS1 c'est pour les roms 16k dont la plage mémoire va de 4000h à 7FFFH
/CS2 c'est pour les roms 16k dont la plage mémoire va de 8000h à BFFFH
donc oui c'est la même taille mais pas le même emplacement !!
/CS12 c'est pour les roms 32k dont la plage mémoire va de 4000h a BFFFh
voila je vais développer en images le fonctionnement a partir du schéma du CANON V20
les Bits d'adresses A14 et A15 servent a décoder les adresses a l'aide du 74LS139
comme il y a le signal /RD qui est pris en compte dans le montage seul des composants a lecture seule sont autorisés
plage mémoire de 0000h à 3FFFh seule la ROM est sélectionnée
plage mémoire de 4000h à 7FFFh le /CS1, le /CS12 et la ROM sont sélectionnés
plage mémoire de 8000h à BFFFh le /CS2 et le /CS12 sont sélectionnés
plage mémoire de C000h à FFFFh aucune ROM n'est sélectionnée
les Bits d'adresses A14 et A15 servent a décoder les adresses a l'aide du 74LS139
comme il y a le signal /RD qui est pris en compte dans le montage seul des composants a lecture seule sont autorisés
plage mémoire de 0000h à 3FFFh seule la ROM est sélectionnée
plage mémoire de 4000h à 7FFFh le /CS1, le /CS12 et la ROM sont sélectionnés
plage mémoire de 8000h à BFFFh le /CS2 et le /CS12 sont sélectionnés
plage mémoire de C000h à FFFFh aucune ROM n'est sélectionnée
j'ai scindé le post pour éviter la pollution du post original
@igal: le MSX ne copie pas les zones de ROM dans sa RAM mais travaille directement dans la ROM
la zone C000h à FFFFh est réservèe pour la RAM
il y a aussi :
- une Zone Variables Systèmes qui contient plein de données sur l'état du MSX qui commence en F380h
- une zone mémoire Hook ( crochets qui permet de détourner certaines fonctions ) qui commence en FD9Ah
sur les MSX avec des slots étendus l'adresse FFFFh est reservèe ( le fameux poke -1 )
@igal: le MSX ne copie pas les zones de ROM dans sa RAM mais travaille directement dans la ROM
la zone C000h à FFFFh est réservèe pour la RAM
il y a aussi :
- une Zone Variables Systèmes qui contient plein de données sur l'état du MSX qui commence en F380h
- une zone mémoire Hook ( crochets qui permet de détourner certaines fonctions ) qui commence en FD9Ah
sur les MSX avec des slots étendus l'adresse FFFFh est reservèe ( le fameux poke -1 )
igal
Membre non connecté
Conseiller Municipal
Ok... (Je te remercie, c'est clair pour CS1, CS2 et CS12 )
Pourquoi la RAM seulement de &HC000 à &HFFFF auxquels on doit en plus soustraire encore de la place allant de &HF380 jusqu'à probablement &hFFFF?
Pourquoi ne peut on pas utiliser la RAM depuis &H0000 à &HBFFF pour y stocker du programme BASIC? Edité par igal Le 27/04/2021 à 16h10
Pourquoi la RAM seulement de &HC000 à &HFFFF auxquels on doit en plus soustraire encore de la place allant de &HF380 jusqu'à probablement &hFFFF?
Pourquoi ne peut on pas utiliser la RAM depuis &H0000 à &HBFFF pour y stocker du programme BASIC? Edité par igal Le 27/04/2021 à 16h10
TurboSEB
Membre non connecté
Conseiller Municipal
Je sais que le Z80 peut adresser 64ko de mémoire ROM et RAM confondues en même temps
Après on peu commuté les plages RAM au besoins
C'est pour ça qui il y a moins de RAM disponible sur un MSX2 (23/24ko) par rapport a un MSX1 car il y a des adressages ROM en plus pour le drive par exemple Edité par TurboSEB Le 27/04/2021 à 16h50
Après on peu commuté les plages RAM au besoins
C'est pour ça qui il y a moins de RAM disponible sur un MSX2 (23/24ko) par rapport a un MSX1 car il y a des adressages ROM en plus pour le drive par exemple Edité par TurboSEB Le 27/04/2021 à 16h50
MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
La RAM dépend de la conception du MSX
il y a eu des MSX avec 8k 16k 32k et 64k de RAM
en fait la zone adressée pour la RAM s'étend bien de 0000h a FFFFh pour un MSX 64K
mais on a que 28k de RAM disponible sous BASIC pour un MSX1 car les 32 premiers K sont réservés pour la ROM
en effet les commandes Basic étant en ROM il faut avoir accès a la ROM et a la RAM en même temps
pourquoi 28k ? car il faut déduire la zone réservée au fonctionnement du systéme
les 32 premiers K de la RAM ne sont accessibles qu'en langage machine ( assembleur )
donc pour résumer dans un :
MSX 8K la RAM commencera à E000h ex : Casio PV7 4239 Bytes free
MSX 16K la RAM commencera à C000h ex : Casio PV16 12431 Bytes free
MSX 32K la RAM commencera à 8000h ex : Yamaha CX5 28815 Bytes free
MSX 64K la RAM commencera à 0000h ex : Canon V20 28815 Bytes free
il y a eu des MSX avec 8k 16k 32k et 64k de RAM
en fait la zone adressée pour la RAM s'étend bien de 0000h a FFFFh pour un MSX 64K
mais on a que 28k de RAM disponible sous BASIC pour un MSX1 car les 32 premiers K sont réservés pour la ROM
en effet les commandes Basic étant en ROM il faut avoir accès a la ROM et a la RAM en même temps
pourquoi 28k ? car il faut déduire la zone réservée au fonctionnement du systéme
les 32 premiers K de la RAM ne sont accessibles qu'en langage machine ( assembleur )
donc pour résumer dans un :
MSX 8K la RAM commencera à E000h ex : Casio PV7 4239 Bytes free
MSX 16K la RAM commencera à C000h ex : Casio PV16 12431 Bytes free
MSX 32K la RAM commencera à 8000h ex : Yamaha CX5 28815 Bytes free
MSX 64K la RAM commencera à 0000h ex : Canon V20 28815 Bytes free
Aprés si on insère une extension Lecteur de Disquette le système réserve un emplacement de travail pour chaque drive connecté
par défaut il voit 2 drives connectés A: et B:
c'est pour cela que la touche CTRL permet de libérer un peu d'espace mémoire car le drive B: n'est plus reconnu
Avec 32k de RAM on accès au commandes du DISK BASIC genre :
FILES pour voir les fichiers
COPY "A:FICHIER" TO "B:" pour copier un fichier de A: vers B:
RUN "JEU.BAS" pour lancer un jeu
ETC...
pour charger le MSXDOS et ses commandes il faut au moins 64k de RAM
le MSXDOS se charge a partir d'une disquette et du coup les commandes sont différentes
DIR pour voir les fichiers
COPY A:FICHIER B: pour copier un fichier de A: vers B:
pour lancer un programme il faut qu'il soit en .COM
pour lancer JEU.COM on tape simplement JEU et return
par défaut il voit 2 drives connectés A: et B:
c'est pour cela que la touche CTRL permet de libérer un peu d'espace mémoire car le drive B: n'est plus reconnu
Avec 32k de RAM on accès au commandes du DISK BASIC genre :
FILES pour voir les fichiers
COPY "A:FICHIER" TO "B:" pour copier un fichier de A: vers B:
RUN "JEU.BAS" pour lancer un jeu
ETC...
pour charger le MSXDOS et ses commandes il faut au moins 64k de RAM
le MSXDOS se charge a partir d'une disquette et du coup les commandes sont différentes
DIR pour voir les fichiers
COPY A:FICHIER B: pour copier un fichier de A: vers B:
pour lancer un programme il faut qu'il soit en .COM
pour lancer JEU.COM on tape simplement JEU et return
igal
Membre non connecté
Conseiller Municipal
Merci TurboSeb
@Jipe: Faut il comprendre que:
Puisque l'on sollicite le "BASIC ROM 32Ko" et que ce dernier doit prendre place en "&H0000 jusqu'à &H7FFF", les mêmes adresses "&H0000 jusqu'à &H7FFF" ne peuvent être utilisées sans quoi, il y aurait confusion entre le contenu du "Programme Basic" et le contenu du "BASIC ROM 32Ko" malgré que "Programme Basic" et "Basic Rom" se trouve sur des Slots différents!
C'est quand même très con d'être limité à ce point!
La solution d'un "mapper" interne au MSX spécialement pour pouvoir utiliser les 64Ko sans que le "Basic Rom" empiète sur les mêmes adresses du "programme Basic" aurait pu être possible ou alors j'suis encore à coté de la plaque
@Jipe: Faut il comprendre que:
Puisque l'on sollicite le "BASIC ROM 32Ko" et que ce dernier doit prendre place en "&H0000 jusqu'à &H7FFF", les mêmes adresses "&H0000 jusqu'à &H7FFF" ne peuvent être utilisées sans quoi, il y aurait confusion entre le contenu du "Programme Basic" et le contenu du "BASIC ROM 32Ko" malgré que "Programme Basic" et "Basic Rom" se trouve sur des Slots différents!
C'est quand même très con d'être limité à ce point!
La solution d'un "mapper" interne au MSX spécialement pour pouvoir utiliser les 64Ko sans que le "Basic Rom" empiète sur les mêmes adresses du "programme Basic" aurait pu être possible ou alors j'suis encore à coté de la plaque
toutes les commandes du MSX Basic sont stockées dans la ROM mais c'est un BASIC INTERPRETE
j'ai trouvé des infos ici : https://en.wikipedia.org/wiki/MSX_BASIC
j'ai trouvé des infos ici : https://en.wikipedia.org/wiki/MSX_BASIC
MSX BASIC est fourni avec la ROM de tous les ordinateurs MSX. Au démarrage du système, MSX BASIC est appelé, provoquant l'affichage de son invite de commande, à moins qu'un autre logiciel placé dans la ROM ne prenne le contrôle (ce qui est le cas typique des cartouches de jeu et des interfaces de disque, cette dernière provoquant l' affichage de l' invite MSX-DOS s'il existe un disque contenant les fichiers système DOS).
Lorsque MSX BASIC est appelé, le code ROM pour le BIOS et l' interpréteur BASIC lui-même sont visibles sur les 32 Ko inférieurs de l'espace d'adressage Z80. Les 32 Ko supérieurs sont définis sur RAM, dont environ 23 Ko à 28 Ko sont disponibles pour le code BASIC et les données (la quantité exacte dépend de la présence du contrôleur de disque et de la version du noyau MSX-DOS).
Lorsque MSX BASIC est appelé, le code ROM pour le BIOS et l' interpréteur BASIC lui-même sont visibles sur les 32 Ko inférieurs de l'espace d'adressage Z80. Les 32 Ko supérieurs sont définis sur RAM, dont environ 23 Ko à 28 Ko sont disponibles pour le code BASIC et les données (la quantité exacte dépend de la présence du contrôleur de disque et de la version du noyau MSX-DOS).
aoineko
Membre non connecté
Conseiller Municipal
igal :
C'est quand même très con d'être limité à ce point!
La solution d'un "mapper" interne au MSX spécialement pour pouvoir utiliser les 64Ko sans que le "Basic Rom" empiète sur les mêmes adresses du "programme Basic" aurait pu être possible ou alors j'suis encore à coté de la plaque
La solution d'un "mapper" interne au MSX spécialement pour pouvoir utiliser les 64Ko sans que le "Basic Rom" empiète sur les mêmes adresses du "programme Basic" aurait pu être possible ou alors j'suis encore à coté de la plaque
Après, c'est une limite qui ne concerne que le Basic (donc des utilisations plus "loisir").
Les cartouches, par exemple, ont beaucoup plus de souplesses.
On peut accéder assez facilement à quasiment tout les 64 KB de RAM (avec plus ou moins de switch de slot sur les pages et plus ou moins de contrainte si on utilise le Bios).
On est toujours ignorant avant de savoir.
J'ai réalisé quelques cartouches en utilisant un circuit imprimé que j'ai trouvé sur easyeda
Et sur cette carte on retrouve le sélecteur CS1 CS2 et CS12. Mais aussi RD, qui relie ou non CS à RD. A15 qui relie le A15 de la rom soit au + ou au - (soit au A15 du slot) et idem avec le A14 mais avec en plus la possibilité de relier A14 de la rom au A15 du slot.
Je n'ai pas bien compris comment fonctionne ce A14 A15, est ce que ça permet d'utiliser une Rom supérieure à 64ko?
Et sur cette carte on retrouve le sélecteur CS1 CS2 et CS12. Mais aussi RD, qui relie ou non CS à RD. A15 qui relie le A15 de la rom soit au + ou au - (soit au A15 du slot) et idem avec le A14 mais avec en plus la possibilité de relier A14 de la rom au A15 du slot.
Je n'ai pas bien compris comment fonctionne ce A14 A15, est ce que ça permet d'utiliser une Rom supérieure à 64ko?
Il faut cultiver notre jardin.
les megaroms n'utilisent pas les /cs1 /cs2 /cs12 mais juste le signal slot select
c'est un chip spécial qui gére le mapper des cartouches
2212P003 pour les SCC
LZ93A13 ou M60002 pour les ASCII
schémas ici pour les SCC et le LZ93A13 : http://elec-junker-p2.blog.jp/
64Ko c'est le maximum d'une cartouche sans mapper 2 ^ 16 = 65536
comment tu charge le circuit complet sur easydata car avec l'outil de visualisation je ne vois pas toutes les pistes pour t'en dire plus ?
c'est un chip spécial qui gére le mapper des cartouches
2212P003 pour les SCC
LZ93A13 ou M60002 pour les ASCII
schémas ici pour les SCC et le LZ93A13 : http://elec-junker-p2.blog.jp/
64Ko c'est le maximum d'une cartouche sans mapper 2 ^ 16 = 65536
comment tu charge le circuit complet sur easydata car avec l'outil de visualisation je ne vois pas toutes les pistes pour t'en dire plus ?
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie