		tst.w	control_disabled-mm(a4)
		bne.w	locret_0_75C

		moveq	#0,d1
		lea	controller_1_data1-mm(a4),a0
		move.l	(a0)+,controller_1_data3-mm(a4)
		move.l	(a0),controller_3_data3-mm(a4)
		move.l	d1,-(a0)
		move.l	d1,(a0)

		movem.l	d2-d5,-(sp)
		movea.l	#IO_CT1_DATA,a0
		lea	2(a0),a1	; A10005		
		move.w	#$FF00,d1	; 0000FF00

		move.b	#$C,(a1)
		bsr.s	joystick_readport
		move.l	d0,controllers_data-mm+10(a4)

		move.b	#$1C,(a1)
		bsr.s	joystick_readport
		move.l	d0,controllers_data-mm+20(a4)

		move.b	#$2C,(a1)
		bsr.s	joystick_readport
		move.l	d0,controllers_data-mm+30(a4)

		move.b	#$3C,(a1)
		bsr.s	joystick_readport
		move.l	d0,controllers_data-mm+40(a4)
		

		
		lea	controllers_data-mm(a4),a0
		movea.l	a4,a1
		move.w	controllers_unknown-mm(a4),d3
		moveq	#4,d2
		moveq	#$A,d4

loc_0_72C:
		adda.w  d4,a0
		tst.w	(a0)
		dbne	d2,loc_0_72C
		beq.s	loc_0_758
		move.w	2(a0),d0
		move.w	d0,controller_1_data1-mm(a1)
		move.w	controller_1_data3-mm(a1),d1
		eor.w	d1,d0
		and.w	controller_1_data1-mm(a1),d0
		or.w	d0,controller_1_data2-mm(a1)
		addq.w	#2,a1
		subq.w	#1,d3
		beq.s	loc_0_758
		dbf	d2,loc_0_72C

loc_0_758:
		movem.l	(sp)+,d2-d5

locret_0_75C:
		rts
; End of function joysticks_driver


; =============== S U B	R O U T	I N E =======================================


joystick_readport:

		
		move.b	#$40,6(a0)
		moveq	#0,d0
		nop
		nop
		move.b	#$40,(a0)
		moveq	#0,d2
		nop
		nop
		nop
		move.b	(a0),d2
		cmpi.b	#$70,d2
		beq.s	locret_0_75C
		move.b	d1,(a0)
		lsl.w	#8,d2
		move.b	(a0),d2
		cmpi.b	#$3F,d2
		beq.s	locret_0_75C
		move.b	#$40,(a0)
		moveq	#0,d3
		nop
		nop
		nop
		move.b	(a0),d3
		move.b	d1,(a0)
		lsl.w	#8,d3
		move.b	(a0),d3
		move.b	#$40,(a0)
		moveq	#0,d4
		nop
		nop
		nop
		move.b	(a0),d4
		move.b	d1,(a0)
		lsl.w	#8,d4
		move.b	(a0),d4
		move.b	#$40,(a0)
		moveq	#0,d5
		nop
		nop
		nop
		move.b	(a0),d5
		move.b	d1,(a0)
		lsl.w	#8,d5
		move.b	(a0),d5
		move.b	#$40,(a0)
		cmp.w	d2,d3
		bne.s	locret_readport
		cmp.w	d3,d4
		beq.s	readport_ex
		andi.w	#$F,d4
		bne.s	locret_readport
		move.b	d2,d0
		lsl.w	#4,d0
		lsr.w	#8,d2
		move.b	d2,d0
		lsl.b	#2,d0
		lsl.w	#6,d0
		and.l	d1,d0
		lsr.w	#8,d5
		or.w	d5,d0
		ori.l	#$800000F0,d0
		eori.w	#$FFFF,d0
locret_readport:
		rts
; ---------------------------------------------------------------------------

readport_ex:
		move.b	d2,d0
		lsl.w	#4,d0
		lsr.w	#8,d2
		move.b	d2,d0
		lsl.b	#2,d0
		lsl.w	#6,d0
		and.l	d1,d0
		eor.w	d1,d0
		ori.l	#$1000000,d0
		rts
; ---------------------------------------------------------------------------