	.TITLE	JOYSTK


;	* * * JOYSTICK OPTION SOFTWARE MODULE * * *


;	PROVIDES FORTRAN-COMPATIBLE SOFTWARE-ONLY ACCESS TO DATA FROM
;	THE DE ANZA SYSTEMS, INC. JS-200 JOYSTICK & INTERFACE.

;	THE SUBROUTINE MAY BE INVOKED WITH 1 TO 5 ARGUMENTS:

;		CALL JOYSTK (IJOYST[, IAKNOB][, IBKNOB][, IX][, IY])

;	THE FIRST (MANDATORY) ARGUMENT WILL BE LOADED WITH THE CONTENTS OF
;	THE JOYSTICK STATUS BYTE, THE BITS OF WHICH CORRESPOND TO SETTINGS
;	OF THE JOYSTICK MODULE SWITCHES AS FOLLOWS:

;		BIT 0:	0 = CURSOR #1 OFF
;			1 = CURSOR #1 ON

;		BIT 1:	0 = CURSOR #2 OFF
;			1 = CURSOR #2 ON

;		BIT 2:	0 = RATE MODE
;			1 = POSITION (ABSOLUTE) MODE

;		BIT 3:	0 = ENTER IS QUIESCENT
;			1 = ENTER HAS BEEN DEPRESSED (READING STATUS RESETS)

;		BIT 4:	0 = TRACK (AUTO ENTER) OFF
;			1 = TRACK ON

;		BITS 5-7: UNUSED
	.PAGE
;	REMAINING (OPTIONAL) ARGUMENTS ARE LOADED WITH THE ANALOG INPUTS FROM
;	THE JOYSTICK MODULE:

;		IAKNOB	= OPTIONAL KNOB A
;		IBKNOB	= OPTIONAL KNOB B
;		IX	= JOYSTICK X DISPLACEMENT
;		IY	= JOYSTICK Y DISPLACEMENT

;	RANGE OF ALL INPUTS IS APPROXIMATELY -120 TO +120.

;	ALL NEW CODE: 24 APRIL 78
;	MODIFICATIONS TO DELETE WAITING FOR ENTER: 11 MAY 78

;	PROGRAMMER: KEN DINWIDDIE

	.MCALL	.REGDEF

	.REGDEF

	.GLOBL	JOYSTK

	JOYCTL	= 166017	; JOYSTICK CONTROL REGISTER DEFINITION
	.PAGE
JOYSTK:	MOV	(R5)+,R4	; ACQUIRE ARGUMENT COUNT
	MOV	#3,R1		; INITIALIZE FOR STATUS BYTE
	MOVB	R1,@#JOYCTL	; SELECT STATUS BYTE
	MOVB	@#JOYCTL,R0	; READ STATUS BYTE FROM JOYSTICK MODULE
	BIC	#177400,R0	; STRIP TO LOW BYTE
	MOV	R0,@(R5)+	; AND PASS TO TARGET LOCATION
JYSTK1:	DEC	R4		; ACCOUNT FOR THIS ARGUMENT
	BEQ	DONE		; IF LAST ARGUMENT SPECIFIED
	INC	R1		; ADVANCE POINTER TO NEXT JOYSTICK REGISTER,
	MOVB	R1,@#JOYCTL	; SELECT IT,
	MOVB	@#JOYCTL,R0	; AND ACQUIRE DATA EXTENDING SIGN
	BIC	#177400,R0	; STRIP TO LOW BYTE
	SUB	#200,R0		; BIAS TO -128 TO +127 MAX.
	MOV	R0,@(R5)+	; PLACE DATA IN TARGET LOCATION
	BR	JYSTK1		; AND GO FOR THE NEXT ELEMENT
DONE:	RTS	PC		; RETURN TO CALLER
	.END
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        