LA SOURIS

Comment programmer l'un des périphériques les plus utilisés ?
(Dernière modification le 04/06/97)

SOMMAIRE

Introduction.................................................................................................................	Page 3	
Fonction 00h - Etat et réinitialisation de la souris.......................................................	Page 4	
Fonction 01h - Affichage du pointeur de la souris......................................................	Page 5	
Fonction 02h - Masquage du pointeur de la souris.....................................................	Page 5	
Fonction 03h - Etat des boutons et position de la souris.............................................	Page 5	
Fonction 04h - Positionnement du pointeur de la souris.............................................	Page 6	
Fonction 05h - Etat des boutons de la souris (enfoncé)..............................................	Page 6	
Fonction 06h - Etat des boutons de la souris (relâché)................................................	Page 7	
Fonction 07h - Valeur maximal et minimale de colonne............................................	Page 7	
Fonction 08h - Valeur maximal et minimal de ligne...................................................	Page 8	
Fonction 09h - Forme du pointeur graphique..............................................................	Page 8	
Fonction 0Ah - Forme du pointeur texte.....................................................................	Page 9	
Fonction 0Bh - Lecture du compteur de déplacements de la souris............................	Page 9	
Fonction 0Ch - Définition des masques et adresses d'interruption.............................	Page 10	
Fonction 0Dh - Activation de l'émulation du crayon optique.....................................	Page 11	
Fonction 0Eh - Désactivation de l'émulation du crayon optique.................................	Page 11	
Fonction 0Fh - Définition du rapport mickeys/pixels.................................................	Page 12	
Fonction 10h - Désactivation conditionnelle de l'affichage du pointeur de souris.....	Page 12	
Fonction 13h - Point de départ pour la double vitesse................................................	Page 13	
Fonction 14h - Lecture et modification des masques et des adresses d'interruption...	Page 13	
Fonction 15h - Taille du tampon pour l'état du gestionnaire de la souris...................	Page 14	
Fonction 16h - Enregistrement de l'état du gestionnaire de souris..............................	Page 15	
Fonction 17h - Restaurer l'état du gestionnaire de souris............................................	Page 15	
Fonction 18h - Masque et adresses d'interruption étendus..........................................	Page 15	
Fonction 19h - Lecture d'adresses d'interruption étendues..........................................	Page 17	
Fonction 1Ah - Modification de la sensibilité de la souris..........................................	Page 18	
Fonction 1Bh - Lecture de la sensibilité de la souris..................................................	Page 18	
Fonction 1Ch - Fréquence d'interruption de la souris.................................................	Page 19	
Fonction 1Dh - Définition du numéro de la page écran..............................................	Page 19	
Fonction 1Eh - Lecture du numéro de la page écran...................................................	Page 19	
Fonction 1Fh - Désactiver le gestionnaire de souris...................................................	Page 20	
Fonction 20h - Activer le gestionnaire de souris.........................................................	Page 20	
Fonction 21h - Réinitialisation logicielle....................................................................	Page 20	
Fonction 22h - Langue utilisée....................................................................................	Page 21	
Fonction 23h - Lecture des numéro des langues.........................................................	Page 22	
Fonction 24h - Obtention d'informations concernant la configuration.......................	Page 23	

Introduction : 

	Cette documentation n'a pas la prétention d'être complète, il manque certainement des choses, et il est certainement possible d'optimiser les sources. Mais si une personne rencontre ces problèmes quelle n'hésite surtout pas à m'en faire part.

L'interruption 33h - Gestion de la souris 

l'interruption 33h sert d'interface avec le gestionnaire de la souris. Les paramètres nécessaires à la fonction sont transmis via les registres du processeur. 

Fonction 00h - Etat et réinitialisation de la souris 

Entrées  :  AX = 00h 
Sorties   :  AX = Etat 
 		     BX = Nombre de boutons 

* Cette fonction retourne l'état actuel de la souris (état matériel et logiciel). 

* Le code d'état indique si une souris est installée. S'il est égal à FFFFh, une souris est installée ; par contre, s'il est égal à 0000h, aucune souris n'est installée. 

* La valeur retournée dans le registre BX représente le nombre de boutons dont est dotée la souris. 

* Si une souris est connectée, cette fonction initialise l'interface. Les valeurs standard présentées au Tableau Fig.1 sont alors appliquées. 

Paramètre	Valeur standard	
Position	Centre de l'écran 	
Indicateur du curseur	FFFFh (curseur désactivé) 	
Curseur graphique	flèche 	
Curseur texte	Rectangle 	
Masque d'interruption	0000h (aucune interruption) 	
Crayon optique	Pas d'émulation 	
Rapport horizontal	8 sur 8 	
Rapport vertical	l6 sur 8 	
Vitesse double	16 mickeys par seconde 	
Valeur minimale de colonne	0000h 	
Valeur minimale de ligne	0000h 	
Valeur maximale de colonne	Valeur X maximale - l 	
Valeur maximale de ligne	Valeur Y maximale - l 	
Numéro de page	00h 	

Tableau Fig.1 : Les valeurs de réglage standard de la souris. 

Fonction 01H - Affichage du pointeur de la souris

Entrées  : AX = 01h 
Sorties   : Aucune 

* Cette fonction permet d'activer le pointeur de souris en cours et de l'afficher à l'écran. 

* Une fois l'affichage du pointeur activé, la souris se déplace conformément aux paramètres actuellement définis. 

* Si cette fonction est appelée alors que l'affichage du pointeur de la souris est déjà activé, elle reste sans effet. 

Fonction 02h - Masquage du pointeur de la souris 

Entrées  : AX = 02h 
Sortie     : Aucune 

* Cette fonction permet de désactiver le pointeur de souris.

* Une fois l'affichage du pointeur désactivé, les mouvements imprimés à la souris ne sont plus pris en compte. 

* Si cette fonction est appelée alors que l'affichage du pointeur de la souris est déjà désactivé, elle reste sans effet. 

* Le pointeur de la souris doit toujours être désactivé à l'aide de cette fonction avant tout changement de mode vidéo. 

Fonction 03h - Etat des boutons et position de la souris 

Entrées  : AX = 03h 
Sorties   : BX = Etat des boutons de la souris 
    CX = Colonne occupée actuellement par le curseur 
    DX = Ligne occupée actuellement par le curseur 

* A chaque bouton de la souris correspond un bit dont la valeur reflète l'état : le bit 0 correspond au bouton gauche, le bit l au bouton droit. 

* Lorsqu'un bit est égal à 1, le bouton auquel il correspond est enfoncé. Par contre, s'il est égal à 0, le bouton est relâché. 
* Les registres CX et DX Indiquent la position du curseur de la souris sur l'écran. Les coordonnées spécifiées sont celles de l'écran virtuel 
Fonction 04h - Positionnement du pointeur de la souris 

Entrées :  AX = 04h 
		    CX = Colonne 
	    DX = Ligne 
Sorties  :  Aucune 

* Cette fonction positionne le curseur de la souris à un emplacement particulier de l'écran. 

* Les registres CX et DX spécifient la position du curseur de la souris sur l'écran. Les coordonnées spécifiées sont celles de l'écran virtuel. 

Fonction 05h - Etat des boutons de la souris (enfoncé) 

Entrée  : AX = 05h 
  BX = Bouton de la souris 
Sorties : AX = Etat 
  BX = Compteur 
  CX = Colonne occupée par le curseur lorsque le bouton a été enfoncé pour la 
dernière fois 
  DX = Ligne occupée par le curseur lorsque le bouton a été enfoncé pour la 
dernière fois 

* Vous devez spécifier dans le registre BX sur quel bouton la fonction doit porter. Si vous spécifiez la valeur 00h, II s'agira du bouton gauche. Si vous spécifiez la valeur 0lh, il s'agira du bouton droit. 

* Au retour de la fonction, vous pouvez savoir en consultant le registre AX si le bouton de la souris est enfoncé (AX = 0lh) ou relâché (AX = 00h). 

* Le compteur du registre BX indique le nombre de fois où le bouton de la souris a été enfoncé depuis la dernière interrogation. 

* Les valeurs retournées pour la position du curseur correspondant à la position occupée par le curseur sur l'écran la dernière fois que le bouton en question a été enfoncé. 

Fonction 06h - Etat des boutons de la souris (relâché) 

Entrées : AX = 06h 
   BX = Bouton de la souris 
Sorties :  AX = Etat 
   BX = Compteur 
   CX = Colonne occupée par le curseur lorsque le bouton a été relâché pour la  
            	 dernière fois 
   DX = Ligne occupée par le curseur lorsque le bouton a été relâché pour la     
            	 dernière fois 

* Vous devez spécifier dans le registre BX sur quel bouton la fonction doit porter. Si vous spécifiez la valeur 00h, II s'agira du bouton gauche. Si vous spécifiez la valeur 0lh, Il s'agira du bouton droit. 

* Au retour de la fonction, vous pouvez savoir en consultant le registre AX si le bouton de la souris est enfoncé (AX = 01h) ou relâché (AX = 00h). 

* Le compteur du registre BX indique le nombre de fois où le bouton de la souris a été enfoncé depuis la dernière interrogation. 

* les valeurs retournées pour la position du curseur correspondent à la position occupée par le curseur sur l'écran la dernière fois que le bouton en question a été relâché. 

Fonction 07h - Valeur maximale et minimale de colonne 

Entrées : AX = 07h 
   CX = Limite gauche 
   DX = Limite droite 
Sorties : Aucune 

* Au retour de la fonction, les déplacements horizontaux du pointeur de la souris sont confinés aux limites de la zone définie par CX:DX. 

* La limite gauche représente la valeur minimale de la coordonnée X du pointeur tandis que la limite droite représente la valeur maximale de la coordonnée X. 

Fonction 08h - Valeur maximale et minimale de ligne 

Entrées : AX = 08h 
   CX = Limite supérieure 
   DX = Limite inférieure 
Sorties : Aucune 

* Au retour de la fonction, les déplacements verticaux du pointeur de la souris sont confinés aux limites de la zone définie par CX:DX.

* La limite supérieure représente la valeur minimale de la coordonnée Y du pointeur tandis que la limite inférieure représente la valeur maximale de la coordonnée Y. 

Fonction 09h - Forme du pointeur graphique 

Entrées : AX = 09h 
   BX = Déplacement X du pixel de référence 
   CX = Déplacement Y de pixel de référence 
   DX = Adresse du déplacement du masque 
   ES  = Adresse du segment du masque 
Sorties : Aucune 

* Cette fonction détermine la forme du pointeur de la souris en mode graphique. 

* Les registres ES:DX doivent contenir l'adresse du masque écran	et du masque de pointeur. Ces deux masques doivent se trouver à des adresses mémoire contiguës. 

* Le masque de pointeur occupe 16 mots en mémoire. Il détermine l'aspect du pointeur en mode graphique. La matrice 16 x 16 est interprétée comme bit-map (mode point) pour le mode vidéo en cours. Par conséquent, on peut utiliser plusieurs octets du masque de pointeur pour un pixel. 

* A l'instar du masque de pointeur, le masque écran se compose de 16 mots distincts. Avant que la combinaison binaire du masque de pointeur soit mise en œuvre, vous pouvez déterminer à l'aide du masque écran quels pixels devront être modifiés. Avant d'afficher le pointeur de l'écran, le gestionnaire de souris interprète le masque écran comme une combinaison binaire qui fait l'objet d'une liaison ET logique avec le contenu de l'écran. 

* Les bits d'arrière-plan que vous souhaitez modifier à l'aide du masque de pointeur doivent être codés par un bit égal à 0, ceux qui doivent rester intacts doivent être codés par un bit égal à l. Vous devez spécifier dans le masque écran quels pixels d'arrière-plan ne doivent pas être modifiés par le pointeur de la souris. 

* Le pixel de référence indique quel pixel du pointeur le gestionnaire de souris doit utiliser comme référence pour les coordonnées de la souris. Les coordonnées du pixel de référence sont des déplacements par rapport à l'angle supérieur gauche du pointeur de la souris. Elles peuvent être comprises entre -127 et 128 
Fonction 0Ah - Forme du pointeur texte 

Entrées : AX = 0Ah 
   BX = Type de pointeur 
   CX = Masque écran/ligne de début de l’affichage du pointeur 
   DX = Masque du pointeur/ligne de fin de l'affichage du pointeur 
Sorties : Aucune 

* Vous devez déterminer dans le registre BX le type de pointeur de souris qui doit être utilisé en mode texte. Si BX 00h, il s'agira d'un pointeur logiciel ; si BX = 01h, Il s'agira d'un pointeur matériel. 

* Si vous choisissez le pointeur matériel, Le gestionnaire de souris utilisera le pointeur texte standard.

* Pour le pointeur matériel, vous devez définir dans les registres CX et DX à quelle ligne de balayage d'un caractère l'affichage du curseur doit débuter (CX) et à quelle ligne il doit prendre fin (DX). 

* Pour le pointeur logiciel, le masque écran doit être défini dans le registre CX et le masque de pointeur dans le registre DX. 

Fonction 0Bh - Lecture du compteur de déplacements de la souris.

Entrées : AX = 0Bh 
Sorties  : CX = Compteur X 
   DX = Compteur Y 

* Cette fonction retourne le nombre contenu dans les compteurs de mickeys pour les  coordonnées X et Y, depuis le dernier appel de cette fonction.

* Un mickey correspond à environ l/200iéme de pouce. 

* Les valeurs contenues dans les compteurs peuvent aller de -32768 à 32767. 

Fonction 0Ch - Définition des masques et adresses d'interruption 

	Entrées : AX = 0Ch 
  	 CX = Masque d'appel 
	 DX = Adresse du déplacement du gestionnaire 
	 ES = Adresse du segment du gestionnaire 
	Sorties : Aucune 

* Cette fonction permet de définir un nouveau sous-programme d'interruption pour les interruptions matérielles de la souris. 

* La définition d'un nouveau gestionnaire d'interruptions matérielles pour la souris permet d'intercepter directement au niveau matériel certaines actions réalisées sur la souris. 

* L'adresse du nouveau gestionnaire d'interruptions doit être spécifié dans les registres ES:DX. 

* Le masque d'appel déterminé dans le registre CX permet de spécifier à quelles occasions le nouveau gestionnaire devra être appelé. 

Le Tableau Fig.2 présente la structure du registre CX 

Bits	Signification	
15-5	Inutilisés 	
4	Le bouton gauche est relâché 	
3	Le bouton gauche est enfoncé 	
2	Le bouton droit est relâché 	
l	Le bouton droit est enfoncé 	
0	La position du pointeur de souris change 	

Tableau Fig.2 : Le masque d'appel. 

* En mettant à 1 les bits du masque d'appel, vous provoquez l'activation du gestionnaire d'interruptions par l'interruption matérielle dès que les conditions correspondantes se déclarent. 

* Le sous-programme d'interruption ne doit pas se terminer par une instruction iret mais par une commande far return. 

* Lorsque votre gestionnaire d'interruptions est activé suite à l'apparition d'une des conditions prévues dans le masque d'appel, les registres du processeur possèdent les contenus suivants (voir Tableau Fig.3). 

Registre	Contenu	
AX	Masque de conditions 	
BX	Etat des boutons 	
CX	Coordonnée X du pointeur de souris 	
DX	Coordonnée Y du pointeur de souris 	
SI	Compteur de mickeys X 	
DI	Compteur de mickeys Y 	

Tableau Fig.3 : La structure des registres après appel du gestionnaire d'interruptions. 

* Le masque de conditions vous permet de savoir quelle condition est à l'origine de l'activation du gestionnaire d'interruptions. Sa structure est identique à celle du masque d'appel. Lorsque le bit correspondant à une condition est égal à 1, cela signifie que cette condition a entraînée la mise en œuvre du gestionnaire. 

Fonction 0Dh - Activation de l'émulation du crayon optique 

	Entrées : AX = 0Dh 
	Sorties  : Aucune 

* Au retour de cette fonction, le gestionnaire de la souris émule un crayon optique. 

* Pour simuler une pression sur le crayon optique, vous devez appuyer simultanément sur les deux boutons de la souris. 

Fonction 0Eh - Désactivation de l'émulation du crayon optique 

	Entrées : AX = 0Eh 
	Sorties : Aucune 

* Au retour de cette fonction, le gestionnaire de la souris cesse d'émuler le crayon optique. 

Fonction 0Fh - Définition du rapport mickeys / pixels 

Entrées : AX = 0Fh 
   CX = Rapport X 
   DX = Rapport Y 
Sorties : Aucune

* Cette fonction détermine le rapport entre l'unité de mesure des déplacements de la souris (le mickey) et le déplacement du pointeur de la souris à l'écran. 

* Le paramètre spécifié dans CX définit le rapport entre les pixels horizontaux sur huit mickeys. 

* Le paramètre spécifié dans DX définit le rapport entre les pixels verticaux sur huit mickeys. 

* Les valeurs dans CX et DX doivent être comprises entre l et 32 767. 

* Le rapport standard est 8 sur 16. 

* Les données spécifiées pour les pixels sont basées sur l'écran virtuel. 

* Lorsque l'on augmente la valeur du mickey par rapport à celle du pixel, les déplacements de la souris sont plus lents ; si on la diminue, les déplacements sont plus rapides. 

Fonction 10h - Désactivation conditionnelle de l’affichage du pointeur de souris 

Entrées : AX = 10h 
   CX = Coordonnée X droite 
   DX = Coordonnée Y inférieure 
   SI   = Coordonnée X gauche 
   DI   = Coordonnée Y supérieure 
Sorties : aucune 

* Cette fonction délimite une zone sur l'écran virtuel. 

* Le gestionnaire de souris désactive l'affichage du pointeur de la souris dès qu'il se trouve dans la zone spécifiée. 

* Les paramètres définissent une zone rectangulaire sur l'écran. 

* Cette fonction a pour objet de modifier certaines zones de l'écran sans se préoccuper du pointeur de la souris. Vous pouvez délimiter une zone à l'aide de cette fonction puis la manipuler à votre gré. 

* Si le pointeur de la souris est désactivé, seul l'appel de la fonction 0lh permettra de l'activer de nouveau. 
Fonction 13h - Point de départ pour la double vitesse 

	Entrées : AX = 13h 
	 DX = Valeur limite 
	Sorties : Aucune 

* Cette fonction permet de déterminer la valeur qui servira de point de départ du mode double vitesse lors des déplacements de la souris. 

* Le paramètre du registre DX établit le nombre de mickeys par seconde que doit parcourir la souris lorsqu'elle passe en mode double vitesse. 

* La valeur standard utilisée par le gestionnaire est 64. 

* Pour désactiver le mode double vitesse, appelez cette fonction en spécifiant une valeur physiquement impossible à atteindre, telle que 4000h. 

Fonction 14h - Lecture et modification des masques et des adresses d'interruption 

Entrées : AX = 14h 
   ES = Adresse du segment du gestionnaire d'interruptions 
   CX = Masque d'appel 
   DX = Adresse du déplacement du gestionnaire d'interruptions 
Sorties :  ES = Adresse du segment de l'ancien gestionnaire d'interruptions 
   CX = Adresse masque d'appel 
   DX = Adresse du déplacement de l'ancien gestionnaire d'interruptions 

* Cette fonction permet de définir un nouveau sous-programme d'interruption pour les interruptions matérielles de la souris et détermine l'adresse du gestionnaire d'interruptions en cours ainsi que celle du masque d'appel correspondant. 

* Le masque d'appel déterminé dans le registre CX permet de spécifier à quelles occasions le nouveau gestionnaire devra être appelé. 

Le Tableau Fig.4 présente la structure du registre CX. 

Bits	Signification	
15-5	Inutilisés 	
4	Le bouton gauche est relâché 	
3	le bouton gauche est enfoncé 	
2	Le bouton droit est relâché 	
l	Le bouton droit est enfoncé 	
0	La position du pointeur de souris change 	
Tableau Fig.4 : Le masque d'appel. 
* En mettant à 1 les bits du masque d'appel, vous provoquez l'activation du gestionnaire d'interruptions par l’interruption matérielle dès que les conditions correspondantes se déclarent. 

* Le sous-programme d’interruptions ne doit pas se terminer par une instruction iret mais par un far return 

* Lorsque le gestionnaire d'interruptions est activé suite à l'apparition d'une des conditions prévues dans le masque d'appel, les registres du processeur possèdent les contenus présentés au Tableau Fig.5. 

Registre	Contenu	
AX	Masque de condition 	
BX	Etat des boutons 	
CX	Coordonnée X du pointeur de souris 	
DX	Coordonnée Y du pointeur de souris 	
SI	Compteur de mickeys X 	
DI	Compteur de mickeys Y 	

Tableau Fig.5 : la structure des registres après appel du gestionnaire d'interruptions. 

* Le masque de conditions vous permet de savoir quelle condition est à l'origine de l'activation du gestionnaire d'interruptions. Sa structure est identique à celle du masque d'appel. Lorsque le bit correspondant à une condition est égal à 1, cela signifie que cette condition a entraîné la mise en œuvre du gestionnaire. 

* Cette fonction retourne comme paramètres l'adresse du gestionnaire d'interruptions utilisé jusque-là ainsi que celle du masque d'appel correspondant.

Fonction 15h - Taille du tampon pour l'état du gestionnaire de la souris 

Entrées : AX = 15h 
	Sortie   : BX = Taille du tampon de stockage des informations relatives à l'état du 
			 gestionnaire 

* Cette fonction détermine la taille du tampon de mémoire nécessaire pour prendre en charge toutes les informations relatives à l'état du gestionnaire de la souris. 

* Vous pouvez appeler cette fonction avant de procéder à l'exécution de la fonction 16h ou 17h de manière à calculer la taille du tampon nécessaire. 

Fonction 16H - Enregistrement de l'état du gestionnaire de souris 

Entrées : AX = 16h 
    ES = Adresse du segment du tampon 
    DX =Adresse du déplacement du tampon 
Sorties : Aucune 

* Cette fonction permet d'enregistrer toutes les informations relatives à l'état du gestionnaire de la souris dans une zone tampon. 

* Le tampon doit avoir une capacité suffisante pour accueillir toutes les informations. Vous pouvez déterminer la taille nécessaire en appelant la fonction 15h. 

Fonction 17H - Restaurer l'état du gestionnaire de souris 

Entrée : AX = 17h 
  ES = Adresse du segment du tampon 
  DX = Adresse du déplacement du tampon 
Sortie  : Aucune 

* Cette fonction permet de restaurer l'état du gestionnaire de souris enregistré dans le tampon. 

* L'enregistrement des informations relatives à l'état du gestionnaire s'effectue à l'aide de la fonction 16h. 

Fonction 18h - Masques et adresses d'interruption étendus 

Entrées : AX = 18h 
   CX = Masque d'appel étendu 
   DX = Adresse du déplacement du gestionnaire d'interruptions 
Sorties : ES  = Adresse du segment du gestionnaire d'interruptions 
   AX = Code d'état 

* Cette fonction est analogue à la fonction 0Ch à ceci près qu'elle permet de définir des conditions faisant intervenir des combinaisons de boutons de la souris avec certaines touches du clavier. 

* Le masque d'appel étendu permet de spécifier à quelles occasions le nouveau gestionnaire devra être appelé. Le tableau Fig.6 présente la structure du masque d'appel étendu. 

Bits	Signification	
15-8	Inutilisés 	
7	La touche Alt est enfoncée et le bouton de la souris enfoncé/relâché 	
6	La touche Ctrl est enfoncée et le bouton de la souris enfoncé/relâché 	
5	La touche Majuscules est enfoncée et le bouton de la souris enfoncé/relâché 	
4	Le bouton gauche est relâché 	
3	Le bouton gauche est enfoncé 	
2	Le bouton droit est relâché 	
1	Le bouton droit est enfoncé. 	
0	La position du pointeur de souris change 	

Tableau Fig.6 : Le masque d'appel étendu. 

* En mettant à 1 l'un des bits du masque d'appel étendu, vous spécifiez que le gestionnaire d'interruptions doit effectuer un branchement sur le nouveau sous-progranme d'interruption 
lorsque la condition correspondante se présente.

* Le nouveau sous-programme d'interruption dont vous spécifiez l'adresse dans les registres ES:DX doit se terminer par un far return. 

* Lorsque votre gestionnaire d'interruptions est activé suite à l'apparition d'une des conditions prévues dans le masque d'appel étendu, les registres du processeur possèdent les contenus présenté au Tableau Fig.7. 

Registre	Contenu	
AX	Masque de conditions 	
BX	Etat des boutons	
CX	Coordonnée X du pointeur de souris 	
DX	Coordonnée Y du pointeur de souris 	
SI	Compteur de mickeys X 	
DI	Compteur de mickeys Y 	

Tableau Fig.7: La structure des registres après appel du gestionnaire d'interruption. 

* Le masque de conditions vous permet de savoir quelle condition est à l'origine de l'activation du gestionnaire d'interruptions. Sa structure est identique à celle du masque d'appel lorsque le bit correspondant à une condition est égal à 1, cela signifie que cette condition a entraîné la mise en œuvre du gestionnaire. 

* Le nombre maximal de sous-programmes d'interruption que vous pouvez installer simultanément grâce à cette fonction est Limité à 3. En outre, le masque d'appel mis en œuvre doit être différent d'un sous-programme à un autre. Cela vous permet d'ailleurs d'intercepter différentes actions souris dans plusieurs procédures différentes.

 Fonction 19h - Lecture d'adresses d'interruption étendues 

Entrées : AX = 19h 
   CX = Masque d'appel recherché 
Sorties  : AX = Code d'erreur 
   BX = Adresse du segment du gestionnaire d'interruptions 
   CX = Masque d'appel effectif 
   DX = Adresse du déplacement du gestionnaire d’interruptions 

* Cette fonction détermine l'adresse d'un gestionnaire d'interruptions défini par un programme. Ce gestionnaire sera mis en œuvre dès qu'une certaine action concernant la souris aura lieu. 

* Vous devez spécifier dans le registre CX à quelle action est associé le gestionnaire d'interruptions dont vous voulez connaître l'adresse (voir Tableau Fig.8). 

Bits	Signification	
15-8	Inutilisé 	
7	La touche Alt est enfoncée et le bouton de la souris enfoncé/relâché 	
6	La touche Ctrl est enfoncée et le bouton de la souris enfoncé/relâché 	
5	La touche Majuscules est enfoncée et le bouton de la souris enfoncé/relâché 	
4	Le bouton gauche est relâché 	
3	Le bouton gauche est enfoncé 	
2	Le bouton droit est relâché Le bouton droit est enfoncé 	
0	La position du pointeur de souris change 	

Tableau Fig.8 : Le masque d'appel étendu. 

* En mettant à l l'un des bits du masque d'appel étendu, vous spécifiez que vous voulez connaître l'adresse du gestionnaire d'interruptions pour l'action correspondante. 

* Cette fonction retourne dans les registre BX:DX l'adresse du gestionnaire d'interruptions correspondant à l'action spécifiée dans le masque d'appel (celle dont le bit est égal à 1). 

* Cette fonction place dans le registre CX le masque d'appel associé au gestionnaire d'interruptions (voir Tableau Fig.8). 

Fonction 1Ah - Modification de la sensibilité de la souris 

Entrées : AX = 1Ah 
    BX = Sensibilité X 
    CX = Sensibilité Y 
    DX = Point de départ de la double vitesse 
Sorties  : Aucune 

* Cette fonction détermine via les registres BX et CX la sensibilité de la souris à l'écran. 

* La sensibilité de la souris se mesure comme un rapport entre les pixels et les mickeys. 

* Une sensibilité égale à 50 correspond au facteur mickey standard 1. 

* Le paramètre spécifié dans DX vous permet d'indiquer la valeur limite à partir de laquelle le gestionnaire de la souris doit activer le mode double vitesse. La valeur que contient le registre DX exprime le nombre de mickeys par seconde auquel correspond le mode double vitesse. 

* La valeur standard utilisée par le gestionnaire de souris est 50. 

Fonction 1Bh - Lecture de la sensibilité de la souris 

Entrées :  AX = 1Bh 
     BX = Sensibilité X  
     CX = Sensibilité Y 
     DX = Point de départ de la double vitesse 
Sorties  : Aucune 

* Cette fonction détermine via les registres BX et CX la sensibilité de la souris à l'écran. 

* La sensibilité de la souris est le rapport entre le pixels et les mickeys. 

* Une sensibilité égale à 50 correspond au facteur mickeys standard l. 

* Le paramètre spécifié dans DX vous permet d'indiquer la valeur limite à partir de laquelle le gestionnaire de la souris doit activer le mode double vitesse. la valeur que contient le registre DX exprime le nombre de mickeys par seconde auquel correspond le mode double vitesse. 

* La valeur standard utilisée par le gestionnaire de souris est 50. 

Fonction 1Ch - Fréquence d'interruption de la souris

Entrées : AX = 1Ch 
   BX = Fréquence d'interruption 
Sorties  : Aucune 

* Cette fonction permet de déterminer la fréquence à laquelle le gestionnaire de la souris interrogera cette dernière. 

* La fréquence d'interruption spécifie le nombre d'interrogations de la souris par seconde. Les valeurs possibles sont comprises entre 00h et 04h. Le Tableau Fig.9 décrit en détail ces différentes valeurs. 

* Cette fonction ne peut être utilisée que pour les souris Import. 

Code	Fréquence	
00h	Aucune interrogation 	
01h	30 interrogations par seconde 	
02h	50 interrogations par seconde 	
03h	100 interrogations par seconde 	
04h	200 interrogations par seconde 	

Tableau Fig.9 : Les code de fréquence d'interruption.

Fonction 1Dh - Définition du numéro de la page écran 

Entrées : AX = 1Dh 
   BX = Page écran 
Sorties  : Aucune 

* Cette fonction détermine le numéro de la page écran sur laquelle doit apparaître le pointeur de la souris. 

* Le nombre de pages écran autorisé varie en fonction du mode vidéo en cours et de la carte graphique installé. 

Fonction 1Eh - Lecture du numéro de la page écran 

Entrées : AX = 1Eh 
Sorties  : BX = Page écran 

* Cette fonction retourne le numéro de la page écran sur laquelle se trouve actuellement le pointeur de la souris. 

* Le nombre de pages écran autorisé varie en fonction du mode vidéo en cours et de la carte graphique installée. 

Fonction 1Fh - Désactiver le gestionnaire de souris 

Entrées : AX  = 1Fh 
Sorties  : AX  = Code d'erreur 
    BX = Adresse du déplacement de l'interruption 33h 
    CX = Adresse du segment de l'interruption 33h 

* Cette fonction désactive le gestionnaire de souris 

* Elle retourne dans les registres CX:BX l'adresse du gestionnaire d'interruption désactivé. 

* Lorsqu'il s'avère impossible de désactiver le gestionnaire d'interruption, la fonction vous le fait savoir en plaçant le code d'erreur FFFFh dans le registre AX. 

Fonction 20h - Activer le gestionnaire de souris 

Entrées : AX = 20h 
Sorties  : Aucune 

* Cette fonction active le gestionnaire de souris. 

* Vous devez appeler cette fonction si vous voulez activer un gestionnaire de souris que vous avez désactivé à l'aide de la fonction 1Fh. 

Fonction 21h - Réinitialisation logiciel 

Entrés  : AX = 21h 
Sorties : AX = Code d'erreur 
  BX = 02h 

* Cette fonction exécute une réinitialisation logicielle du gestionnaire de souris, et entraîne par conséquent une restauration des paramètres standard. 

* Le code d'erreur retourné dans le registre AX vous permet de savoir si un gestionnaire de souris est installé. S'il est égal à FFFFh, un gestionnaire de souris est installé ; par contre, s'il est égal à 21h, aucun gestionnaire de souris n'est installé. 

* Si un gestionnaire de souris est installé, la fonction retourne la valeur 02h dans le registre BX, si la valeur que contient BX est différente de 02h ou celle que contient AX différente de FFFFh, aucun gestionnaire de souris standard n'est installé. 

* La fonction réinitialise le gestionnaire en lui attribuant les paramètres présentés au Tableau Fig.10.

Paramètre	Valeur standard	
Position	Centre de l'écran 	
Indicateur du curseur	FFFFh (curseur désactivé) 	
Curseur graphique	Flèche 	
Curseur texte	Rectangle 	
Masque d'interruption	0000h (aucune interruption) 	
Crayon optique	Pas d'émulation 	
Rapport horizontal	8 sur 8 	
Rapport vertical	16 sur 8 	
Vitesse double	16 mickeys par seconde 	
Valeur minimale de colonne	0000h 	
Valeur minimale de ligne	0000h 	
Valeur maximale de Colonne	Valeur X maximale - l 	
Valeur maximale de ligne	Valeur Y maximale - l 	
Numéro de page	00h 	

Tableau Fig.10 : Les valeurs de réglage de la souris. 

Fonction 22h - Langue utilisée 

Entrées : AX = 22h 
   BX = Langue 
Sorties : Aucune 

* Cette fonction détermine la langue que le gestionnaire de souris doit utiliser lorsqu'il affiche des messages ou des conseils à l'écran. 

* le code de la langue voulue doit être spécifié dans le registre BX (voir Tableau Fig.11). 

Code	Langue	
00h	Anglais 	
01h	Français 	
02h	Néerlandais 	
03h	Allemand 	
04h	Suédois 	
05h	Finlandais 	
06h	Espagnol 	
07h	Portugais 	
08h	Italien 	
Tableau Fig.11 : Les codes de langues pour le gestionnaire de la souris.

Fonction 23h - Lecture des numéros des langues 

Entrées : AX = 23h 
   BX = Langue sélectionnée 
Sortie  : Aucune 
* Cette fonction détermine la langue que le gestionnaire de souris utilise lorsqu'il affiche des messages ou des conseils à l'écran. 

* Le code de la langue voulue tient sur un octet et est retourné dans le registre BX (voir Tableau Fig.12). 

Code	Langue	
00h	Anglais 	
01h	Français 	
02h	Néerlandais 	
03h	Allemand 	
04h	Suédois 	
05h	Finlandais 	
06h	Espagnol 	
07h	Portugais 	
08h	Italien 	
Tableau Fig.12 : Les codes de langues pour le gestionnaire de la souris.
Fonction 24h - Obtention d'information concernant la configuration 

Entrée  : AX = 24h 
Sorties : BX = Version 
  CH = Type de souris 
  CL = Ligne d'interruption 

* Cette fonction retourne une liste de données de configuration concernant la souris connectée. 

* Le numéro de version du gestionnaire de souris est représenté par un code que contient le registre BX au retour de la fonction : BH contient le numéro de version principal et BL le numéro de version secondaire. 

* Le registre CH vous permet de savoir quel est le type de la souris connectée, le Tableau Fig.13 présente les valeurs possibles et les types correspondants. 

Code	Souris	
01h	Souris bus 	
02h	Souris série 	
03h	Souris Import 	
04h	Souris PS/2 	
05h	Souris HP 	

Tableau Fig.13 : Les codes des types de souris.