Les enquêtes de FlashFred La valeur des ports d'entrées
Bonjour,
J'ai remarqué que des MSX ne donnaient pas la même valeur par défaut lorsqu'on lit un port d'entrée sur lequel rien n'est relié.
Par exemple, lorsqu'on entre la commande suivante :
PRINT INP(60)
On obtient la valeur 120 sur un MSX1 HX-10 et 121 sur un YC-64 mais sur un Turbo R la valeur obtenue est 255.
Sur OpenMSX ou BlueMSX, on obtient 255 quelque soit le MSX sélectionner.
Vous obtenez quelle valeur sur votreémulateur vrai MSX ?
Edité par
GDX
Le 02/10/2012 à 11h32
J'ai remarqué que des MSX ne donnaient pas la même valeur par défaut lorsqu'on lit un port d'entrée sur lequel rien n'est relié.
Par exemple, lorsqu'on entre la commande suivante :
PRINT INP(60)
On obtient la valeur 120 sur un MSX1 HX-10 et 121 sur un YC-64 mais sur un Turbo R la valeur obtenue est 255.
Sur OpenMSX ou BlueMSX, on obtient 255 quelque soit le MSX sélectionner.
Vous obtenez quelle valeur sur votre

GDX, que peut-on relier sur le port 60 (&H3C) ?
@Metalion : si rien n'est relié à un port utilisable, on doit tout de même être en mesure de savoir que ... rien n'est relié à ce port .. non ? .. Dans le cas présent, j'aurais plutôt tendance à dire que rien n'est prévu pour être relié au port 60 (&H3C).. Edité par SveN Le 27/09/2012 à 13h30
@Metalion : si rien n'est relié à un port utilisable, on doit tout de même être en mesure de savoir que ... rien n'est relié à ce port .. non ? .. Dans le cas présent, j'aurais plutôt tendance à dire que rien n'est prévu pour être relié au port 60 (&H3C).. Edité par SveN Le 27/09/2012 à 13h30
Philips.NMS.8245/50/80, Sony.F1XV/HBF-700D, Pana.FSA1FX/A1WX(x2)/A1GT, OCM, GR8BIT.... et ...
A ma connaissance, aucun MSX n'utilise ce port, c'est pour ça que je demande de tester celui-ci.
Metalion,
La valeur n'est pas aléatoire mais indéterminée, elle doit dépendre sans doute du PPI. C'est le genre de détails qui ne sont pas émulés sur les émulateurs et ça cause parfois des problèmes avec les programmes "mal développés". Edité par GDX Le 27/09/2012 à 13h38
Metalion,
La valeur n'est pas aléatoire mais indéterminée, elle doit dépendre sans doute du PPI. C'est le genre de détails qui ne sont pas émulés sur les émulateurs et ça cause parfois des problèmes avec les programmes "mal développés". Edité par GDX Le 27/09/2012 à 13h38
la valeur retournée doit dépendre si les données du bus sont a 1 ou 0 lors de la lecture
si il n'y a pas de résistances pour charger le bus par défaut ça peux donner des valeurs incohérentes sur un port non utilisé
sur un 8280 la valeur retournée est aussi 255
les adresses I/O de 00H a 7FH ne sont pas reservées par le systéme mais peuvent être utilisées par des périphériques
voir la liste des principaux I/O ici : http://map.grauw.nl/resources/msx_io_ports.php
si il n'y a pas de résistances pour charger le bus par défaut ça peux donner des valeurs incohérentes sur un port non utilisé
sur un 8280 la valeur retournée est aussi 255
les adresses I/O de 00H a 7FH ne sont pas reservées par le systéme mais peuvent être utilisées par des périphériques
voir la liste des principaux I/O ici : http://map.grauw.nl/resources/msx_io_ports.php

le bus Z80 peux prendre l'état 1 ou 0 a la lecture si il est en l'air c'est a dire non polarisé a 0 ou a 1 par une résistance
dans le cas des MSX2 il y a souvent un circuit buffer qui charge le bus même si il n'y a pas de résistances d'ou la valeur 255
dans le cas MSX1 n'ayant pas de buffer le bus prend une valeur qui dépend de l'état au moment de la lecture
dans le cas des MSX2 il y a souvent un circuit buffer qui charge le bus même si il n'y a pas de résistances d'ou la valeur 255
dans le cas MSX1 n'ayant pas de buffer le bus prend une valeur qui dépend de l'état au moment de la lecture
C'est quand même étrange que j'obtiens toujours la même valeur alors. Avec un mapper dont les bits de points forts ne sont pas géré, le bit 7 reste à 0 sur MSX1. Sur turbo R, il reste à 1.
Et puis, je me demande ce qu'on voulait dire par réservé car il y a pas mal de cartouches qui utilisent les ports au dessus de 7Fh. En plus, il y a certaines doc. qui disent que les ports sont réservés à partir de 40H et non pas 80H.
http://nocash.emubase.de/portar.htm#top Edité par GDX Le 27/09/2012 à 15h42
Et puis, je me demande ce qu'on voulait dire par réservé car il y a pas mal de cartouches qui utilisent les ports au dessus de 7Fh. En plus, il y a certaines doc. qui disent que les ports sont réservés à partir de 40H et non pas 80H.

http://nocash.emubase.de/portar.htm#top Edité par GDX Le 27/09/2012 à 15h42
quand tu lis un mapper sur un MSX 1 c'est certainement une cartouche externe qui lit directement le port il faut voir au niveau du cablage
le turbo-r ne lis pas directement le port mais passe par le S1990 c'est plus compliqué vu le manque de docs
l'extension 1Mo ajoute un bit qui n'est pas géré par le S1990
dans le même état du bus tu auras tout le temps la même valeur pour le même port car le hardware ne change pas
les signaux peuvent passer par d'autres périphériques qui ne sont pas spécialement activés
dans les anciennes doc les adresses 00h a 3FH sont libres pour l'utilisateur
le turbo-r ne lis pas directement le port mais passe par le S1990 c'est plus compliqué vu le manque de docs
l'extension 1Mo ajoute un bit qui n'est pas géré par le S1990
dans le même état du bus tu auras tout le temps la même valeur pour le même port car le hardware ne change pas
les signaux peuvent passer par d'autres périphériques qui ne sont pas spécialement activés
dans les anciennes doc les adresses 00h a 3FH sont libres pour l'utilisateur

les dites docs ont été imprimées avant que soient fabriquées les interfaces
il y a parfois des conflits
le music module empéche le démarrage de la cartouche ci aprés
http://www.msxvillage.fr/forum/topic.php?id=738
la seule solution que j'ai trouvé modifier l'i/o la cartouche et changer l'adresse dans la rom
autre exemple : le synthé vocal ne marche pas avec un MSX2 car il est est sur les adresses FEH et FFH qui sont reservées au mapper
solution l'adresser en 3EH 3FH en intercalant un LS04 sur les bits A6 A7
bien entendu il faut aussi modifier le programme
il y a parfois des conflits
le music module empéche le démarrage de la cartouche ci aprés
http://www.msxvillage.fr/forum/topic.php?id=738
la seule solution que j'ai trouvé modifier l'i/o la cartouche et changer l'adresse dans la rom
autre exemple : le synthé vocal ne marche pas avec un MSX2 car il est est sur les adresses FEH et FFH qui sont reservées au mapper
solution l'adresser en 3EH 3FH en intercalant un LS04 sur les bits A6 A7
bien entendu il faut aussi modifier le programme
J'ai vérifié dans le DataPack d'ASCII directement pour en avoir le coeur net. La description est un peu vague. Sans entrer dans les détails, j'en ai fait le tableau suivant.
En fait, il y a des ports réservés un peu partout. En gros, les cartouches qui utilisent les ports entre 00H~3FH peuvent enter en conflit avec d'autres puisque c'est libre. Le Music Module en utilise justement.
Quant à la valeur donnée lors de la lecture d'un port inutilisé (bits de poids fort inutilisés inclus), Tu parles de buffers, ça correspondrait à quels composants ? Ça ne serait pas plutôt les MSX ayant un MSX Engine qui retourneraient la valeur 255 ?
Les ports du MSX Turbo R ne sont pas indiqués. J'ai ajouté seulement le Mode R800 que je connais au port F4H. Edité par GDX Le 28/09/2012 à 09h45
En fait, il y a des ports réservés un peu partout. En gros, les cartouches qui utilisent les ports entre 00H~3FH peuvent enter en conflit avec d'autres puisque c'est libre. Le Music Module en utilise justement.
Quant à la valeur donnée lors de la lecture d'un port inutilisé (bits de poids fort inutilisés inclus), Tu parles de buffers, ça correspondrait à quels composants ? Ça ne serait pas plutôt les MSX ayant un MSX Engine qui retourneraient la valeur 255 ?
Port(s) | Fonction |
00H~3FH | Libre pour l'utilisateur |
40H~4FH | Ports E/S étendus |
40H~6FH | Réservés pour le système |
70H~73H | Midi Saurus |
74H~7BH | Réservés pour le système |
7CH~7DH | MSX-Music |
7EH~7FH | Réservés pour le système |
80H~87H | RS-232 |
88H~8BH | V9938 externe du "MSX2 adapter". Vérifier le Bios à l'adresse 0006h et 0007H puis, à ces ports pour être compatible avec cette extension. |
8CH~8DH | Modem MSX |
8EH~8FH | Réservés pour le système |
90H~91H | Port parallèle de l'mprimante |
92H~97H | Réservés pour le système |
98H~99H | VDP MSX1 et VDP MSX2/2+ interne |
9AH~9BH | VDP MSX2/2+ interne |
9CH~9FH | Réservés pour le système |
A0H~A3H | PSG AY-3-8910 |
A4H~A7H | Réservés pour le système |
A8H~ABH | Port parallèle (PPI 8285) |
ACH~AFH | MSX Engine (E/S de la puce MSX) |
B0H~B3H | Mémoire étendue des Sony (PPI 8255) |
B4H~B5H | Horloge interne des MSX2 ou plus récents (RP-5C01) |
B6H~B7H | Réservés pour le système |
B8H~BBH | Crayon optique de Mitsubishi |
BCH~BFH | Contrôleur du VHD de JVC (PPI 8255) |
C0H~C1H | MSX Audio |
C2H~C7H | Réservés pour le système |
C8H~CFH | MSX Interface (Reseau en série non-synchronisé) |
D0H~D7H | Contrôleur de lecteur de disquette. (utilisation non standardisé) |
D8H~D9H | Kanji ROM niveau 1 |
DAH~DBH | Kanji ROM niveau 2 |
DCH~F2H | Réservés pour le système |
F3H | Mode d'affichage du VDP. (MSX2+) |
F4H | Hard/Soft reset. (MSX2+) Mode R800 (MSX Turbo R) |
F5H | Système de contrôle. (utilisé pour désactiver des ports E/S internes) |
F6H | E/S du bus des couleurs |
F7H | Contrôle A/V |
F8H~FBH | Réservés pour le système |
FCH~FFH | Memory Mapper. |
Les ports du MSX Turbo R ne sont pas indiqués. J'ai ajouté seulement le Mode R800 que je connais au port F4H. Edité par GDX Le 28/09/2012 à 09h45
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie