![]() ![]() ![]() |
![]() Nous allons couper l'interruption automatique clavier (auto-int 2) et utiliser les ports clavier.
|
![]() ![]() ![]() |
||||
![]()
Tout d'abord laissez le calcul se faire sans déclencher la routine de l'interruption clavier, c'est à dire sans toucher à une ou plusieurs touches, j'ai relevé un temps de 16"8 secondes. Maintenant laissez appuyé une ou plusieurs touches pendant le calcul, la routine est donc appelée et le ralentissement est clairement visible à l'écran (dans la progression du pourcentage), j'ai relevé un temps de 26"8 seconde.
![]() Nous allons utiliser directement ce port et par conséquent remplacer temporairement le travail de l'interruption clavier. |
![]() ![]() ![]() |
||||
![]() PROGRAMMATION
Maintenant, nous voilà prets à lire le port clavier en nous aidant de la matrice clavier. |
![]() ![]() ![]() |
![]() Donc pour savoir si telle ou telle touche a été pressée, il va falloir opérer de la même manière que pour jouer à la bataille navale ;o)
Concretement il faut masquer le mot à l'adresse $600018, c'est à dire armer (=1) toutes les lignes que nous ne voulons plus et désarmer (=0) celle qui nous intéresse.
Attention la TI-92II se démarque de la TI-92 sur ce point précis : Dans le but de rendre "compatible" un programme FargoII pour les TI-92 et les TI-92II, nous utiliserons le nombre d'instruction NOP pour la TI-92II, la meilleur valeur étant naturellement celle de la routine de l'interruption clavier elle-même qui en utilise six.
![]() |
![]() ![]() ![]() |
||||
![]() Car bien que fonctionnant, celle-ci ne fera jamais appel à la routine qui retourne les informations à la TI-92 et notre calculatrice fera comme si de rien n'était. Pour cela il va falloir desarmer les bits 8, 9 et 10 du registre de statut SR avec l'instruction TRAP. PROGRAMMATION
Vous pouvez désormais utiliser à nouveau le buffer clavier raffraichi par l'interruption clavier à chaque appuie sur une touche. |
![]() ![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]()
![]() Pour savoir à quelle touche appartient tel scancode il suffit de faire le parallèle avec la matrice clavier, par exemple la touche [F6] a pour scancode $2D (les scancodes sont donnés en hexadécimal) :
|
![]() ![]() |
||||||||
![]() Celui-ci est desarmé (=0) si la touche [ON] est appuyée, dans le cas contraire il est armé (=1). PROGRAMMATION
|
Zguide © 1998, Florian DREVET. Tous droits réservés à l'échelle mondiale