MSX Village forum

La Place des Développeurs PSG R7 et R15 sur MSX KEZAKO ?

6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 03/11/2016 à 20h09
Cette fois je coince sur la programmation du PSG sur MSX, autant j'arrive à produire une musique convenablement autant je suis pas sur d'avoir bien compris le fonctionnement sur MSX :oups

Notamment la partie sur R7, est ce vraiment possible de détruire le matériel en changeant seulement les bit 6 et 7 de R7 :| :fou
En plus je ne comprends pas pourquoi en envoyant les données directement sur le port du PSG ($A0 et $A1) le deboggeur de bluemsx n'indique pas la valeur qui est envoyé dans R7, mais une autre comme si les bit 6 et 7 étaient toujours forcés à 0 :| :hum

Dans mon programme j'ai inséré cette partie dans le player pour justement R7, mais ca n'a pas l'air d'avoir un quelconque effet :
Citation:
CP 7
JP NZ,PAS_IO
LD A,(DE)
RES 6,A
SET 7,A


Voici un petit player sous MSX-DOS 1 pour tous MSX (1 à TurboR) tout simple que j'ai programmé, vous verrez par vous même que les valeurs du registre R7 dans le deboggeur :(
AY3_TEST.zip



Register(s) Description
0-5 Tone generator control
6 Noise generator control
7 Mixer control-I/O enable
Important note: bit 6 must be 0, and bit 7 must be 1. Setting different values can cause damage on some systems. Safest approach is to just not touch them and read them first before writing a new value.
8-10 Amplitude control
11-13 Envelope generator control
14-15 I/O ports A & B



Une autre question concernant cette fois le registre R15 du PSG les bits 4 et 5 peuvent être mis en entrée (1) ou en sortie (0) comme pour les bits 0 à 3 (ca ma parait impossible par rapport au bit 6) ???
Ou est ce seulement possible en sortie ???


PSG I/O port B (r#15) – write/read
Bit Description Comment
0 Output joystick port 1, pin 6 Set to 1 to allow input
1 Output joystick port 1, pin 7 Set to 1 to allow input
2 Output joystick port 2, pin 6 Set to 1 to allow input
3 Output joystick port 2, pin 7 Set to 1 to allow input
4 Output joystick port 1, pin 8 ????
5 Output joystick port 2, pin 8 ????

6 Joystick input selection, for r#14 inputs 1 = port 2
7 Kana led control 1 = off



Voila d'avance merci pour vos éclaircissement :) ;)


Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 04/11/2016 à 09h04
6502man :
Cette fois je coince sur la programmation du PSG sur MSX, autant j'arrive à produire une musique convenablement autant je suis pas sur d'avoir bien compris le fonctionnement sur MSX :oups

Notamment la partie sur R7, est ce vraiment possible de détruire le matériel en changeant seulement les bit 6 et 7 de R7 :| :fou
En plus je ne comprends pas pourquoi en envoyant les données directement sur le port du PSG ($A0 et $A1) le deboggeur de bluemsx n'indique pas la valeur qui est envoyé dans R7, mais une autre comme si les bit 6 et 7 étaient toujours forcés à 0 :| :hum

C'est une question en suspend. J'ai remarqué que plusieurs programmeurs ne respectaient l'état de ces deux bits.

http://www.msxvillage.fr/forum/topic.php?id=1523#m32653

Dans le MSX Datapack, ça dit seulement de mettre ces 2 bits ainsi. C'est tout.

D'après ce qu'on dit les dommages ne peuvent arriver que sur quelques vieux MSX et avec certains appareils branchés sur les ports joystick. De mon côté, j'ai seulement remarqué, et une fois seulement, des comportements bizarre du joystick lorsque ces bits n'étaient pas mis comme indiqué.

Voici une nouvelle version du pratique du MSX avec l'ajout d'un chapitre sur le PSG.

pratique du MSX.zip

Je comptais le mettre en ligne une fois ce chapitre fini mais bon, si ça peut t'aider. Il ne manque pas grand-chose. C'est principalement les explications sur la souris qui ne sont pas vraiment correctes. Le reste est aussi à fignoler mais tu devrais y trouver tout ce qu'il de faut. Edité par GDX Le 04/11/2016 à 09h13
   
6502man Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 19/08/2013 à 18h14

Messages: 815

Le 04/11/2016 à 19h15
Merci GDX tu est un chef :top :tchin

Ca réponds à plusieurs de mes interrogation :top :D

Citation :
Les émulateurs mettent ces 2 bits à 0 par défaut par erreur (même BlueMSX).

D’où le problème que j'avais constaté sur BlueMSX, et moi qui croyais que je mettais planté dans mon code Z80 :lol
Donc mon programme ne devrais pas endommager de MSX :lol

Citation :
Registre 15 : Ce registre permet de contrôler les broches des ports généraux à lire via le registre 14 ainsi que l'état de la LED « code » ou « Kana » selon le type de clavier.
Bit 0 = Contrôle de la broche 6 du port général 1*
Bit 1 = Contrôle de la broche 7 du port général 1*
Bit 2 = Contrôle de la broche 6 du port général 2*
Bit 3 = Contrôle de la broche 7 du port général 2*
Bit 4 = Contrôle de la broche 8 du port général 1 (0 pour mode joystick standard)
Bit 5 = Contrôle de la broche 8 du port général 2 (0 pour mode joystick standard)
Bit 6 = Sélection du port général lisible via le registre 14 (1 pour port 2)
Bit 7 = Contrôle de la LED de la touche « code » ou « Kana ». (1 pour éteindre)

Donc on peut bien passer la broche 8 en entrée ou en sortie :lol ;)


Citation :
Le schéma d'une manette standard (Type B) est le suivant...

;)

Citation :
Notez que, dans ce cas, la broche 8 peut être remplacée par la masse.

C'est exactement ce que j'avais déduis et donc ca confirme bien mon hypothèse :top

Les explications sur les registres du PSG sont très claire, félicitations pour tous ce travail :) Edité par 6502man Le 04/11/2016 à 19h16


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