Le clavier et joysticks

 

 

Le clavier

Les adresses liées "indirectement" au clavier. En fait, ces adresses sont généralement alimentés lors d'un VBLANK (cf. VBI). la vitesse peut donc varier entre 1/50 et 1/60ième de seconde selon que le moniteur tourne en PAL ou en NTSC:

Les répétitions:

L'adresse 729: délai d'attente avant de commencer à répéter l'appui sur une touche.

L'adresse 730: délai d'attente entre deux répétitions d'une touche.

L'adresse 731: Permettre ou non le beep du clavier (beep qui peut-être gênant dans un jeu si celui fonctionne tout au clavier !):0:activer le beep, toutes autres valeurs désactivent le beep.

L'adresse 752: permet d'activer ou de désactiver le curseur: 0 pour afficher un curseur, toutes autres valeurs désactivant le curseur.

 

 

La touche HELP:

C'est l'adresse 732 qui va nous indiquer que l'on a appuyé ou non sur la touche HELP:

La valeur 17 pour la touche HELP

La valeur 81 pour SHIFT + HELP

La valeur 145 pour CTRL + HELP

Exemple help.lst

 

Image non trouvée !

- Cette adresse n'est jamais remise à zéro suite à un appui sur la touche HELP, et ceci même si l'utilisateur n'appuie plus sur la touche. Il faudra donc faire poke 732,0 au lancement du programme pour initialiser le tampon, et à chaque fois que le programme détecte un appui.

- Cette adresse ne gère pas l'appui "long" ou "répétition" sur la touche HELP.

 

 

Les touches OPTION, SELECT et START:

L'adresse 53279 va nous indiquer l'état de ces 3 boutons:

La valeur 3 pour la touche OPTION

La valeur 5 pour la touche SELECT

La valeur 6 pour la touche START

La valeur 7 pour aucunes de ces 3 touches...

 

Image non trouvée !Contrairement à la touche HELP, ces valeurs ne sont gardées que durant la période où l'utilisateur va appuyer sur ces touches.

 

La touche BREAK:

Pour empêcher le fonctionnement pendant un jeu de la touche BREAK, il suffit de positionner 0 sur le bit 7 de l'adresse 16. La touche sera alors désactivée.

Positionner à 1 pour la réactiver.

On active/désactive en fait l'interruption de la touche break.

Image non trouvée ! Les autres bits servent aussi, ne positionnez pas n'importe quoi dedans...

 

Il faut faire de même avec l'adresse 53774.

Exemple de code:

10 IF PEEK(16)<128 THEN 30

20 POKE 16,PEEK(16)-128

30 IF PEEK(53774)<128 THEN 50

40 POKE 53774,PEEK(53774)-128

50 ...suite du code...

 

Les autres touches:

L'adresse 753 contient 3 si une touche est pressée, 0 sinon.

L'adresse 754 contient le code de la dernière touche qui a été saisie. Cependant, il ne sera pas possible de déterminer le cas où l'utilisateur ne relâche pas la touche. Il faut en effet traiter les répétitions:

Utiliser l'adresse 764: cette adresse retourne le code de la dernière touche saisie.

Tant que le code est présent, c'est qu'il n'a pas été traité. Pour indiquer que l'on a traité ce code, il faut poker la valeur 255.

 

L'adresse 754 recevra la valeur du code 764. Mais ne sera pas effacée par un poke 764,255.

Le fait de passer la valeur 255 "effaçant" la dernière valeur de la touche saisie, permet de traiter les répétitions. En effet, si l'utilisateur ne relâche pas la touche, le code de cette touche sera de nouveau disponible à l'adresse 764 (dès que les délais de répétitions seront écoulés, voir adresse 729 et 730).

 

Image non trouvée !Tapez sous Basic POKE 764,63

La lettre A s'affichera automatiquement à l'écran. L'interpréteur BASIC considérant que nous avons appuyé sur la lettre A du clavier.

Ce qui m'amène à une autre remarque: Dans un programme (un jeu surtout) où l'on utilise intensément le clavier, il sera préférable de terminer le programme par un poke 764,255 pour vider le "buffer du clavier" et ainsi ne pas voir apparaître des caractères sous l'interpréteur. Même remarque si, à la fin du jeu par exemple, vous passez dans une phase de saisie...

 

Les joysticks:

Pour lire la position des joysticks, il y a les commandes du Basic STICK(n) ou les adresses 632 (pour le joystick 0) et 633 (pour le joystick 1). Il y a aussi les joystick 3 et 4: 634 et 635 (Notes: ces ports n'existent pas sur un XL/XE pour ces joysticks.).

Les joysticks ne pouvaient avoir que 9 positions:

Les positions sont les suivantes:

   

Haut

14

   
 
10
 
6
 

Gauche

11

 

Neutre

15

 

Droite

7

 
9
 
5
 
   

Bas

13

   

 

Pour lire les boutons des joysticks, utilisez la commande STRIG(n) ou les adresses 644 (pour le joystick 0), 645 (pour le joystick 1), (646 et 647 en plus pour les atari 600/800).

Les valeurs sont à zéro si le bouton est pressé.