Revenir au plan du site


Joystick analogiques

Le plus possède un port analogique sur lequel on peut brancher deux joysticks (les manettes sont hélas impossibles à trouver mais on peut se bricoler des choses avec des potentiomètres et un coup de fer à souder). Il y a 4 lignes analogiques, deux par manette puisque chaque manette envoie l'axe X et l'axe Y.

Les valeurs peuvent être lue aux adresses #6808, #6809, #680A et #680B. Le résultat est compris entre 0 et 63. Avec une manette correctement calibrée le centre correspond à la valeur 32.

Lecture des valeurs du port analogique
Adresse ASIC Correspondance
#6808 Joystick 0 - Axe horizontal X
#6809 Joystick 0 - Axe vertical Y
#680A Joystick 1 - Axe horizontal X
#680B Joystick 2 - Axe vertical Y


Voici un programme simple et très visuel utilisant la manette analogique du premier port. L'axe des X change le bleu et l'axe des Y change le vert.
MODE_0 equ 0: MODE_1 equ 1: MODE_2 equ 2: MODE_3 equ 3: CLEAR_INT equ %10000: ROM_OFF equ %1100
ROM_BOTH equ 0: ROM_UP equ %100: ROM_LOW equ %1000: INTRESET equ %10000: ASICOFF equ 0
ROM0000 equ 0: ROM4000 equ %01000: ROM8000 equ %10000: ASICON equ %11000
ROM0 equ 0 : ROM1 equ 1 : ROM2 equ 2 : ROM3 equ 3 : ROM4 equ 4 : ROM5 equ 5 : ROM6 equ 6 : ROM7 equ 7

macro RMR tags : ld a,{tags}+%10000000 : ld b,#7F : out (c),a : mend
macro RMR2 tags : ld a,{tags}+%10100000 : ld b,#7F : out (c),a : mend

BUILDSNA
SNASET CPC_TYPE,4 ; indiquer un 6128 Plus dans le snapshot
BANKSET 0
ORG #100
RUN #100

RMR ROM_OFF|MODE_0 ; surtout pas les ROM!
call UnlockAsic
RMR2 ASICON
;----------------------------------
loop
ld hl,#6808
ld a,(hl)
srl a : srl a : ld (#6400),a
ld hl,#6809
ld a,(hl)
srl a : srl a : ld (#6401),a
jr loop
;----------------------------------
UnlockAsic
ld bc,#BCFF
out (c),c
out (c),0
ld hl,%1001000011101010
.loop
out (c),c
ld a,h:rlca:ld h,l:ld l,a
srl c:res 3,c
and #88
or c
ld c,a
cp #4D
jr nz,.loop
ld a,#CD
out (c),a : out (c),a
ret