I should do soon an English version, please be patient!
Je ne suis pas certain que beaucoup d'Oriciens aient aujourd'hui entre leurs mains le crayon optique Mageco. Cela dit, depuis quelque temps, Fabrice Francès en a ajouté l'émulation (je l'ai torturé) à Euphoric. N'avez-vous pas été surpris par ce curieux point gris à l'écran? Eh oui, il s'agit du pointeur du crayon. Si vous ne voyez rien, référez vous à la doc d'Euphoric qui vous éclairera sur ce point. Sachez juste que ce pointeur désigne la zone sur laquelle vous voulez... Pointer! Vous le déplacez à l'aide de la souris (du PC) et actionnez avec le bouton. Bref, sous Euphoric, on a une vrai souris! :-) Le but de cette page est de vous aider à programmer le crayon.
I - Ze docs
1- Branchement
2- Comment régler la sensibilité du crayon?
3- Représentation de l'écran
4- Programme permettant de choisir un menu
5- Programme de dessin
6- Sous-programme de calibrage automatique
II - Un peu plus d'aide...
1- Activer le crayon sous Euphoric
2- Un exemple: comment remplacer un GET A$
3- Un petit piège: les coordonnées bizarres
Fin
I - Ze docs
Je vous livre ici en pâture le contenu de la doc (succinte) du crayon... (c) Mageco bien sûr.
Le crayon optique que vous venez d'acquérir fonctionne quelle que soit la capacité mémoire de votre Oric, il ne nécessite aucune extension particulière.
Il peut être utilisé avec un téléviseur couleur ou noir et blanc, la position du crayon sera validée sur les plages claires.
Il occupe les places mémoire 992 pour la position sur l'axe horizontal (X) et 993 pour la position sur l'axe vertical (Y).
Retour au menu
1- BRANCHEMENT
1. Débrancher l'alimentation de votre Oric.
2. Brancher le crayon optique à l'aide de la rallonge bus souple femelle-femelle ou de la carte mère.
3. Brancher la prise DIN mâle dans la prise RVB de l'Oric.
4. Les éventuelles extensions branchées précédemment sur la prise RVB de l'Oric seront branchées dans la prise DIN femelle du crayon optique.
5. Brancher l'alimentation de l'Oric.
Retour au menu
2- COMMENT REGLER LA SENSIBILITE DU CRAYON ?
Pour cela tapez exactement:
10 ? PEEK(992), PEEK(993)
20 GOTO 10
Vous verrez apparaître deux colonnes de chiffres, pointez le crayon sur l'écran et réglez le contraste et la lumière de telle sorte que le chiffre de la colonne de gauche et de droite ne changent plus. Ensuite déplacez le crayon, les chiffres doivent changer. La colonne de gauche détermine le déplacement dans le sens horizontal, celle de droite la position du crayon dans le sens vertical.
Retour au menu
3- REPRESENTATION DE L'ECRAN et des valeurs de PEEK(992) et PEEK(993):
(Les valeurs portées ici sont celle fournies par Euphoric, et sont très proches de celles de la doc originale que Fabrice a respecté; toutefois sur un Oric réel, elles peuvent varier fortement suivant les réglages de votre écran)
4- PROGRAMME PERMETTANT DE CHOISIR UN MENU
10 CLS
20 ?"Option 1"
30 ?:?"Option 2"
40 ?:?"Option 3"
50 IF PEEK (993) < 72 THEN GOTO 100
60 IF PEEK (993) > 72 AND PEEK (993) < 88 THEN GOTO 200
70 IF PEEK (993) > 88 AND PEEK (993) < 104 THEN GOTO 300
80 GOTO 50
100 ?"Option 1":END
200 ?"Option 2":END
300 ?"Option 3":END
Retour au menu
5- PROGRAMME DE DESSIN
10 HIRES:PAPER7:INK0
30 GOSUB 1030
35 X1=X:Y1=Y
110 GOSUB 1030
170 DRAW(X1-X),(Y1-Y),1:REM tracer
180 GOTO 30
1030 X=0:Y=0
1040 FOR N=0 TO 3
1050 X=X+PEEK(992)-220:Y=Y+PEEK(993)-56
1052 WAIT 2:NEXT N:REM Amélioration de la précision en mesurant 4 fois
1057 X=X/4:Y=Y/4
1060 IF Y < 0 THEN Y=255+Y
1065 IF X < 0 THEN X=255+X
1070 IF X > 239 THEN X=239
1075 IF Y > 199 THEN Y=199:REM Repositionnement du curseur
1080 CURSET X,Y,1:WAIT 30:CURSET X,Y,0:REM Clignotement
1096 IF KEY$="Z" THEN RETURN
1100 GOTO 1030
Vous voyez un écran blanc, c'est normal. Maintenant pointez votre crayon sur l'écran, vous devez voir un petit point noir clignoter à l'endroit où est positionné le crayon. Appuyer sur la touche Z pour valider l'endroit, déplacer le crayon à un autre endroit et appuyer de nouveau sur la touche Z. Maintenant l'Oric trace un trait entre les 2 points que vous avez déterminé précédemment.
Retour au menu
6- SOUS-PROGRAMME DE CALIBRAGE AUTOMATIQUE
A lancer 1 fois en début de programme. Mettre le crayon sur le point; validation du calibrage par appui sur Z (DX ajuste la position du crayon en horizontal, DY en vertical).
2000 X=120:Y=120
2010 CURSET X,Y,1
2040 IF KEY$="Z" THEN GOTO 2060
2050 GOTO 2010
2060 DX=PEEK(992)-X:DY=PEEK(993)-Y
Retour au menu
Voilà, la doc est terminée! Ne m'écrivez pas au sujet de la programmation relativement, euh, disons "légère" (lourde?) des exemples de la doc... Voici maintenant quelques exemples "maison" de programmation.
II- UN PEU PLUS D'AIDE...
Oui, bon, la documentation est bien gentille, mais je pense qu'il peut être utile d'ajouter quelques explication et quelques exemples fréquents d'utilisation. Je vous rappelle que mon petit programme Ex-SIP utilise le crayon; ce n'est certainement pas un modèle de programmation non plus (j'étais jeune :), mais il donne une idée de ce que l'on peut faire. D'ailleurs la pluspart de mes exemples (sinon tous) en sont tirés.
1- ACTIVER LE CRAYON SOUS EUPHORIC
Avant tout, parole à la doc d'Euphoric:
"Pour utiliser le stylo optique, spécifiez simplement la ligne LightPen=Oui dans le fichier d'initialisation. Le stylo optique est simulé par la souris du PC, un petit marqueur gris matérialise la position du stylo sur l'écran. Mais n'oubliez pas que le stylo doit toucher l'écran pour pointer une zone: cette action est remplacée par l'appui sur le bouton de la souris. N'oubliez pas non plus que le stylo ne peut marcher que sur les zones éclairées de l'écran, inutile de sélectionner une zone noire... Vous devez avoir un pilote de souris résident lorsque vous lancez euphoric, sinon le marqueur gris restera immobile."
Il faut donc bien faire attention à plusieurs choses. Tout d'abord, si vous êtes sous Windows 95, il y a de fortes chances pour qu'il vous faille un driver de souris sous DOS, comme pour pas mal de jeux d'ailleurs. Pour vérifier si votre souris fonctionne sous DOS, lancez EDIT par exemple, et regardez si vous déplacez un pointeur avec la souris... Si ce n'est pas le cas, installez un driver. On en trouve plein sur internet, il suffit ensuite en général de rajouter 1 ligne dans le fichier AUTOEXEC.BAT du type: LH C:\DOS\SOURI\mscmouse.com , soit simplement le nom du driver et son chemin d'installation.
Ensuite, éditez le fichier EUPHORIC.INI. Comme décrit, sur la ligne LightPen=, mettez oui (ou yes). Et vérifiez au passage la ligne SerialPort=... En effet, si le port série est défini pour utiliser le COM1, et que votre souris a été configurée aussi en COM1 (c'est souvent le cas), il va y avaoir un problème. Mettez donc plutôt SerialPort=com2 ou SerialPort=none.
Retour au menu
2- UN EXEMPLE: COMMENT REMPLACER UN GET A$
Voici un premier exemple de sous-programme basic, qui permet d'attendre que l'utilisateur frappe une touche quelconque ou pointe avec le crayon. D'ordinaire, on utilise un GET ou équivalent... Eh bien avec cette routine, il faut faire un GOSUB14020.
14020 REM PRESSER TOUCHE OU CRAYON(A$)
14022 A=PEEK(992):B=PEEK(993)
14024 A$=KEY$:IF A<>PEEK(992) OR B<>PEEK(993) OR A$<>"" THEN RETURN
14026 GOTO14024
Explications: cette routine boucle en attendant un évènement, donc une touche ou un pointage quelconques. Voyons d'abord la touche: c'est classique, A$=KEY$ met A$ à vide, donc à "". Dès que A$ n'est plus à "", on sort de la boucle.
Pour le crayon, c'est un peut plus délicat. J'ai considéré que l'on pointe dès que les coordonnées indiquées en mémoire (992 et 993) changent. Forcément, si elles ont changé, c'est que l'utilisateur a pointé quelquepart. Le seul point faible de cette méthode serait le cas où l'utilisateur pointerait exactement au même endroit qu'auparavant, mais croyez-moi il faut vraiment le vouloir pour y parvenir, surtout sur un véritable Oric. Il a donc fallu mémoriser les valeurs en (992) et (993), ici dans A et B, et les comparer en permanence avec les valeurs courantes en (992) et (993). Dés que l'une d'elles (au moins) change, on sort de la boucle.
Retour au menu
3- UN PETIT PIEGE: LES COORDONNEES BIZARRES
Vous l'avez sans doute vu sur l'image un peu plus haut, les valeurs de PEEK(992) et PEEK(993) retournent les coordonnées de l'endroit où pointe le crayon. Mais ces coordonnées sont assez curieuses; par exemple le point (0;0) se trouve à l'intersection des deux lignes rouges. Autrement dit, rien à voir avec les coordonnées usuelles du mode HIRES: tout est décalé. Un problème se posera donc lorsque l'utilisateur pourra pointer dans une zone particulière qui est traversée par ces "axes rouges". Il faudra faire des tests supplémentaires. Par exemple, voici un test qui vérifie si l'utilisateur a cliqué sur l'icône en video inverse ou sur la phrase "A- voir les jeux", qui sont traversées par l'axe vertical:
14100 REM ### CHOIX ICONES ###
14105 A=PEEK(992):B=PEEK(993)
14110 A$=KEY$:IF A<>PEEK(992) OR B<>PEEK(993) OR A$<>"" THEN 14120 ELSE 14110
14119 REM ### CHOIX JEUX ###
14120 IFA$="A" OR A$="B" OR A$="C" OR A$="D" THEN RETURN
14122 IFA$<>"" THEN 14110
14124 A=PEEK(992):B=PEEK(993)
14125 IF B>172 AND B<229 AND A>239 THEN 14500
14130 IF B>172 AND B<229 AND A<27 THEN 14500
14135 IF B>70 AND B<79 AND A>243 AND A<255 THEN 14500
14136 IF B>70 AND B<79 AND A>0 AND A<119 THEN 14500
14500 A$="A":RETURN
Les tests pour le crayon proprement dit se font de la ligne 14125 à 14136. On teste l'icône et la phrase, et comme on peut le voir, il faut faire un test pour les valeurs de A (abscisse) supérieures à 0, et pour celles "inférieures", c'est à dire allant jusqu'à 255... Ce n'est pas très clair mais je vous recommande la pratique pour mieux comprendre!
Voilà, j'espère vous avoir donné l'envie d'utiliser cette extension dont l'utilisation peut se révéler très proche d'une souris (à 1 bouton), et se montrer aussi puissante...
Probablement à suivre, mais je vais déjà traduire tout ça pour nos amis anglophones...
Pour toute question ou remarque, n'hésitez pas à me contacter: Simon, symoonmyself@hotmail.com