L'atelier [EN COURS] AY-3-8910 et YM2149. Le PSG la Totale.
igal
Membre non connecté
Conseiller Municipal
Salut à tous.
Pour mieux comprendre le PSG / SSG dans le MSX, rien de tel que de déterminer ou il commence et ou il termine.
Pour se faire, j'ai surligné les parties utilisées par ce PSG.
Je compte sur vous pour me corriger en cas d'erreurs ou d'oubli.
@Jipe: Un petit Flottement au niveau des Pin 9, 10 et 11de IC23. Je ne sais pas si elle entrent en compte dans la gestion du PSG
@Fabf et GDX: Avez vous pris en compte une Pin reliée au PPI depuis le PSG? Edité par igal Le 07/09/2013 à 20h04
Pour mieux comprendre le PSG / SSG dans le MSX, rien de tel que de déterminer ou il commence et ou il termine.
Pour se faire, j'ai surligné les parties utilisées par ce PSG.
Je compte sur vous pour me corriger en cas d'erreurs ou d'oubli.
@Jipe: Un petit Flottement au niveau des Pin 9, 10 et 11de IC23. Je ne sais pas si elle entrent en compte dans la gestion du PSG
@Fabf et GDX: Avez vous pris en compte une Pin reliée au PPI depuis le PSG? Edité par igal Le 07/09/2013 à 20h04
Fabf
Membre non connecté
Conseiller Municipal
Si tu veux utiliser un PSG seul ce n'est pas rentable de la sorte.
Tu vas utiliser de petite parties de "gros" composants qui servent aussi aux autres périphériques.
Le pin 10 du PPI (key click) va sur le mixer avec les entrées son des slots.
Tu vas utiliser de petite parties de "gros" composants qui servent aussi aux autres périphériques.
Le pin 10 du PPI (key click) va sur le mixer avec les entrées son des slots.
igal
Membre non connecté
Conseiller Municipal
En Rouge Nécessite un SLOT SELECT
En Vert fonctionne en I/O.
Concernant les éventuels BIOS, la règle est assez simple puisqu'il faut en fonction de sa taille, utiliser:
16Ko => CS1 (???)
16Ko => CS2 (Fm Pac et clones)
32Ko => CS12 (Fm Pac et clones ainsi que Music Module Original)
64Ko => SLOT SELECT (Fm Pak, FRS 3.1)
128Ko => SLOT SELECT (MoonSound, SCC)
L'idée est en fait de...
1) Utiliser un AY-3-8910 PSG.
2) Remplacer le AY-3-8910 par un YM2149 SSG (Juste une patte à modifier)
3) Remanier le câblage pour mapper un YM2608 compatible SSG et intégrant la FM à la place du YM2149.
4) Ajouter l'OPL3 YMF262 pour la FM des OPL1, OPL3, OPL4. (voir même OPLL + OPL1 simultanément avec MS2)
5) Ajouter l'YM2413 OPLL.
Si possible:
6) Exploiter si possible l'ADPCM du YM2608 en remplacement de l'ADPCM du Y8950 MSX-AUDIO.
Nécessite d'avoir des registres identiques entre l'YM2608 et l'Y8950. (Faut voir comment c'est foutu)
Si vraiment tout est ok:
7) Remplacer l'OPL3 YMF262 par l'YMF297-F qui est hybride des familles OPLx et OPNx mais sans prises en charge des ADPCM et/ou WAV.
C'est pas gagné, mais ca mérite réflexion Edité par igal Le 26/09/2013 à 20h39
En Vert fonctionne en I/O.
Concernant les éventuels BIOS, la règle est assez simple puisqu'il faut en fonction de sa taille, utiliser:
16Ko => CS1 (???)
16Ko => CS2 (Fm Pac et clones)
32Ko => CS12 (Fm Pac et clones ainsi que Music Module Original)
64Ko => SLOT SELECT (Fm Pak, FRS 3.1)
128Ko => SLOT SELECT (MoonSound, SCC)
L'idée est en fait de...
1) Utiliser un AY-3-8910 PSG.
2) Remplacer le AY-3-8910 par un YM2149 SSG (Juste une patte à modifier)
3) Remanier le câblage pour mapper un YM2608 compatible SSG et intégrant la FM à la place du YM2149.
4) Ajouter l'OPL3 YMF262 pour la FM des OPL1, OPL3, OPL4. (voir même OPLL + OPL1 simultanément avec MS2)
5) Ajouter l'YM2413 OPLL.
Si possible:
6) Exploiter si possible l'ADPCM du YM2608 en remplacement de l'ADPCM du Y8950 MSX-AUDIO.
Nécessite d'avoir des registres identiques entre l'YM2608 et l'Y8950. (Faut voir comment c'est foutu)
Si vraiment tout est ok:
7) Remplacer l'OPL3 YMF262 par l'YMF297-F qui est hybride des familles OPLx et OPNx mais sans prises en charge des ADPCM et/ou WAV.
C'est pas gagné, mais ca mérite réflexion Edité par igal Le 26/09/2013 à 20h39
Fabf
Membre non connecté
Conseiller Municipal
galine :
marrant je n'ai jamais entendu le key click ca doit etre plus sur les msx genre clavier gomme …
Quand tu appuie sur une touche tu entends un clac qui est produit par le PPI.
Il est plus ou moins présent selon les machines, à tester sur un MSX1 en montant le volume
Fabf
Membre non connecté
Conseiller Municipal
Oui avec SCREEN
http://msxosaure.wifeo.com/basicrs.php#screen
http://msxosaure.wifeo.com/basicrs.php#screen
igal
Membre non connecté
Conseiller Municipal
Voici le schéma réduit à l'audio:
Identification des CI:
Concernant IC23 je pense pas qu'il soit nécessaire de relier les Pins 9, 10 et 11.
Faut que j'identifie précisément le CI et voir le DATASHEET pour en être sur. Edité par igal Le 08/09/2013 à 02h28
Identification des CI:
Concernant IC23 je pense pas qu'il soit nécessaire de relier les Pins 9, 10 et 11.
Faut que j'identifie précisément le CI et voir le DATASHEET pour en être sur. Edité par igal Le 08/09/2013 à 02h28
voici en gras le décodage des ports du PSG
sur la puce numérotée 23 il doit y avoir la décodage pour le port A0H sur la pin 12 , combiné aux signaux A0 A1
les autres sorties doivent aller activer d'autres adresses pour d'autres périhériques
I AY-3-8910 Programmable Sound Generator (PSG)
Port A0 PSG Index 00-0Fh (Write Only)
Port A1 PSG Data Write
Port A2 PSG Data Read
The AY-3-8910 is a I/O chip with 3 sound generators.
It controls the three MSX standard audio channels, joystick and cassette.
PSG Registers 00-0Fh are:
00 = Frequency channel A, low (0-255)
01 = Frequency channel A, high (0-15)
02 = Frequency channel B, low (0-255)
03 = Frequency channel B, high (0-15)
04 = Frequency channel C, low (0-255)
05 = Frequency channel C, high (0-15)
The actual listened frequency in Hertz is calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..4095
06 = Noise period (0-31)
The actual noise frequency in Hertz is calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..31
07 = Mixer
Bit Expl.
0 Channel A tone enable (0=Enable,1=Disable)
1 Channel B tone enable (0=Enable,1=Disable)
2 Channel C tone enable (0=Enable,1=Disable)
3 Channel A noise enable (0=Enable,1=Disable)
4 Channel B noise enable (0=Enable,1=Disable)
5 Channel C noise enable (0=Enable,1=Disable)
6 I/O port A mode (0=Input, 1=Output)
7 I/O port B mode (0=Input, 1=Output)
08 = Volume channel A (0-15, 16=Envelope)
09 = Volume channel B (0-15, 16=Envelope)
0A = Volume channel C (0-15, 16=Envelope)
0B = Envelope Frequency, low (0-255)
0C = Envelope Frequency, high (0-255)
Envelope step frequency (tone or noise) calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..65535
Depending on the envelope shape, the volume is incremented from 0 to 15, or decremted from 15 to 0. In either case it takes 16 steps to complete, the completion time for 16 steps is therefore:
T = nn*512 / 3.579545MHz ;with nn in range 0..65535 (0-9.37 seconds)
0D = Envelope shape (0-15)
CONT ATT ALT HLD
0 0 X X _________ 0-3 (same as 9)
0 1 X X /_________ 4-7 (same as F)
1 0 0 0 \\\\\ 8 (Repeating)
1 0 0 1 _________ 9
1 0 1 0 ///// A (Repeating)
1 0 1 1 """"""""" B
1 1 0 0 ////////// C (Repeating)
1 1 0 1 /""""""""" D
1 1 1 0 ///// E (Repeating)
1 1 1 1 /_________ F
0E = I/O port A (Joystick and Cassette Input)
Bit Expl.
0 Joystick Up (0=Moved, 1=Not moved)
1 Joystick Down (0=Moved, 1=Not moved)
2 Joystick Left (0=Moved, 1=Not moved)
3 Joystick Right (0=Moved, 1=Not moved)
4 Joystick button A (0=Pressed, 1=Not pressed)
5 Joystick button B (0=Pressed, 1=Not pressed)
6 Keyboard Switch (Japanese SVI machines only ?)
7 Cassette input
0F = I/O port B (Joystick Select Output)
Bit Expl.
0 1 (Used as handshaking output if touchpad)
1 1 (Used as handshaking output if touchpad)
2 1 (Used as handshaking output if touchpad)
3 1 (Used as handshaking output if touchpad)
4 Pulse 1 (Positive pulse starting a monostable timer)
5 Pulse 2 (Positive pulse starting a monostable timer)
6 Joystick select (0=Connector 1, 1=Connector 2)
7 LED Code LED, if any (0=On, 1=Off)
Bits 4 and 5 is used by a program which uses a paddle (analog-joystick). A short positive edge pulse on bit 4 (or 5) starts a monostable timer (in the attached paddle) and the paddle sets one of the joystick bits in register 14 low (FIRE A (FIRE B),L,R,D or U). When the monostable times out, the joystick bit in port 14 is set high again. The length of the counting period of the monostable timer is set (in the attached paddle) by a variable resistor. The computer can determine the position of the variable resistor by measuring the time while the joystick bit in register 14 is low.
The Code LED is included in models that have a locking function for the CODE key, such like Japanese, Russian, or Korean models which are enabling the native character set by that key, and by some US/European MSX1 BIOSes. Otherwise, if the Code key is active only when held down, no Code LED is included.
sur la puce numérotée 23 il doit y avoir la décodage pour le port A0H sur la pin 12 , combiné aux signaux A0 A1
les autres sorties doivent aller activer d'autres adresses pour d'autres périhériques
I AY-3-8910 Programmable Sound Generator (PSG)
Port A0 PSG Index 00-0Fh (Write Only)
Port A1 PSG Data Write
Port A2 PSG Data Read
The AY-3-8910 is a I/O chip with 3 sound generators.
It controls the three MSX standard audio channels, joystick and cassette.
PSG Registers 00-0Fh are:
00 = Frequency channel A, low (0-255)
01 = Frequency channel A, high (0-15)
02 = Frequency channel B, low (0-255)
03 = Frequency channel B, high (0-15)
04 = Frequency channel C, low (0-255)
05 = Frequency channel C, high (0-15)
The actual listened frequency in Hertz is calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..4095
06 = Noise period (0-31)
The actual noise frequency in Hertz is calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..31
07 = Mixer
Bit Expl.
0 Channel A tone enable (0=Enable,1=Disable)
1 Channel B tone enable (0=Enable,1=Disable)
2 Channel C tone enable (0=Enable,1=Disable)
3 Channel A noise enable (0=Enable,1=Disable)
4 Channel B noise enable (0=Enable,1=Disable)
5 Channel C noise enable (0=Enable,1=Disable)
6 I/O port A mode (0=Input, 1=Output)
7 I/O port B mode (0=Input, 1=Output)
08 = Volume channel A (0-15, 16=Envelope)
09 = Volume channel B (0-15, 16=Envelope)
0A = Volume channel C (0-15, 16=Envelope)
0B = Envelope Frequency, low (0-255)
0C = Envelope Frequency, high (0-255)
Envelope step frequency (tone or noise) calculated as follows:
F = 3.579545MHz / 32 / nn ;with nn in range 0..65535
Depending on the envelope shape, the volume is incremented from 0 to 15, or decremted from 15 to 0. In either case it takes 16 steps to complete, the completion time for 16 steps is therefore:
T = nn*512 / 3.579545MHz ;with nn in range 0..65535 (0-9.37 seconds)
0D = Envelope shape (0-15)
CONT ATT ALT HLD
0 0 X X _________ 0-3 (same as 9)
0 1 X X /_________ 4-7 (same as F)
1 0 0 0 \\\\\ 8 (Repeating)
1 0 0 1 _________ 9
1 0 1 0 ///// A (Repeating)
1 0 1 1 """"""""" B
1 1 0 0 ////////// C (Repeating)
1 1 0 1 /""""""""" D
1 1 1 0 ///// E (Repeating)
1 1 1 1 /_________ F
0E = I/O port A (Joystick and Cassette Input)
Bit Expl.
0 Joystick Up (0=Moved, 1=Not moved)
1 Joystick Down (0=Moved, 1=Not moved)
2 Joystick Left (0=Moved, 1=Not moved)
3 Joystick Right (0=Moved, 1=Not moved)
4 Joystick button A (0=Pressed, 1=Not pressed)
5 Joystick button B (0=Pressed, 1=Not pressed)
6 Keyboard Switch (Japanese SVI machines only ?)
7 Cassette input
0F = I/O port B (Joystick Select Output)
Bit Expl.
0 1 (Used as handshaking output if touchpad)
1 1 (Used as handshaking output if touchpad)
2 1 (Used as handshaking output if touchpad)
3 1 (Used as handshaking output if touchpad)
4 Pulse 1 (Positive pulse starting a monostable timer)
5 Pulse 2 (Positive pulse starting a monostable timer)
6 Joystick select (0=Connector 1, 1=Connector 2)
7 LED Code LED, if any (0=On, 1=Off)
Bits 4 and 5 is used by a program which uses a paddle (analog-joystick). A short positive edge pulse on bit 4 (or 5) starts a monostable timer (in the attached paddle) and the paddle sets one of the joystick bits in register 14 low (FIRE A (FIRE B),L,R,D or U). When the monostable times out, the joystick bit in port 14 is set high again. The length of the counting period of the monostable timer is set (in the attached paddle) by a variable resistor. The computer can determine the position of the variable resistor by measuring the time while the joystick bit in register 14 is low.
The Code LED is included in models that have a locking function for the CODE key, such like Japanese, Russian, or Korean models which are enabling the native character set by that key, and by some US/European MSX1 BIOSes. Otherwise, if the Code key is active only when held down, no Code LED is included.
igal
Membre non connecté
Conseiller Municipal
Jipe :
voici en gras le décodage des ports du PSG
sur la puce numérotée 23 il doit y avoir la décodage pour le port A0H sur la pin 12 , combiné aux signaux A0 A1
les autres sorties doivent aller activer d'autres adresses pour d'autres périhériques
I AY-3-8910 Programmable Sound Generator (PSG)
Port A0 PSG Index 00-0Fh (Write Only)
Port A1 PSG Data Write
Port A2 PSG Data Read
sur la puce numérotée 23 il doit y avoir la décodage pour le port A0H sur la pin 12 , combiné aux signaux A0 A1
les autres sorties doivent aller activer d'autres adresses pour d'autres périhériques
I AY-3-8910 Programmable Sound Generator (PSG)
Port A0 PSG Index 00-0Fh (Write Only)
Port A1 PSG Data Write
Port A2 PSG Data Read
Tu veux dire que la Combinaison [IC23 LS139] et [IC52 LS02] Suffisent à décoder l'adresse [00-0FH] nécessaire à l'exploitation AUDIO du PSG sur MSX?
Si c'est ça alors tant mieux parce que je réduis le nombre de 9 CI à 2 CI seulement
j'ai décortiqué l'adressage sortant du 74LS139
sortie
12 A0H
11 A8H
10 90H
9 98H
A0 W I AY-3-8910 PSG Sound Generator Index
A1 W I AY-3-8910 PSG Sound Generator Data write
A2 R I AY-3-8910 PSG Sound Generator Data read
A3-A7 NC Reserved
A8 R/W I 8255A/ULA9RA041 PPI Port A Memory PSLOT Register (RAM/ROM)
A9 R I 8255A/ULA9RA041 PPI Port B Keyboard column inputs
AA R/W I 8255A/ULA9RA041 PPI Port C Kbd Row sel,LED,CASo,CASm
AB W I 8255A/ULA9RA041 Mode select and I/O setup of A,B,C
90 R ULA5RA087 Centronic BUSY state (bit 1=1)
90 W ULA5RA087 Centronic STROBE output (bit 0=0)
91 W ULA5RA087 Centronic Printer Data
92-97 NC Reserved
98 R/W 9918,9929,9938,9958,9978 VRAM Data Read/Write
99 R 9918,9929,9938,9958,9978 VDP Status Registers
99 W 2nd Byte b7=0: 99X8 VRAM Address setup
99 W 2nd Byte b7=1: 99X8 VDP Register write
9A W MVDP (MSX2) 9938,9958 Color Palette Register (2 bytes)
9B W MVDP (MSX2) 9938,9958 Register data
9C-9F NC Reserved
sortie
12 A0H
11 A8H
10 90H
9 98H
A0 W I AY-3-8910 PSG Sound Generator Index
A1 W I AY-3-8910 PSG Sound Generator Data write
A2 R I AY-3-8910 PSG Sound Generator Data read
A3-A7 NC Reserved
A8 R/W I 8255A/ULA9RA041 PPI Port A Memory PSLOT Register (RAM/ROM)
A9 R I 8255A/ULA9RA041 PPI Port B Keyboard column inputs
AA R/W I 8255A/ULA9RA041 PPI Port C Kbd Row sel,LED,CASo,CASm
AB W I 8255A/ULA9RA041 Mode select and I/O setup of A,B,C
90 R ULA5RA087 Centronic BUSY state (bit 1=1)
90 W ULA5RA087 Centronic STROBE output (bit 0=0)
91 W ULA5RA087 Centronic Printer Data
92-97 NC Reserved
98 R/W 9918,9929,9938,9958,9978 VRAM Data Read/Write
99 R 9918,9929,9938,9958,9978 VDP Status Registers
99 W 2nd Byte b7=0: 99X8 VRAM Address setup
99 W 2nd Byte b7=1: 99X8 VDP Register write
9A W MVDP (MSX2) 9938,9958 Color Palette Register (2 bytes)
9B W MVDP (MSX2) 9938,9958 Register data
9C-9F NC Reserved
non tu vas trop vite dans tes raisonnements il faut toutes puces pour faire le décodage
mais on peut aussi le faire d'une autre façon plus simple car celui ci décode plusieurs périphériques
mais on peut aussi le faire d'une autre façon plus simple car celui ci décode plusieurs périphériques
igal
Membre non connecté
Conseiller Municipal
Ok je comprends pour les 9 CI et non pas 2.
Le fait qu'il me reste énormément de "Portes Logiques" non utilisées n'est pas vraiment gênant dans le sens ou par la suite, une fois le PSG/SSG fonctionnel, je voudrais "incrémenter" des Puces FM.
Ces portes me serviront sans aucun doute
Je vais donc travailler à une implantation avec tous ces CI et prévoir un max de place pour la suite
Merci de ton aide
Edit: Je suis quand même intéressé par la méthode plus simple Edité par igal Le 08/09/2013 à 16h15
Le fait qu'il me reste énormément de "Portes Logiques" non utilisées n'est pas vraiment gênant dans le sens ou par la suite, une fois le PSG/SSG fonctionnel, je voudrais "incrémenter" des Puces FM.
Ces portes me serviront sans aucun doute
Je vais donc travailler à une implantation avec tous ces CI et prévoir un max de place pour la suite
Merci de ton aide
Edit: Je suis quand même intéressé par la méthode plus simple Edité par igal Le 08/09/2013 à 16h15
Fabf
Membre non connecté
Conseiller Municipal
Je suis preneur pour un décodage complet des adresses du PSG
igal
Membre non connecté
Conseiller Municipal
@Jipe: Fabf à posté un lien qui fait référence au AY-3-8910.
Celui ci => http://www.s100computers.com/My%20System%20Pages/VDP%20Video%20Board/VDP%20Board.htm
On peut lire que:
Port #Lecture / écritureDescription
48HWÉcriture de données
49HWLoquet Adresse
48HRInutilisé
49HRLecture des données
La partie du schéma qui nous intéresse se trouve en [I 3].
http://www.s100computers.com/My%20System%20Pages/VDP%20Video%20Board/Printing%20S100_VDP-sch.pdf
Le décodage semble être celui qui convient sur MSX? Edité par igal Le 26/09/2013 à 20h28
Celui ci => http://www.s100computers.com/My%20System%20Pages/VDP%20Video%20Board/VDP%20Board.htm
On peut lire que:
Port #Lecture / écritureDescription
48HWÉcriture de données
49HWLoquet Adresse
48HRInutilisé
49HRLecture des données
La partie du schéma qui nous intéresse se trouve en [I 3].
http://www.s100computers.com/My%20System%20Pages/VDP%20Video%20Board/Printing%20S100_VDP-sch.pdf
Le décodage semble être celui qui convient sur MSX? Edité par igal Le 26/09/2013 à 20h28
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie