How to query the MultiJoy Interface#
General Information#
The MultiJoy is an adapter to connect 8 or 16 Joysticks to a ATARI 8Bit (600XL, 800XL, 130XE, ...). The MultiJoy was designed by Radek Sterba (RASTER). You can find detail Information on thi adapter on http://www.infos.cz/raster/atari/hw/multijoy.htm
Mathy van Nisselroy has information about MultiJoy Games on his site --> http://www-users.rwth-aachen.de/mathy.van_nisselroy/stuff.htm
Assembler / Machine Language#
First you must initialize the communication direction of the ports. The pins of Joystick 1 work as Input and the pins of Joystick 0 work as output.This has to be done once at the start of the program.
LDA #$30 ; clear BIT 2 of PACTL (direction control register) STA $D302 ;PACTL, control read/write direction with PORTA LDA #$F0 ;4 upper bits=OUT (Joystick 1),4 lower bits=IN (Joystick 0) STA $D300 ;PORTA, set directions LDA #$34 ; restore OS default value for PACTL STA $D302 ;PACTL
Now we can query the joysticks:
LDA #0 ;Number of the Joystick to query (0-7 for MultiJoy, 0-15 for MultiJoy16) ASL A ; multiply by 16 ASL A ASL A ASL A STA $D300 ;PORTA, select Joystick to read LDA $D300 ;PORTA, read value AND #$0F ; mask out upper 4 bits
The joystick button can be queried after selection of the joystick with register TRIG0:
LDA $D010 ;TRIG0
You must take care to synchronize the queries. Especially take care that not players on the first Joysticks have any unfair opportunities.
Basic / Turbo Basic#
BASIC#
Initializing:
POKE 54018,48 : REM control read/write direction with PORTA POKE 54016,240 : REM 4 upper bits=OUT (Joystick 1),4 lower bits=IN (Joystick 0) POKE 54018,52 : REM restore OS default value for PACTL
Query the Joystick:
POKE 54016,NUM*16 : REM NUM = Number of Joystick (0-7/0-15) ST=STICK(0) : REM read Joystick value TR=STRIG(0) : REM read Trigger value
TURBO BASIC#
Initializing:
POKE $D302,$30 POKE $D300,$F0 POKE $D302,$34
Query the Joystick:
POKE $D300,NUM*$10 : REM NUM = Number of Joystick (0-7/0-15) PAUSE %1 : REM wait for value ST=STICK(%0) : REM read Joystick value TR=STRIG(%0) : REM read Trigger value
ACTION!#
to be added
Quick#
to be added
FORTH#
to be added