L'atelier MSX AUDIO et SD PADIAL touche ESC
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
Le programme :
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
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
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 ?
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 ?
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
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
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie