;APS000006FE000000000000000000000000000000000000000000000000000000000000000000000000

	incdir	includes:
	include	lvos.i
	include	exec/exec.i
	include	libraries/mrqutilities.i
	include	lvo/mrqutilities_lib.i
	include	libraries/commodities.i
	include	hardware/intbits.i

	section	"CODE",code

MOUSE	=	$12121212
KEY	=	$13131313

;-------
	move.l	$4,a6
	moveq	#$00,d0
	lea	mrqlib,a1
	jsr	_LVOOpenLibrary(a6)
	tst.l	d0
	beq.w	shit
	move.l	d0,mrqbase
	move.l	d0,a0
	move.l	commbase1(a0),_CxBase
	beq.w	commodities_out
	move.l	gfxbase1(a0),_GfxBase
	beq.w	commodities_out
;-------
	move.l	$4,a6
	jsr	_LVOCreateMsgPort(a6)
	move.l	d0,msgport
	beq.w	port_out
;-------
	move.l	_CxBase,a6
	moveq	#0,d0
	lea	newbroker,a0
	move.l	msgport,nb_Port(a0)	
	jsr	_LVOCxBroker(a6)
	move.l	d0,broker
	beq.w	out_broker

	lea	ix1,a5
	bsr.w	setfilter
	move.l	msgport,a0
	move.l	#MOUSE,a1
	bsr.w	attachfilter
	tst.l	d0
	bne	l21

	lea	ix2,a5
	bsr.w	setfilter
	move.l	msgport,a0
	move.l	#KEY,a1
	bsr.w	attachfilter
	tst.l	d0
	bne	l21

	move.l	_CxBase,a6
	moveq	#1,d0
	move.l	broker,a0
	jsr	_LVOActivateCxObj(a6)
	move.l	d0,d1

	lea	success,a0
	bsr.w	print
;-------
petla	move.l	_GfxBase,a6
	jsr	_LVOWaitTOF(a6)
	move.l	$4,a6
	move.l	msgport,a0
	jsr	_LVOGetMsg(a6)
	tst.l	d0
	beq.w	petla
	move.l	d0,a4
	move.l	a4,a0
	move.l	_CxBase,a6
	jsr	_LVOCxMsgType(a6)
	move.l	d0,d3
	move.l	a4,a0
	jsr	_LVOCxMsgID(a6)
	move.l	d0,d4
	move.l	a4,a1
	move.l	$4,a6
	jsr	_LVOReplyMsg(a6)
	cmp.l	#MOUSE,d4
	beq.b	mous
	cmp.l	#KEY,d4
	beq.b	ke
	cmp.l	#CXM_COMMAND,d3
	bne.w	petla
	move.l	d4,d0
	cmp.l	#CXCMD_DISABLE,d0
	beq.b	dis
	cmp.l	#CXCMD_ENABLE,d0
	beq.b	en
	cmp.l	#CXCMD_APPEAR,d0
	beq.b	app
	cmp.l	#CXCMD_DISAPPEAR,d0
	beq.b	diss
	cmp.l	#CXCMD_KILL,d0
	beq.b	kil
	cmp.l	#CXCMD_UNIQUE,d0
	beq.b	uniq
	bra.w	petla
;-------
mous	lea	mousemove,a0
	bsr.w	print
	bra.w	petla
ke	lea	keypressed,a0
	bsr.w	print
	bra.w	petla
dis	lea	disable,a0
	bsr.w	print
	bra.w	petla
en	lea	enable,a0
	bsr.w	print
	bra.w	petla
app	lea	appear,a0
	bsr.w	print
	bra.w	petla
diss	lea	dissapear,a0
	bsr.w	print
	bra.w	petla
kil	lea	kill,a0
	bsr.w	print
	bra.b	exit
uniq	lea	unique,a0
	bsr.w	print
;-------
exit	moveq	#0,d7
	moveq	#0,d0
	move.l	broker,a0
	move.l	_CxBase,a6
	jsr	_LVOActivateCxObj(a6)
	move.l	d0,d1
	bra.b	l54
l21
	lea	l53,a0
	bsr.w	print
l54
	move.l	_CxBase,a6
	move.l	broker,a0
	jsr	_LVODeleteCxObjAll(a6)
	bra.b	l56
out_broker
	lea	l57,a0
	bsr.w	print
l56
	move.l	$4,a6
	move.l	msgport,a0
	jsr	_LVODeleteMsgPort(a6)
	bra.b	l58
port_out
	lea	l59,a0
	bsr.w	print
l58
	move.l	$4,a6
	move.l	mrqbase,a1
	jsr	_LVOCloseLibrary(a6)
	bra.b	shit
commodities_out
	lea	l61,a0
	bsr.w	print
;-------
shit	moveq	#20,d0
	rts
;-------
setfilter
	moveq	#0,d2
	move.l	#0,a1
	move.l	#0,a0
	moveq	#CX_FILTER,d0
	move.l	_CxBase,a6
	jsr	_LVOCreateCxObj(a6)
	move.l	d0,a2
	move.l	a2,a3
	move.l	a3,d0
	beq.b	l3
	move.l	a5,a0
	move.l	a0,a1
	move.l	a3,a0
	jsr	_LVOSetFilterIX(a6)
l3	move.l	a3,a5
	rts
;-------
attachfilter
	moveq	#CX_SEND,d0
	move.l	_CxBase,a6
	jsr	_LVOCreateCxObj(a6)
	move.l	d0,a2
	move.l	a2,a1
	move.l	a5,a0
	jsr	_LVOAttachCxObj(a6)
	move.l	a5,a1
	move.l	broker,a0
	jsr	_LVOAttachCxObj(a6)
	move.l	broker,a0
	jsr	_LVOCxObjError(a6)
	rts
;-------
print	move.l	a6,-(a7)
	move.l	mrqbase,a6
	jsr	_LVOPrint(a6)
	move.l	(a7)+,a6
	rts
;-------
_CxBase		dc.l	$00
_GfxBase	dc.l	$00
mrqbase		dc.l	$00
msgport		dc.l	$00
filter		dc.l	$00
broker		dc.l	$00
;-------
ix1	dc.b	IX_VERSION
	dc.b	IECLASS_RAWMOUSE
	dc.w	$00,$00,$00,$00,$00
;-------
ix2	dc.b	IX_VERSION
	dc.b	IECLASS_RAWKEY
	dc.w	$00,$00,$00,$00,$00
;-------
newbroker	dc.b	NB_VERSION
		dc.b	NULL
		dc.l	cx_prgname
		dc.l	cx_comment1
		dc.l	cx_comment2
		dc.w	NBU_UNIQUE|NBU_NOTIFY
		dc.w	COF_SHOW_HIDE
		dc.b	0
		dc.b	NULL
		dc.l	0
		dc.w	0
;-------
mrqlib	dc.b	'mrqutilities.library',$00
;-------
break		dc.b	'Break!',$0a,$00
mousemove	dc.b	'This is a MouseMove!',$0a,$00
keypressed	dc.b	'This is a KeyPress!',$0a,$00
disable		dc.b	'Disable!',$0a,$00
enable		dc.b	'Enable!',$0a,$00
appear		dc.b	'Appear!',$0a,$00
dissapear	dc.b	'Dissapear!',$0a,$00
kill		dc.b	'Kill!',$0a,$00
unique		dc.b	'Unique!',$0a,$00
success		dc.b	'CxMouse initialized sucessfully!',$0a
		dc.b	'Press CTRL-C, run it twice or remove it ',$0a
		dc.b	'in Exchange to quit...',$0a,$00
l53		dc.b	'Could not create broker child objects!',$0a,$00
cx_prgname	dc.b	'CxMouse',$00
cx_comment1	dc.b	'CxMouse',$00
cx_comment2	dc.b	'Show mouse events.',$00
l57		dc.b	'Could not create broker!',$0a,$00
l59		dc.b	'Could not create broker port!',$0a,$00
l61		dc.b	'Could not open commodities.library V38+!',$0a,$00
;-------
