LA SOURIS 

      

    Comment programmer l'un des périphériques les plus utilisés ?

    (Dernière modification le 04/06/97)

     

     

     

     

     

     

     

    SOMMAIRE

     

    Introduction

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

    Fonction 01h - Affichage du pointeur de la souris

    Fonction 02h - Masquage du pointeur de la souris

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

    Fonction 04h - Positionnement du pointeur de la souris

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

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

    Fonction 07h - Valeur maximal et minimale de colonne

    Fonction 08h - Valeur maximal et minimal de ligne

    Fonction 09h - Forme du pointeur graphique

    Fonction 0Ah - Forme du pointeur texte

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

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

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

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

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

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

    Fonction 13h - Point de départ pour la double vitesse

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

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

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

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

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

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

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

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

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

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

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

    Fonction 1Fh - Désactiver le gestionnaire de souris

    Fonction 20h - Activer le gestionnaire de souris

    Fonction 21h - Réinitialisation logicielle

    Fonction 22h - Langue utilisée

    Fonction 23h - Lecture des numéro des langues

    Fonction 24h - Obtention d'informations concernant la configuration

     

    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.