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 retrouve naturellement dans la gamme d'accessoires d'Exelvision sous le nom d'Exelmouse. Cette souris fonctionne sur EXL 100 grâce à une interface propriétaire reliée au port CRAM et sur Exeltel via l'interface Multifonction reliée au port d'extension E/S.
En configuration sur le port CRAM. L'interface Exelmouse est livrée avec un adaptateur CRAM (un guide d'insertion qui se substitue au cache en plastique situé à l'arrière gauche de l'ordinateur) et un prolongateur sur lequel elle vient se fixer. L'interface dispose d'une prise DB9 broches à destination de la souris et d'un connecteur de retour permettant la liaison de l'ordinateur à d'autres périphériques utilisant également 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'Exelmax, ou un sous-programme comprenant de nombreuses lignes de DATA appelées par des CALL PEEK pour ceux qui ne disposent que d'Exelbasic, devra être saisie 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 CRAM + souris + Exelpaint en 1986: 1150 FF
Prix de la souris + Exelpaint en 1986: 675 FF
Schéma de l'interface sur port CRAM
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
Les entrailles de la Souris
Produite par la socité Neos, cette souris est bien connue des utilisateurs de Commodore 64/128 et MSX.
Son électronique se résume à peu de composants et pour cause, le dispositif de pointage est conçu autour d'un MB88201 embarquant une mémoire morte (512 octets x 8bit), une mémoire statique (16Ko x 4bit), 12-10 lignes Entrées/Sorties, un générateur d'horloge , deux registres et un jeu de 37 instructions... Bref, ce MB88201 un microordinateur à lui tout seul! Le MB88201 fait partie d'une famille de composants low cost produits par la société Fujitsu.
La routine en 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
█