APPLICATIONSDIVERS ★ 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 :

  • En 39000 est placée la coordonnée Y du pointeur affiché.
  • En 39001. la coordonnée X.
  • En 39002 est stocké le caractère effacé provisoirement par le pointeur.
  • Le contenu de 39003 permet de régler la vitesse du pointeur : vous constaterez en effet, si vous utilisez le driver dans un programme en assembleur, que le pointeur se déplace trop rapidement ; pour le ralentit il suffit d'augmenter le contenu de 39003.
  • 39004 : réservé au driver.
  • 39005 et 39006 contiennent les lignes minimum et maximum entre lesquelles le pointeur de souris peut évoluer ; elles sont bien entendu modifiables par le programme gui utilise le driver.
  • 39007 et 39008 contiennent les colonnes minimum et maximum entre lesquelles la souris évolue.
  • 39009 : contient initialement 0 : mais si l'utilisateur appuie sur le bouton firel. contient 255 jusqu'à modification par le programme qui utilise le driver.

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 :

  • D'abord mettre un MEMORY, par exemple MEMORY 16383, puis mettre un LOAD*MOUSE.BIN" ; le fichier binaire va se charger à partir de 38600.
  • A partir de là, deux possibilités : soit le programme lance Immédiatement le driver par un call &96c8 (38600) : dans ce cas, c'est la routine elle-même qui Inltiallse la table de données : 39000 et 39001 contiennent les coordonnées du curseur : le pointeur démarre du curseur ; 39002 contient le caractère qui se trouvait au niveau du curseur ; 39003 contient 2 (vitesse moyenne. Il faudra souvent la mettre à 1); 39005, 39006, 39007, 39008 contiennent les limites de l'écran, 39009 contient 0 ; soit vous faites un call &96f0 APRES AVOIR VOUS-MEME initiallsé la table de valeurs ; si vous ne l'avez pas initiallsée. c'est le plantage assuré. Ce second call vous permet donc de faire démarrer le pointeur d'où vous voulez, puisque. Il faut le rappeler, pointeur et curseur sont complètement indépendants.
  • Une fois l'un des deux calls exécuté, le pointeur apparaît à l'écran, peut être manipulé par le Joystick sans que le programme qui utilise le driver ait à s'en occuper.
  • Pour Inhiber le driver, le programme devra faire un call &9817 : le pointeur disparaît, le caractère masqué est restitué.

Quelques mises en garde :

  • Le pointeur de souris est un pointeur de souris texte ; en conséquence, s'il passe sur du graphique. Il ne reconnaîtra pas de caractère, d'où mauvaise restitution.
  • Supposons que vous affichiez à l'écran une Information alors que le driver est actif : l'Information pourrait recouvrir le pointeur, sans que le driver le sache ; Il y aurait alors une mauvaise restitution de caractère ; c'est pourquoi, de môme que lorsque vous effacez l'écran. Il est conseillé, avant de faire un affichage, d'Inhiber le driver par un call &9817, puis, après l'affichage, de refaire un call &96F0.
  • Il peut se produire des problèmes de saturation : si vous manipulez le Joystick pendant que le programme fait des affichages répétés, l'ordinateur doit, en plus de ces affichages, tous les 1/50 de seconde afficher le pointeur ; d'où un débordement avec des aberrations à l'écran.

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.

CPCINFOS

★ EDITEUR: CPCINFOS
★ ANNÉE: 1991
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: Jean-Louis BENARD
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» Driver  de  Souris    (CPC  Infos)    FRENCHDATE: 2021-04-20
DL: 150
TYPE: ZIP
SiZE: 4Ko
NOTE: 40 Cyls
.HFE: Χ

» Driver  de  Souris    (CPC  Infos)    LISTING    FRENCHDATE: 2021-04-20
DL: 228
TYPE: PDF
SiZE: 688Ko
NOTE: 5 pages/PDFlib v1.6

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Hardware » Souris - Joystick Mouse
» Hardware » DK Tronics Mouse Interface Clone
» Hardware » Puricorp StarMouse
» Hardware » GEOS-Mouse am Joystick-Port (CPC Amstrad International)
» Hardware » MEDL Tracker Balls / TrackBall RB2
» Applications » Gestion Souris (AM-Mag)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 493 millisecondes et consultée 1956 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.