Par son interface graphique pilotée par la souris, l'innovant Macintosh aura inspiré un grand nombre de constructeurs; Aussi le dispositif de pointage cher à Apple se retrouva naturellement dans la gamme d'accessoires d'Exelvision sous le nom d'Exelmouse. Cette souris fonctionne grâce à une interface propriétaire reliée au port CRAM.
L'installation sur l'ordinateur ne pose pas de soucis: Un adaptateur CRAM et un prolongateur sont fournis pour les utilisateur n'ayant jamais étendu leur ordinateur via ce port. L'interface Exelmouse, connectée au prolongateur, offre deux connecteurs: une prise DB9 broches pour la liaison avec la souris et une connecteur de retour permettant la liaison d'autres périphériques utilisant le port CRAM comme l'Exelmémoire, l'EXL 135 ou l'Exeldisk. La souris fonctionne sous deux modes: le mode compteur et le mode joystick (décevant dans le sens où la majeur partie des cartouches ne le gère pas (Guppy, Wizord, Tennis, etc.). Ce dernier mode est sélectionnable par l'appui du bouton gauche de la souris pendant environ deux secondes au démarrage de l'ordinateur.
L'utilisation d'Exelmouse au sein d'applications sous Basic ne se fait pas sans peine car aucune fonction n'a été implémentée pour ce langage. Une routine en assembleur pour les utilisateurs d'Exlmax, ou un sous-programme à base de nombreuses lignes de DATA appelé par des CALL PEEK pour ceux qui ne disposent que d'Exelbasic, devra être saisi dans tout programme...Le moins que l'on puisse dire est que cette opération n'est pas faite pour l'utilisateur débutant!
Prix de la souris seule en 1986: 420 FF
Prix de l'interface + souris + Exelpaint en 1986: 1150 FF
Prix de la souris + Exelpaint en 1986: 675 FF
La routine Assembleur
| CNTSOU | EQU | R127 | RL | A | AND | %>0F,A | RETS | |||||||||||||
| BPORT | EQU | P6 | PUSH | A | RL |
A |
STA | @DELTY | ||||||||||||
| TEMP1 | EQU | R14 | ANDP | %>FB,BPORT | RL | A | MOV | B,A | ||||||||||||
| SW1 | EQU | >C7FD | MOV | 1,b | RL | A | STA | @DELTX | ||||||||||||
| DELTX | EQU | >C7FE | CALL | @TEMPO | RL | A | MOV | TEMP1,A | ||||||||||||
| DELTY | EQU | >C7FF | LDA | @>133 | PUSH | A | JZ | TRT2 | ||||||||||||
| AORG | >C767 | MOV | A,B | ANDP | %>FB,BPORT | RR | A | |||||||||||||
| BR | @NEXT | INV | B | MOV | 1,B | RR | A | |||||||||||||
| FIN | RETS | AND | %>30,B | CALL | @TEMPO | RR | A | |||||||||||||
| NEXT | LDA | @SWI | OR | B,TEMP1 | LDA | @>133 | RR | A | ||||||||||||
| JNZ | FIN | AND | %>0F,A | MOV | B,A | AND | %3,A | |||||||||||||
| ORP | %4,PORT | POP | B | INV | B | TRT3 | STA | @SWI | ||||||||||||
| MOV | %6,B | OR | B,A | AND | %>30,B | RETS | ||||||||||||||
| CALL | @TEMPO | PUSH | A | OR | B,TEMP1 | TRT2 | MOV | %4,A | ||||||||||||
| LDA | @>133 | ORP | %>4,BPORT | AND | %>0F,A | JMP | TRT3 | |||||||||||||
| MOV | A,TEMP1 | MOV | 1,B | POP | B | TEMPO | OR | B,B | ||||||||||||
| INV | TEMP1 | CALL | @TEMPO | OR | B,A | OR | B,B | |||||||||||||
| AND | %>30,TEMP1 | LDA | @>133 | POP | B | DJNZ | B,TEMPO | |||||||||||||
| AND | %>0F,A | MOV | A,B | MOV | A,TEMP1-1 | RETS | ||||||||||||||
| RL | A | INV | B | OR | B,TEMP1-1 | |||||||||||||||
| RL | A | AND | %>30,B | OR | TEMP1,TEMP1-1 | |||||||||||||||
| RL | A | OR | B,TEMP1 | JNZ | TRT1 | |||||||||||||||
Le programme en Basic ci-dessous, donné en exemple dans le manuel d'Exelmouse, utilise la routine en Assembleur préalablement sauvegardée en Exelmémoire sous le nom de«SOURIS»:
100 CALL LOAD "SOURIS"
110 CALL DO ("SOURIS")
120 CALL PEEK (51197,A,B,C)
130 IF A<>0 THEN PRINT A,B,C:CALL POKE(51197,0):GOTO 10
140 PRINT "PAS D'INFORMATION":GOTO 10
150 END
█

Port Joystick
Bit 3 droite broche 4
Bit 2 gauche broche 3
Bit 1 bas broche 2
Bit 0 haut broche 1
Codage des informations
MSB LSB
B3 B2 B1 B0 B3 B2 B1 B0
--------------------- ---------------------
Première donnée Seconde donnée
Déplacement total en X ou en Y
Schéma de l'interface
