Table of Contents
JOY
[vic20] [c64] [c16] [cplus4] [c128] [x16] [m65]
The JOY() function returns the status of either joysticks.
Function header
DECLARE FUNCTION JOY AS BYTE (portnum AS BYTE) SHARED STATIC INLINE
Where portnum is an expression that evaluates to 1 or 2.
Note
On the Commodore VIC-20, portnum is ignored.
The return value is a BYTE where bits corresponding to a direction are set or unset. The direction to bit mapping if different on each target:
- On [c64] [c128] [m65]:
- Bit #0 is set if joystick is being pulled up
- Bit #1 is set if joystick is being pulled down
- Bit #2 is set if joystick is being pulled left
- Bit #3 is set if joystick is being pulled right
- Bit #4 is set if fire button is depressed
- On [vic20]:
- Bit #2 is set if joystick is being pulled up
- Bit #3 is set if joystick is being pulled down
- Bit #4 is set if joystick is being pulled left
- Bit #5 is set if fire button is depressed
- Bit #7 is set if joystick is being pulled right
- On [c16] and [cplus4]:
- Bit #0 is set if joystick is being pulled up
- Bit #1 is set if joystick is being pulled down
- Bit #2 is set if joystick is being pulled left
- Bit #3 is set if joystick is being pulled right
- Bit #6 is set if fire button is depressed on joystick 1
- Bit #7 is set if fire button is depressed on joystick 2
Example
Using the following example, you can read the joystick status on all platforms:
' Uncomment if target is VIC-20 'CONST JOYUP = 4 'CONST JOYDN = 8 'CONST JOYLT = 16 'CONST JOYRT = 128 'CONST J1FIRE = 32 ' Uncomment if target is C64 'CONST JOYUP = 1 'CONST JOYDN = 2 'CONST JOYLT = 4 'CONST JOYRT = 8 'CONST J1FIRE = 16 'CONST J2FIRE = 16 ' Uncomment if target is C16 or C Plus/4 'CONST JOYUP = 1 'CONST JOYDN = 2 'CONST JOYLT = 4 'CONST JOYRT = 8 'CONST J1FIRE = 64 'CONST J2FIRE = 128 DIM j AS BYTE lab: j = JOY(1) IF j = 0 THEN GOTO lab IF j AND JOYUP THEN PRINT " up"; IF j AND JOYDN THEN PRINT " down"; IF j AND JOYLT THEN PRINT " left"; IF j AND JOYRT THEN PRINT " right"; IF j AND J1FIRE THEN PRINT " fire"; PRINT "" GOTO lab