*  Amiga 4-button joystick code...
*
*  Stick discovery by Ed Bamber
*  Code created by Anthony Ball
*
*  (C)1992 Anthony Ball & Edmund Bamber
*
*  We must be credited if this routine is to be used in any code
*
*  Requires a megadrive joystick with wires 5 & 7 swapped
*
*  Returns:   d0 register "Stick Bits"   76543210
*                                        ABCDUDLR
*  ABCD... Different buttons  U=Up  D=Down  L=Left  R=Right
*
*  Amiga Format Note: Thanks to Craig Proctor for his method
*  But Pat McDonald regrets that he mislaid it. Sorry Craig - forgot my password to Cyberspace
*  This one is just as good though.
*
chip		equ	$dff000			* chips
joy1dat		equ	$00c			* joystick 1 data
potinp		equ	$016			* pot port data read
potgo		equ	$034			* pot port data write and start
piaa		equ 	$bfe001			* 8520 port A
pra		equ	$000			* reg 0 peripheral data register a

Getstick	lea 	chip,a6
		moveq	#0,d2
		btst.b	#7,piaa+pra		* button A pressed?
		bne.s	.Not1			* No!
		or	#$80,d2
.Not1		btst.b	#6,potinp(a6)		* button B pressed?
		bne.s	.Not2			* No!
		or	#$40,d2
.Not2		move	#$e000,potgo(a6)	* Set 5 volt port on
		move	joy1dat(a6),d0		* Get stick for player
		and	#$0303,d0		* Keep only the bits needed
		move	d0,d1
		lsr	#6,d0			* Make Table Smaller!
		or.b	d1,d0
		move.b	.Table(pc,d0),d0	* Get converted byte
		or	d2,d0
		btst.b	#7,piaa+pra		* button C pressed?
		bne.s	.Not3			* No!
		or	#$20,d0
.Not3		btst.b	#6,potinp(a6)		* button D pressed?
		bne.s	.Not4			* No!
		or	#$10,d0
.Not4		move	#$f000,potgo(a6)	* Ready for next read
		rts
.Table		dc.l	$00040501,$08000109,$0a020008,$02060400
