MSX Village forum

L'école Pratique du MSX2 corrigé et amélioré

TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5793

Le 28/07/2016 à 16h30

Reprise du message précédent

http://www.msxvillage.fr/forum/topic.php?id=691#m11553
Le 3eme bouton du GB7s ca doit etre les 2 autres bouton en meme temps :siffle



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

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 28/07/2016 à 16h31
Oui, c'est indiqué dans le manuel de service.
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10333

Le 28/07/2016 à 18h21
il y a quand même 2 diodes anti retour sur le schéma ;)


:noel
Site web    
Sebbeug Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h33

Messages: 2248

Le 06/12/2016 à 17h22
Faudrait le rééditer ce bouquin modifié !
Top !


Clé de sol

Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1486

Le 07/12/2016 à 15h41
gdx, j'ai relevé une erreur page 232.

Code :
ld e,10001000b ; Active la voix 1
call WRTPSG
ret


Les valeurs des bits du registre 7 du PSG doivent être inversées :'0' pour activer, '1' pour neutraliser.
Et de toutes façons, le bit à 1 serait mal positionné pour activer la voix 1 (là, il active le générateur de bruit blanc sur la voix 1).
Il faudrait écrire :

Code :
ld e,10111110b ; Active la voix 1
call WRTPSG
ret


Et la remarque est valable aussi pour le petit programme en BASIC juste en dessous.

EDIT : Et d'ailleurs, je me rends compte que le tableau de la page 233 est faux également pour le registre 7.

Les bits 0,1,2 contrôlent l'activation (bit à '0') et la désactivation (bit à '1') du son (et non pas du bruit).
Les bits 3,4,5 contrôlent l'activation (bit à '0') et la désactivation (bit à '1') du bruit (et non pas du son). Edité par Metalion Le 07/12/2016 à 16h02


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 08/12/2016 à 00h34
En fait non, l'erreur est dans le tableau, pas dans l'exemple. Il faut bien mettre 10001000b pour activer le générateur sonnore sur la voix 1. Merci, je corrige ça très bientôt.

La bonne explication est :
Les bits 0,1,2 servent à activer (bit à 1) et désactiver (bit à 0) le générateur de bruit.
Les bits 3,4,5 contrôlent à activer (bit à 1) et désactiver (bit à 0) le générateur de bruit sonore.

Le tableau de clef pour MSX est faux aussi.
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1486

Le 08/12/2016 à 09h35
Non, GDX, la bonne explication est bien celle que j'écris plus haut (double erreur sur la position des bits et sur leur signification) :

- Les bits 0,1,2 contrôlent l'activation (bit à '0') et la désactivation (bit à '1') du son (et non pas du bruit).
- Les bits 3,4,5 contrôlent l'activation (bit à '0') et la désactivation (bit à '1') du bruit (et non pas du son).

Il te suffit de faire un petit programme en BASIC avec l'instruction SOUND pour le vérifier.

Extrait du MSX2 Technical Handbook (confirmé dans le MSX Red Book)
Code :
    B7       B6          B5      B4      B3        B2    B1    B0
-----------------     -------------------------     -------------------------
| Input enable* |     |     Noise enable*     |     |      Tone enable*     |
|---------------|     |-----------------------|     |-----------------------|
|   B    |   A  |     |   C   |   B   |   A   |     |    C   |    B   | A   |
-----------------     -------------------------     -------------------------
 I/O port             Noise output          Tone output
   Input - 0          ON - 0                ON - 0
   Output - 1         OFF - 1               OFF - 1


Et surtout, tu peux aussi le vérifier dans le datasheet du AY-3-8910 :
http://map.grauw.nl/resources/sound/generalinstrument_ay-3-8910.pdf Edité par Metalion Le 08/12/2016 à 09h44


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 08/12/2016 à 23h51
Ces programmes d'exemple ont été testés et re-testé. Entre la ligne suivante, tu verras que ça marche.

SOUND 0,&hAC: SOUND 1,1: SOUND 8,&b1100 : SOUND 7,&b10001000

Ça joue un DO octave 4 sur la voix 1 avec un volume à 12.

Edit: Avant il vaut mieux initialiser les registres avec le programme suivant.

10 FOR R=0 TO 13
20 IF R=7 THEN SOUND R,&B10000000 ELSE SOUND R,0
30 NEXT

Edité par GDX Le 09/12/2016 à 09h50
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1486

Le 09/12/2016 à 08h56
GDX :
Entre la ligne suivante, tu verras que ça marche.

Ca marche parce que tu actives les 3 voix en même temps (bits à zéro sur les 3 premiers bits).
Donc, forcément la voix 1 est activée !!!

Je t'invite à faire ce petit test, qui va te confirmer ce que j'ai écrit :

SOUND7,&b10111111: SOUND1,15:SOUND3,12:SOUND8,10:SOUND9,10

Selon ce que tu dis, là on a activé toutes les voix (et même le bruit blanc sur toutes les voix, d'ailleurs).
Et mis le volume à 10 sur les 2 premières voix. Et pourtant ... Aucun son ne sort ! Ni aucun bruit blanc.
Je te mets d'ailleurs au défi de sortir un son du PSG sur quelque voix que ce soit avec cette valeur du registre 7 !
Puisqu'en fait, toutes les voix et le générateur de bruit sont neutralisés (bit 0 - 5 à 1).

SOUND7,&b10111110

Là le son de la première voix se fait entendre (puisque l'on vient en fait seulement d'activer la voix 1 en mettant le bit 0 à 0).

SOUND7,&b10111101

Le son de la voix 1 disparait et le son de la voix 2 apparait (bit 1 à 0).

SOUND7,&b10111100

La, les 2 sons sont joués en même temps.

Des erreurs de retranscription, pourquoi pas, mais je doute que General Instrument ait pu commettre une aussi grossière erreur dans le manuel technique de son IC AY-3-8910 (voir mon lien dans le message précédent) !!! ... Surtout quand c'est confirmé par les tests.

PS : Tu remarqueras que mes tests n'ont pas besoin de ton programme d'initialisation ... Parce que justement, ta commande SOUND7,&b10001000 active les 3 voix en même temps (10001000) ainsi que le générateur de bruit sur les voix 2 et 3 (10001000). Il est donc alors nécessaire de mettre le volume des voix 2 et 3 à zéro pour éviter la cacophonie ... Edité par Metalion Le 09/12/2016 à 09h39


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 09/12/2016 à 10h11
C'est corrigé !

pratique_du_MSX.zip

Heureusement que tu persistes. Edité par GDX Le 04/06/2017 à 06h28
   
Franck Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 22h54

Messages: 3295

Le 09/12/2016 à 10h53
Du débat naît la lumière comme je dis toujours, bravo pour vos échanges d'experts ^^
   
popolon Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 28/07/2010 à 22h07

Messages: 219

Le 09/12/2016 à 12h42
j'ai pas eu le temps de répondre ce matin mais Metalion a bien résumé
et bien fait d'avoir insisté ;)

et pour ceux qui veulent aller plus loin qu'une note, frèère jaacques... :
http://msxvillage.fr/forum/topic.php?id=569 Edité par popolon Le 09/12/2016 à 12h45
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 15/06/2017 à 12h42
J'ai pas mal réfléchi avant, et ça serait dommage de priver tout le mode de ce document tout ça à cause deux personnes. Donc revoici, le Pratique du MSX avec de nombreuses corrections et ajouts.

pratique du MSX.zip

Les variables EXPTBL et MNROM (0FCC1h~0FCC4h) sont maintenant bien expliquées. Le PSG est tout détaillé. L'entête des ROM aussi.
J'ai ajouté une liste sur les ports E/S, des exemples de recherche de RAM, et plein d'autres choses.
   
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5793

Le 15/06/2017 à 13h41
Cool Merci ! :top
C'est une bible ce bouquin :)



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

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 12/05/2018 à 23h00

Messages: 553

Le 15/06/2017 à 16h14
merci GDX :)

section 11.3 Le « PRINT » en assembleur

je remplacerais le "CP 0" par "AND A"


Toute matrice carrée sur un corps K, dont le polynôme caractéristique est scindé, est semblable à une matrice de Jordan. Cette réduction est unique à l'ordre des blocs près. De plus, toute matrice carrée nilpotente sur un corps K est semblable à une matrice de Jordan dont chaque bloc est associé à la valeur 0. Évidement, cette réduction est encore unique à l'ordre des blocs près...
:)
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1486

Le 16/06/2017 à 10h32
merci GDX :)

Sector28bis:
section 11.3 Le « PRINT » en assembleur

je remplacerais le "CP 0" par "AND A"


Je ne le remplacerai pas.

Il ne faut pas oublier que ce livre est pédagogique et s'adresse à tous ceux qui veulent programmer en assembleur. Les débutants ont besoin de comprendre qu'on compare l'accumulateur à la valeur zéro, en utilisant les opérandes classiques. Et donc en faisant "CP 0".

Plus tard, ils comprendront que l'on peut remplacer cette opération en utilisant "AND A", mais cela fait partie des optimisations, des trucs et astuces en assembleur Z80.

Ce qui est important ici, c'est de comprendre la structure logique du programme, pas de l'optimiser.





MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie