MSX Village forum

L'atelier MSX AUDIO et SD PADIAL touche ESC

GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 28/08/2016 à 11h06

Reprise du message précédent

msx45 :
Tu fais comment pour trouver les codes des touches ?


Dans l'entête de la ROM, on voit que la ROM démarre à 4030h. En suivant un peu le programme à cette endroit, on tombe sur un CALL 0141h (CD 41 01). Dans le Bios, à cette adresse, c'est la routine de lecture des touches du clavier. En regardant dans le Pratique du MSX, on voit que le registre A doit contenir le numéro de ligne de la matrice du clavier à scruter. Toujours dans le pratique du MSX, si on trouve des exemples de matrices de clavier. ESC est à la ligne 7, bit 2. Sur la même ligne, il y a les touches RET, SELECT, BS, STOP, TAB, ESC, F4 et F5.

En sortie de la routine 0141h A contient la valeur de la ligne scrutée. Il suffit donc de changer la condition qui suit le CALL 0141h pour tester la touche correspondante. La condition qui sert à tester les bits du registre A est BIT x,A (CB 47/4F/57/5F/67/6F/77/7F). Pour connaitre les instructions machine du Z80, il faut par exemple se servir de ce PDF :



http://www.msxvillage.fr/forum/topic.php?id=1101



Pour tester une autre touche que celles que j'ai données, il fait mettre un autre numéro de ligne dans A. Il faut connaitre les matrices des claviers pour ça. C'est pour cela que j'avais ouvert ce sujet avant :



http://www.msxvillage.fr/forum/topic.php?id=1668 Edité par GDX Le 28/08/2016 à 11h37
   
msx45 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 09/12/2009 à 21h08

Messages: 869

Le 28/08/2016 à 13h14
J'ai tapé ton petit programme
J'ai bien ROW et BIT qui s'affiche quand j'appuie sur une touche

Mais je ne comprend toujours pas comment on arrive au code HEXA
E-mail    
GDX Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 17/01/2011 à 08h52

Messages: 3004

Le 28/08/2016 à 14h22
Le programme :
Code TEXT :
LD A,7; 3E 07 (ligne 7)
CALL 141h; CD 41 01
BIT 2,A; CB 57 (teste la touche ESC)
JR NZ,saut; 20 02 (saute à "saut:" si le bit 2 est à 1)
JR plusbas; 18 19
saut:


Pour le code, si tu regardes le tableau des instructions machine du Z80, tu verras que :
BIT 0,A = CB 47
BIT 1,A = CB 4F
BIT 2,A = CB 57
BIT 3,A = CB 5F
BIT 4,A = CB 67
BIT 5,A = CB 6F
BIT 6,A = CB 77
BIT 7,A = CB 7F

Regarde les matrices de clavier pour connaitre la valeur de A à mettre en entrée et le bit à tester en sortie. Edité par GDX Le 28/08/2016 à 15h18
   
msx45 Membre non connecté

Villageois

Rang

Avatar

Inscrit le : 09/12/2009 à 21h08

Messages: 869

Le 28/08/2016 à 18h26
Désolé c'est toujours pas clair pour moi
Pour l’instruction BIT c'est ok (c'est la ligne ou se trouve la touche qui donne le n° de BIT)

C'est la valeur de A que je comprend pas
J'ai beau regarder les matrices de clavier.....
Tu peux prendre un cas concret et détailler ?
E-mail    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10351

Le 28/08/2016 à 22h26
c'est expliqué dans assembleur et périphérique des msx

http://www.passionmsx.org/modules/mydownloads/singlefile.php?cid=76&lid=218

Bit b,op
le bit b de l'opérande spécifié est testé
s'il est a 1 l'indicateur Z est mis a 0
s'il est a 0 Z est mis a 1

dans le programme on charge A a 7 numéro de ligne

suivant la colonne voulue on test le bit correspondant BIT 2,A dans l'exemple

le code BIT 2,A correspond au code machine CB57


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