
vwait		cmpi.b	#255,$dff006	; wait for vpos
		bne.s	vwait

		bsr	joycontrol	; call joystick reader routine
		bsr	checkjoy	; lets investigate what was pressed

		btst.b	#6,$bfe001	; left mouse 
		bne.s	vwait
		rts

*****************************************************************************
* JOYCONTROL: Allows easy detection of Joystick movements
* -------------------------------------------------------
* The routine checks movement & sets bits so that detection of directional 
* joystick movement is possible. 
*
* INPUTS:  Joystick movements. No Parameters need setting
* OUTPUTS: d2 - bits set corresponding to movements. See Example!
*****************************************************************************
Fire		= 0
Left		= 1
Right		= 2
Up		= 3
Down		= 4

JoyControl:	lea	$dff000,a5	; ptr to hardware registers in a5
		moveq	#0,d2		; erase all previous joystick settings
		tst.b	$bfe001		; check if fire pressed..
		bmi.s	NoFire		; was fire button pressed?
		bset	#Fire,d2	; set 'fire' button as being pressed!
NoFire:		move.w	$c(a5),d0	; read joy0dat, put into d0
		btst	#1,d0		; was 'right' pressed with joystick?
		beq.s	TstLeft		; if=0 not set, lets check left...
		bset	#Right,d2	; set 'right' movement as being pressed
		bra.s	TstDown		; lets test Up/Down Movements aswell!
TstLeft		btst	#9,d0		; was 'Left' movement set?
		beq.s	TstDown		; lets check down movement..
		bset	#Left,d2	; set 'Left' movement bit
TstDown		move.w	d0,d1		; make copy of joydat, puts it into d1
		lsr.w	#1,d1		; divide by two..
		eor.w	d0,d1		; exclusive or together, up/donw in d1
		btst	#0,d1		; was 'Down' movement selected?
		beq.s	TstUp		; lets check up movement...
		bset	#Down,d2	; set 'down' movement bit
		rts			; exit routine..
TstUp		btst	#8,d1		; was up movement selected?
		beq.s	NoActivity	; no movement occured with joystick...
		bset	#up,d2		; 'up' movement was selected.. set bit
NoActivity	rts			; exit routine..

*******************************************************************************
* d2=movement bits... as set by 'JoyControl' routine

CheckJoy	btst	#Fire,d2
		beq.s	NotFire
		move.w	#$f0f,$180(a5)	;routine to call, fire was pressed

NotFire		btst	#Left,d2
		beq.s	NoLeft
		move.w	#$f00,$180(a5)	;left

NoLeft		btst	#Right,d2
		beq.s	NoRight
		move.w	#$ff0,$180(a5)	;right

NoRight		btst	#Up,d2
		beq.s	NoUp
		move.w	#$fff,$180(a5)	;up

NoUp		btst	#Down,d2
		beq.s	NoDown
		move.w	#$00f,$180(a5)	;down
NoDown		rts

