AbsExecBase=$4
_LVOCreateIORequest=-$28E
_LVODeleteIORequest=-$294
_LVODeleteMsgPort=-$2A0
_LVOCreateMsgPort=-$29A
_LVOOpenDevice=-$1BC
_LVOCloseDevice=-$1C2
TDP_NOCLICK=$35

*******************************************************************************
* NoClick
* ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ
*	This small snippet of assembly source-code allows you to turns off/on
* the disk-drive clicking. Note: This one only works on OS2.0 and above!
*
* The first time its run the drive clicking is stopped. The second time it
* is re-enabled.
*******************************************************************************

_AllPatch	moveq	#0,d0			;df0 
		bsr.s	_PatchDrives
		moveq	#1,d0			;df1
		bsr.s	_PatchDrives
		moveq	#2,d0			;df2
		bsr.s	_PatchDrives
		moveq	#3,d0			;df3

_PatchDrives:	move.l	d0,d7			;save drive to patch for later

		move.l	(AbsExecBase).w,a6	;get execbase
		jsr	_LVOCreateMsgPort(a6)	;Generate a message port
		move.l	d0,a5			;save msg port ptr
		beq.s	PortFail		;exit if failed!

		move.l	a5,a0			;ptr to our msg port
		moveq	#48,d0
		jsr	_LVOCreateIORequest(a6)	;Do an IO request
		move.l	d0,a3			;save request ptr
		beq.s	IOFail			;exit if failed!

		lea	TDName.txt(pc),a0	;ptr to 'trackdisk' name
		move.l	d7,d0			;drive.. dfx
		move.l	a3,a1			;IO Request
		moveq	#0,d1
		jsr	_LVOOpenDevice(a6)	;Open the trackdisk device
		tst.b	d0			;did it fail?
		bne.s	TDFail			;if >0 failed to open!

		move.l	$18(a3),a0		;get ptr to public flags
		bchg	d0,TDP_NOCLICK(a0)	;fix critical bit (BIT 0!)
						;use BCLR 2 turn click back on!
CloseTD:	move.l	a3,a1
		jsr	_LVOCloseDevice(a6)	;close trackdisk device
TDFail:		move.l	a3,a0
		jsr	_LVODeleteIORequest(a6)	;kill the IO request
IOFail:		move.l	a5,a0
		jsr	_LVODeleteMsgPort(a6)	;delete the message port
PortFail:	moveq	#0,d0			;no cli error code
		rts

TDName.txt:	dc.b	'trackdisk.device',0
		even
