Communication avec la souris ps2

cs_parki Messages postés 75 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 mars 2019 - 9 févr. 2014 à 13:18
cs_parki Messages postés 75 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 mars 2019 - 14 mars 2014 à 12:11
Bonjour,

j'essaie de gérer la souris ps2 par les ports 60 et 64h.Mais j'ai quelques problèmes ....
J'arrive à envoyer des commandes et à recevoir les accusés de réceptions(ACK) mais pas à lire d'autres données.
Quand j'envoie la commande E9h pour obtenir les 3 octets de status de la souris,j'ai bien en retour l'ACK mais les octets suivants sur le port 60h me donnent toujours la valeur de l'ack ????
je suis sous dosxbox avec Windows 8 (donc souris déjà initialisée)

qu'est ce qui ne va pas ?

voici le code


org 100h

%macro affiche 4
	;%1=x,%2=y,%3=LPtext,%4=couleur
	mov si,%3
	mov bx,%1
	mov di,%2
	mov ah,%4
	call VGA3
%endmacro
	
mov ax,cs
mov ds,ax

;passage en mode texte 80*25 16 couleurs

mov ah,0	
mov al,3h
int 10h

;tester souris

boucle:
cli
call souris
sti

;fin

ret

;-----------------------
souris:
	cli
	mov ah,0D4h	;communication avec la souris demandée
	call CMDsourisPS2

	mov ah,0E9h	;demande 3 octets de status
	call CMDsourisPS2

	;réponse dans le buffer de sortie ?

	mov cx,50	;50 tentatives
souris1:
	in al,64h
	test al,1	;y a qqchose pour nous en buffer sortie ?
	loope souris1	

	mov cx,100
tempo:	
	loop tempo

	in al,60h    ;ici al vaut toujours ACK (FAh)
	sti
ret


CMDsourisPS2:

;le buffer d'entrée est il libre ?
PS2_1:
	in 	al,64h	;lecture du registre d'état	
	test 	al,10b	;bit 1 armé ?
	jnz 	PS2_1 	;non on attend

;on envoie notre commande:
	mov 	al,ah
	out	60h,al
	
;a t'on une réponse dans le buffer de sortie ?
PS2_2:	
	in 	al,64h	;lecture du registre d'état
	test 	al,1	;bit 1 armé ?
	jz 	PS2_2 	;non on attend

;on attend l'accuse de réception sur 60h
PS2_3:
	in	al,60h
	cmp	al,0FAh
	jne	PS2_3	;on boucle tant que pas ack produit par controleur
			;(dès qu'on a lu,le buffer de sortie est vide)
ret			

 

5 réponses

il y a une commande bios pour activer la souris ou directement sur un port, je ne sais plus. L'interruption peut aussi etre activé pour la souris PS2 mais je crois que c'est uniquement pour les systemes MCA.

Je ne suis pas chez moi et il me manque "PC programmation system" et je n'ai pas encore trouvé ce que je cherche sur google. Mais chez moi, je n'ai plus internet, ... zut de zut.

Si je trouves plus d'info, je te dis ça...

regarde par là:
http://wiki.osdev.org/Mouse_Input#PS2_Mouse_--_Basic_Operation_.28Microsoft_compliant.29
0
cs_parki Messages postés 75 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 mars 2019
15 févr. 2014 à 14:21
Merci pour le lien patatalo,je vais potasser tout ça.

--
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
10 mars 2014 à 23:02
Le problème peut venir du fait que le PC est trop rapide pour la souris utilisée. On peut le vérifier en insérant un petit délai à la suite des commandes d'entrée ou sortie souris. Par exemple:
...
out 60h,al
jmp $+2 ; vide le cache
in al,64h
...
.Amicalement
0
Guilou34 Messages postés 142 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 29 janvier 2016 1
13 mars 2014 à 10:48
-D'après "The Indispensable PC Hardware Book" de H.P.Messmer, le port du clavier est partagé avec la souris PS 2.
Il faut donc pour dialoguer avec celle ci la sélectioner avec la commande D4h.
Exemple pour "set scaling 2-1" :

Out 4h,d4h ; command write auxiliary device for controller
wait:
In al,64h ; read status register
test al,02h ;chek wheter input buffer is empty
jnz wait ;input buffer full, thus wait
out 60,e7h ;commznd "set scaling" for mouse

Plusieurs pages sont consacrées à la souris PS2, je peux les scanner et de les faire parvenir mais comment?
Amicalement


--
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_parki Messages postés 75 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 25 mars 2019
14 mars 2014 à 12:11
Merci gilou34,je t'ai envoyé un MP.


--
0
Rejoignez-nous