MZ-700 – Joystick

Joystick MZ-1X03

Operating instructions

How to connect

Check to be sure that power to the MZ-700 series unit as well as to the peripheral equipment are all OFF.

Remove the cover on the Joy Stick connector located on the left side of the rear panel of the MZ-700 unit. Save the cover, and attach again when disconnecting the cable.

With the projection facing up, connect the cable to either the left or right connector. If both connectors are connected, 2 Joy Sticks can be used simultaneously.

Functions related to the Joy Stick

The function JOY is completely defined in the S-Basic for the MZ-700 series.

Format: JOY ( n )
n: integer from 0 to 7
Example: M = JOY ( I )
N = JOY ( B )
 Function: Inputs data from the Joy Stick
There are 2 types of input data:
For argument n, 0 – 3
Stick position
meaning
0
value of the X-axis of stick 1
1
value of the Y-axis of stick 1
2
value of the X-axis of stick 2
3
value of the Y-axis of stick 2
Value of function JOY ( n ) ranges 0 – 255
For argument n, 4 – 7
State
meaning
4
state of SW1 of stick 1
5
state of SW2 of stick 1
6
state of SW1 of stick 2
7
state of SW2 of stick 2
Values of function JOY ( n )
 0
switch is in OFF state
-1
switch is in ON state

Program Examples

Program A

A program which moves the character  in the direction the Joy Stick is moved. ( One space is left opened on the right edge of the screen. )

 This is an example for stick 1. To use this example for stick 2, change the argument of the JOY function in lines 20 and 30. ( 0 to 2, 1 to 3 )

   10 PRINT ""
   20 X=INT(JOY(0) / 6.5)
   30 Y=INT(JOY(1) / 10.6)
   40 IF X=39 THEN X=38
   50 CURSOR X,Y
   60 PRINT " ";
   70 FOR A=0 TO 20:NEXT
   80 CURSOR X,Y
   90 PRINT " ";
   100 GOTO 20

Program B

This is a program which takes the input from the Joy Stick to correspond to a semi-graphic display on the screen.

If SW1 or SW2 is pressed, the color of the dot changes in sequence from 1 to 7. To use this example for stick 2 ( connected to the right connector ), change B = 0 in line 10 to B = 2.

   10 B0=:C=1:F=1:COLOR ,,7,0:PRINT ""
   20 JX=INT(JOY(B) / 3.2)
   30 JY=INT(JOY(B+1) / 5.2)
   40 SET JX,JY,C
   50 CURSOR 2,2:PRINT JX,JY,C,
   60 IF(JOY(B+4))+(JOY(B+5)) GOTO 80
   70 F=0:GOTO 20
   80 IF F=0 GOSUB 100
   90 GOTO 20
   100 F=1:C=C+1:IF C=8 THEN C=0
   110 RETURN

Program C

This is a program which takes the input from the Joy Stick to correspond to a semi-graphic display on screen. If SW1 is pressed, the color of the dot changes in sequence from 1 to 7. If SW2 is pressed, the set and reset mode of the dot changes. If SW2 is pressed while SW1 is being pressed, and then if SW1 is released, the screen clears. To use this example for stick 2 ( connected to the right connector ), change B = 0 in line 10 to B = 2.

   10 B=0:F=1:COLOR ,,7,0:PRINT ""
   20 JX=INT(JOY(B) / 3.2
   30 JY=INT(JOY(B+1) / 5.2
   40 SET JX,JY,C
   50 CURSOR 2,2:PRINT JX,JY,F,
   60 IF JOY(B+4) GOSUB 100
   70 IF JOY(B+5) GOSUB 130
   80 IF F THEN RESET JX,JY
   90 GOTO 20
   100 W=B+4:GOSUB 150:IF JOY(B+5) THEN PRINT "":GOTO    140
   110 C=C+1:W=B+4:IF C=8 THEN C=0
   120 GOTO 150
   130 F=(F=0)
   140 W=B+5
   150 IF JOY(W) THEN 150
   160 RETURN

How to use at machine language level

A machine language program example is given which reads the state of the Joy Stick. The program given here reads the position of sticks 1 and 2, as well as the state of SW1 and SW2. The program is given as a subroutine.

It is assumed that this program will be used as a subroutine. The result is returned to register A. If the switch is pressed, the subroutine returns a value other than 0 to register A.

 This program can be used in the address range of $0000 to $CFFF. It can be used beyond $D000 only in the V-RAM mode.

You can download this program ( 4KB ), it contains the assembler input and output, and a MZF-formatted file.