Les
ports "Joysticks" étendus du STE et Falcon
Auteur: Laurent FAVARD
|
INTRODUCTION
Le Falcon est equipé
en standard de deux prises manettes dites étendues, tout droit héritées
du STE. Elles ne furent pourtant jamais utilisées, ou bien alors
très peu. Ces deux prises offrent pourtant bien des avantages car
elles sont chacune equipées
de deux entrées analogiques X et Y et permettent de plus
de
connecter des joysticks de type Jaguar.
Dans cet article, nous allons
voir ensemble comment utiliser d'une manière simple,
ces prises joystick étendues, avec des exemples en C à l'appui.
Certains de nos lecteurs pourront peut-etre découvrir des possibilités
d'utilisation, voyant la un moyen simple d'utiliser une manette Jaguar,
ou bien d'utiliser les entrées
analogiques.
LES ENTREES ANALOGIQUES
Chaque prise étendue
comporte deux entrées X et Y analogiques, qui sans
entrer
dans des détails d'électronique, acceptent en entrée
non pas des valeurs "binaires",
telle la présence ou non d'une tension, mais acceptent une grandeur
électrique
continue.
L'électronique du STE
et du Falcon mesure cette grandeur et nous en retourne directement un multiple,
à la différence d'un bit à 0 ou 1, comme pour les
entrées
d'un Joystick
classique. Il ne reste alors plus qu'à lire les valeurs qui nous
interressent directement dans des registres.
Ce principe de gestion de Joysticks
et
le meme que nous retrouvons, par exemple, dans le monde PC. Il ne présente
Pour autant, cela ne présente
pas une grande gene, si on s'attache à filter ces
oscillations soit de manière logicielle soit de manières
cablée.
Le montage de test analogique
Afin d'illustrer notre expérimentation,
nous allons réaliser un montage pour
que chacun puisse se rendre compte par lui meme du fonctionnement.
La figure 1, montre un schéma
de branchement de deux potentiomètres sur les entrées
X et Y, ainsi que du matériel nécessaire à la réalisation.
Peut on faire plus simple
?
figure 1:
Le principe du montage est
de permettre ensuite, vous l'aurez deviné, de faire
varier
les valeurs X et Y, en faisant tourner les deux potentiomètres.
La programmation des entrées analogiques La programmation des entrées
analogiques est ce qu'il y a de plus simple. Pour
connaitre à tout moment l'état des potentiomètres,
quatre adresses systèmes, présentées
en figure 2, sont à disposition. Pour pouvoir y accéder,
vous devrer en revanche
faire un appel système afin de passer en mode superviseur, sinon
figure 2:
Avec la déclaration suivante
en langage C, nous disposons directement de variables contenant
les valeurs qui nous interressent:
#define
XDIR0 *((unsigned char *)0x00FF9211L)
Ansi, pour connaitre l'état de la valeur 'Paddle X0', on écrira en C ou en assembleur les lignes suivantes: "C": ValueX0
= XDIR0; /* Lecture de l'état de l'entrée X0 */
Programme d'exemple analogique Le programme ci-dessous montre maintenant en langage C comment réaliser l'accès aux registres des entrées analogiques, mais reste transposable en assembleur. D'abord nous mettons le 680x0 en mode Superviseur, puis nous effectuons les lectures des quatre adresses, enfin nous replacons le 680x0 en mode utilisateur. Pour effectuer un essai, brancher votre montage sur la prise étendue 0 ou 1. /*
#include <stdio.h>
#define
XDIR0 *((unsigned char *)0x00FF9211L)
int main(void)
Il ne vous reste plus qu'à
réaliser un programme plus complet afin d'utiliser
au
mieux cet exemple.
|
LES
ENTREES NUMERIQUES
Les entrées numériques
ont un fonctionnement relativement différent. En effet,
La programmation des entrées Numériques Ici aucun montage de test, il suffit de brancher une manette Jaguar sur une des prises étendues de votre Falcon ou STE. La programmation de ces manettes va etre un peu plus compliquée que la méthode précédente, mais comme vous le verrez, cela reste raisonnable. En effet, pour lire des valeurs quelconques il faut procéder comme suit: Tout d'abord, effectuez une
écriture à l'adresse 0x00FF9202, o- l'on va y
Les figures 3 et 4, présente
quatre tableaux qui décrivent l'ensemble des masques
figure 3:
figure 4:
Exemple: Pour lire l'état des boutons UP/DOWN/LEFT/RIGHT de la manette 0, il faut tout d'abord écrire en 0x00FF9202 la valeur de masque 0xFFFE, puis lire à l'adresse 0x00FF9202 un mot de 16 bits. Ce mot contiendra alors dans les bits 8 à 11 l'état des boutons de direction du Joypad. Autre exemple: Pour lire l'état du bouton FIRE-0 et PAUSE de la manette 1, nous devons tout d'abord écrire en 0x00FF9202 la valeur de masque 0xFFEF, puis lire en 0x00FF9200 le mot qui contiendra l'état de nos deux boutons sur les bits 2 et 3. Comme pour les entrées
analogiques, il faudra veiller à effectuer ces accès en mode
Superviseur.
Programme d'exemple numériques Le programme suivant montre
à son tour comment utiliser une manette Jaguar.
/*
#include <stdio.h>
#define
JOYLOW *((unsigned int *)0x00FF9200L)
int main(void)
/* Avant
d'effectuer des lectures, passer en Superviseur */
/* Direction
Joypad 1 */
Direction0
= ~Direction0 & 0x0F00;
LE PROGRAMME JOYSTICK
Vous retrouverez les listings des
programmes pécédents
prets à l'emploi avec en plus, un exemple supplémentaire
dénomé JOYSTICK,
spécialement écrit pour vous, avec son code source. Celui-ci
est bien plus complet,
puisqu'il
gère, totalement cette fois, les manettes Jaguar. Il fonctionne
sous GEM, de préférence
sur un écran couleur RVB ou VGA, ainsi que sous Magic5.13 ou
TOS.
Il n'acceptera de s'exécuter que sur Falcon et STE, puisque seul
ces machines supportent
les prises étendues (Sinon, c'est des bombes assurées !).
Pour la partie Analogique,
ce programme effectuera un test des deux prises, en
dépla?ant un point central vert, ainsi que deux repères en
axes x et y, sur un cadran
dédié à chaque prise. Les valeur lues sont directement
affichées dans des champs
textes en héxadécimal. Vous pouvez ainsi brancher, par exemple,
deux exemplaires
de ce montage simultanément.
Pour la partie numérique, le programme reproduit deux manettes Jaguar, qui reflète chacune l'état des boutons de chaque Joypad. Vous pouvez donc également connecter deux manettes simultanément sur vos deux prises étendues. Conclusion Maintenant que nous avons vu l'utilisation des entrées analogiques et des manettes Jaguar, nous pouvons envisager bon nombre d'applications comme, par exemple, brancher un capteur de température pour effectuer des mesures, utiliser une manette Jaguar comme choix supplémentaire dans les jeux Falcon et STE... Mais c'est à vous de voir ! Je tiens pourtant à
vous faire remarquer, qu'après avoir parcouru l'ensemble
de
ma documentation système, je suis étonné qu'il n'existe
pas d'appel système
propres
pour gérer ces fonctionnalités...C'est pourquoi, nous avons
été obligés d'adresser
directement les registres de la machine, ce qui est à proscrire
a tout prix, si on souhaite
etre compatible (Nous vivons à l'heure de l'Hadès et Milan...).
Mais dans notre cas, c'est différent, étant donnée
l'abscence d'appels
officiels
Atari.
Pour toutes questions d'ordre logiciel,
vous pouvez me contacter à mon adresse
e-mail,
|