2009-11-12 5 views
0

Je dois faire une animation qui accélérera lorsque l'utilisateur maintiendra une touche enfoncée, et retournera à la vitesse normale lorsque la touche est relâchée. Je ne peux pas "attendre" que l'utilisateur entre une clé comme la plupart des interruptions DOS et BIOS, car cela arrêtera l'animation.x86 Entrée du clavier d'assemblage sans INT

J'ai essayé d'utiliser l'option 01H INT 16H, qui fonctionne sans mettre le programme en pause, mais elle n'efface pas non plus le tampon du clavier; ainsi l'animation restera accélérée même si la clé est relâchée, puisque la clé reste dans le tampon.

Je pense que si je peux accéder manuellement à l'emplacement mémoire du clavier, je peux le récupérer et l'effacer moi-même. Mais malheureusement je ne sais pas comment faire ça. Toute aide serait grandement appréciée.

Répondre

1

utilisent le port 060h, obtenir la clé presse & état de libération, il

-1

Il y a plusieurs problèmes avec cela. Vous ne pouvez pas scanner le port 0x60 principalement parce que le même port est partagé avec la souris. Tout d'abord, vous devez scanner le port 0x64, déterminer s'il s'agit d'un clavier ou d'une souris. Et ce n'est même pas mis en place l'interface PS/2 et l'initialisation de chaque pilote du clavier différent (peut ne pas être nécessaire, mais il rend le processus plus lisse)

Juste aller avec le bios, si vous ne regardez pas OSDev's Instructions

Questions connexes