★ APPLICATIONS ★ DIVERS ★ DRIVER DE SOURIS ★ |
Driver de Souris (CPC Infos) | Applications Divers |
D'abord, il paraît indispensable de rappeler le sens du mot driver, couramment utilisé dans le monde du PC, et très peu dans celui du CPC. Un driver de périphérique est un "pilote" de périphérique, c'est-à-dire qu'il sert d'interface entre le hardware que constitue le périphérique et le software : votre programme.Ici on supposera que l'on dispose simplement d'un Joystick et non d'une souris ; le driver, appelé par le biais d'une interruption assembleur, va scruter le joystick, modifier le pointeur à l'écran en conséquence et renvoyer en mémoire des informations susceptibles d'être utilisées par le programme qui utilise le driver. L'Interruption choisie est celle liée au contrôleur vidéo, à savoir qu'elle est appelée tous les 1/50 de seconde : on aurait pu utiliser un appel tous les 1/300, mais ce qui a été choisi ici est amplement suffisant. Ainsi donc que se passe-t-il tous les 1/50 de seconde ? Première étape : la routine fait appel à JOY(0) ; si aucune action n'a été exécutée au niveau du Joystick, le driver revient au programme (basic ou assembleur) qui l'utilise. Dans le cas contraire, le driver modifie la position du pointeur à l'écran, en restituant le caractère masqué par le pointeur et en stockant en mémoire celui sur lequel le pointeur va se placer. Un tel driver serait inutile s'il ne renvoyait pas des Informations au programme aui l'utilise ; voici donc la table d'informations (modifiable par le programme) : toutes les données liées au driver seront situées à partir de l'adresse 39000 :
Concrètement, comment utiliser le driver ? Vous devez d'abord charger le programme MOUSE.BAS. puis l'exécuter. Celui-ci va stocker sur disquette un fichier MOUSE.BIN ; c'est ce fichier qui va être utilisé dans vos programmes. Ainsi, lorsque vous voulez utiliser le driver dans votre programme, vous devez Inclure les séquences suivantes :
Quelques mises en garde :
Le listing assembleur est assez simple : à partir de 38600. on a d'abord les initialisations de la table (qu'on peut. Je vous le rappelle, éviter). Puis le JP CRTIN initialise l'interruption : tous les 1/50 de seconde, on a un appel à MOUSE, MOUSE, en fonction de la valeur contenue en 39003, et en 39004 (compteur) retourne au basic ou continue la routine assembleur. De là, on a un appel à joy ; le résultat est dans l'accumulateur, que l'on sotcke dans sto ; on examine bit après bit la valeur de cet accumulateur. Si le bit 0 est à 1, on exécute HAUT : stockage provisoire dans la pile des coordonnées du curseur ; on vérifie que le pointeur ne déborde pas de la limite. Puis on restitue le caractère effacé par le pointeur ; on modifie les coordonnées du pointeur, on stocke le caractère sur le point d'être effacé ; on affiche le pointeur à la nouvelle position ; on restitue les coordonnées du curseur. Puis on réitère ces opérations avec le bit 1 (BAS) et ainsi de suite. En &9817 débute la routine d'Inhibition : restitution du caractère effacé, puis annulation de l'interruption. Je vous propose, un exemple pour illustrer ceci : il s'agit d'un exemple de fenêtre de saisie : la fenêtre avec les options oui et non est d'abord dessinée ; puis le programme initialise lui-même la table de données de telle sorte que le pointeur ne sorte pas de la fenêtre ; puis appel du drtver avec un call &96F0 ; l'utilisateur vient se placer sur l'une des 2 options OUI ou NON avec le Joystick, appuie sur flre : 39009 vaut alors 255 : le programme examine les coordonnées du pointeur : s'il se trouve dans l'une des fenêtres OUI ou NON il affiche un message en conséquence, sinon il s'arrête.
|