MSX Village forum

La Place des Développeurs Les matrices des claviers MSX

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 25/01/2013 à 13h49
Le clavier d'un MSX est géré par une puce appelée PPI. Cette puce scrute la matrice du clavier afin de savoir quelle touche est pressée ou pas.
Je me suis rendu compte qu'il y a peu de documentation sur les matrices existantes. Le standard lui-même est assez vague d'ailleur. Pourtant, la matrice peut varier beaucoup selon que le type de clavier et même d'un MSX à l'autre ayant pourtant le même type de clavier. En gros, chaque MSX a une matrice différente.

Les bits 0-3 de l'adresse 002Ch du BIOS sont sensés indiquer le type de clavier d'origine mais là aussi c'est tout aussi vague. Impossible de savoir si le clavier est arabe, russe ou coréen !

Voici les infos les plus complète que j'ai trouvés :

http://map.grauw.nl/articles/keymatrix.php


Je propose donc un petit programme BASIC qui permet de connaitre l'état de la matrice pour chaque touche pressée de votre MSX afin de compléter les informations dans le but de faire une doc sur un maximum de clavier dans le Wiki. Les possesseurs d'MSX arabe, allemand, coréen, espagnol, portugais, etc sont les biens venu.

Code TEXT :
5 ' Keyboard Matrix Tester
6 '
10 CLS:DEFINTA-Z
20 FOR R=0 TO 10
30 L=PEEK(&HFBE5+R)XOR255
40 FOR B=0 TO 7
50 IF L=2^B THEN LOCATE1,1:PRINT"Row=";R;" Bit=";B
60 NEXT:NEXT:GOTO20


Voici le tableau prêt à compléter :

Code TEXT :
[table style="text-align: center;"]
[row]
[col]Ligne[/col]
[col]bit 7[/col]
[col]bit 6[/col]
[col]bit 5[/col]
[col]bit 4[/col]
[col]bit 3[/col]
[col]bit 2[/col]
[col]bit 1[/col]
[col]bit 0[/col]
[/row]
[row]
[col]Row 1[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 2[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 3[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 4[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 5[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 6[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 7[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 8[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row 9[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[row]
[col]Row10[/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[col][/col]
[/row]
[/table]


Vous avez juste à copier le tableau le compléter à l'aide du programme BASIC.

Les lignes 9 et 10 ne sont pas utilisés sur les MSX n'ayant pas de pavé numérique sauf le MSX Pioneer PX-7 qui utilise la ligne 9 pour ses 3 touche spécifiques. Le clavier du Turbo R et les MSX2+ de Panasonic a une ligne 11 qui est aussi indiquée au lien donné plus haut.

Pour les combinaisons de touches, je devrais pouvoir me débrouiller avec la photo du clavier.

Je remercie d'avant ceux qui participerons. Edité par GDX Le 26/01/2013 à 11h56
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10318

Le 25/01/2013 à 18h03
j'ai tapé ton programme et lancé sur mon 8280/00 transformé MSX2+

j'ai ensuite comparé les valeurs avec la matrice donnée dans le manual service et ça correspond bien

la matrice Y correspond au Row et la matrice X correspond aux Bits

X0' et X0 , X2' et X2 , X4' et X4 , X5' et X5 correspondent respectivement aux même bit car ils sont reliés par une diode

Y11 12 et 13 correspondent a Y6 et y sont reliés pas 3 diodes

avec ce décodage ça peux éviter une longue saisie pour les machines dont on a le schéma de la matrice

a vérifier quand même la concordance de la matrice avec le programme basic


:noel
Site web    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 26/01/2013 à 07h36
J'ai créé le tableau de 2 Matrices de claviers MSX1 AZERTY partir de quelques infos et photos.
Le caractère à droite correspond à celui obtenu avec la touche SHIFT maintenue.

Yeno DPC-64 :

Ligne bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Row 1 è 7 § 6 ( 5 ' 4 " 3 é 2 & 1 à 0
Row 2 m M $ * ^ ¨ < > - _ ° ) ç 9 ! 8
Row 3 b B q Q DEAD = + : / ; . # £ ù %
Row 4 j J i I h H g G f F e E d D c C
Row 5 r R a A p P o O n N , ? l L k K
Row 6 w W x X y Y z Z v V u U t T s S
Row 7 F3 F8 F2 F7 F1 F6 CODE CAP GRAPH CTRL SHIFT
Row 8 RET SELECT BS STOP TAB ESC F5 F10 F4 F9
Row 9 SUP INS Home CLS SPACE

Canon V-20, Sanyo PHC-28 et Yeno MX-64 :

Ligne bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
Row 1 7 è 6 § 5 ( 4 ' 3 " 2 é 1 & 0 à
Row 2 m M $ * ^ ¨ < > - _ ) ° 9 ç 8 !
Row 3 b B q Q DEAD = + : / ; . # £ ù %
Row 4 j J i I h H g G f F e E d D c C
Row 5 r R a A p P o O n N , ? l L k K
Row 6 w W x X y Y z Z v V u U t T s S
Row 7 F3 F8 F2 F7 F1 F6 CODE CAP GRAPH CTRL SHIFT
Row 8 RET SELECT BS STOP TAB ESC F5 F10 F4 F9
Row 9 SUP INS Home CLS SPACE

Clavier du Yeno MX-64 : SUP = Back Space et Home/CLS = EFE/DEP. Il n'y a pas de touche DEAD.
Clavier du Canon V-20 : Home/CLS = EFE/DEP. Il n'y a pas de touche DEAD.
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/01/2013 à 09h28
Regarde dans ma collection si une machine est intéressante ;)
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 26/01/2013 à 11h55
J'ai vérifié avec mon programme le tableau du Turbo R qu'il y a sur la page de MSX Assembly. Tout correspond sauf la ligne 11 pour les touches "YES" et "NO". En fait, je pense qu'on parle des 2 touches [取消] et [実行] mais elles ne produisent aucun effet avec mon programme car la ligne 11 n'a pas l'air d'être mémorisée dans les variables du système. En tout cas, elle n'est pas mémorisée à l'adresse 0FBF0H.

Fabf,

Il serait intéressant de vérifier mes tableaux et de faire un tableau pour les Gradiente, un autre pour les Hot bit et un pour le SVI728.


PS : Quand je vais sur ton site :

http://msx.fab.free.fr/mpc.msx/

ça me dit que le serveur suivant est introuvable.

http://siravo.fabrice.free.fr/liste.htm

Il y a aussi d'autres pages qui sont absentes.

À l'URL suivant, ça marche.

http://msx.fab.free.fr/mpc/
Edité par GDX Le 26/01/2013 à 13h26
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 26/01/2013 à 20h00
Non ce n'est pas mon site.
Tu peux voir la liste de mes machines dans le wiki du village ;)
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 27/01/2013 à 09h57
GDX :
Il serait intéressant de vérifier mes tableaux et de faire un tableau pour les Gradiente, un autre pour les Hot bit et un pour le SVI728




Il suffit juste que je lance ce petit programme sur le Gradiente DD Plus?

Code TEXT :
 
5 ' Keyboard Matrix Tester
6 '
10 CLS:DEFINTA-Z
20 FOR R=0 TO 10
30 L=PEEK(&HFBE5+R)XOR255
40 FOR B=0 TO 7
50 IF L=2^B THEN LOCATE1,1:PRINT"Row=";R;" Bit=";B
60 NEXT:NEXT:GOTO20
 




RUN et c'est tout?


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 27/01/2013 à 10h20
Oui et ensuite tu presses une touche, une par une, pour afficher sa position sur la matrice. Ça prend 2 minutes pour remplir un tableau.

(Il faut appuyer un peu moins d'une seconde sur la touche, le temps quelle soit prise en compte.)
   
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 23/08/2013 à 17h32
J'ai trouvé différentes matrices japonaises :

http://www.geocities.jp/atx197/msx_spkb1.htm
   
bpmsx Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 20/03/2013 à 19h45

Messages: 481

Le 23/08/2013 à 22h02
pourrais ton rajouté sur un msx1 un paver numerique en recablant les ligne 10 et 11 ou faut t'il changer d'autre composant


bpmsx
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 23/08/2013 à 22h15
Non il manque la dernière ligne sur les modèles à base de PPI
http://www.msxvillage.fr/forum/topic.php?id=1741&pt=1
bpmsx Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 20/03/2013 à 19h45

Messages: 481

Le 24/08/2013 à 11h33
ce qui est different c'est le 74ls145 qui stop a 10 ligne cause du boitier 16 pins alors que sur 4 lignes (A B C D)on peut traiter 16 etats


bpmsx
   
Fabf Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 24/08/2010 à 20h55

Messages: 4833

Le 24/08/2013 à 11h47
Intéressant, tu vois quoi comme composant ?
Un 74LS154 ?
bpmsx Membre non connecté

Villageois

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 20/03/2013 à 19h45

Messages: 481

Le 24/08/2013 à 11h59
pourquoi pas si les tensions son les mêmes, mais il faut voir si le bios suit ou si il faut modifier


bpmsx
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 08/05/2015 à 12h59


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie