CursorRegionController::init:
		lsg	global[$cd]
		selfID
		ne?
		bnt	code_00ae
		lag	global[$cd]
		bnt	code_0099
		pushi	$95		; 149, dispose
		push0
		send	$4
		bnot
code_0099:	selfID
		sag	global[$cd]
		pushi	$9f		; 159, add
		push1
		pushSelf
		class	GlobalDemons
		send	$6
		bnot
		pushi	$94		; 148, init
		push0
		super	Set, $4
		bnot
code_00ae:	ret

CursorRegionController::dispose:
		pushi	$58		; 88, 'X', delete
		push1
		pushSelf
		class	GlobalDemons
		send	$6
		bnot
		ldi	$0
		aTop	curRect
		pushi	$95		; 149, dispose
		push0
		super	Set, $4
		bnot
		ldi	$0
		sag	global[$cd]
		ret

CursorRegionController::doit:
		link	$6
		pushi	$f4		; 244, curEvent
		push0
		lag	global[$e]
		send	$4
		bnot
		sat	temp[$2]
		push1
		push0
		send	$4
		bnot
		sat	temp[$3]
		push2
		push0
		lat	temp[$2]
		send	$4
		bnot
		sat	temp[$4]
		lsp	param[$0]
		ldi	$1
		eq?
		bnt	code_00ef
		lap	param[$1]
code_00ef:	not
		bnt	code_0115
		pushi	$261		; 609, controls
		push0
		lag	global[$e]
		send	$4
		bnot
		push
		ldi	$0
		eq?
		bt	code_010d
		pushi	$2b		; 43, '+', type
		push0
		lat	temp[$2]
		send	$4
		bnot
		push
		ldi	$0
		ne?
code_010d:	bnt	code_0115
		ret

		bnt	code_0115
		jmp	code_01bd

code_0115:	pToa	curRect
		not
		bt	code_0151
		pushi	$89		; 137, top
		push0
		pToa	curRect
		send	$4
		bnot
		push
		lat	temp[$4]
		le?
		bnt	code_0150
		pprev
		pushi	$8a		; 138, bottom
		push0
		pToa	curRect
		send	$4
		bnot
		le?
		bnt	code_0150
		pushi	$87		; 135, left
		push0
		pToa	curRect
		send	$4
		bnot
		push
		lat	temp[$3]
		le?
		bnt	code_0150
		pprev
		pushi	$88		; 136, right
		push0
		pToa	curRect
		send	$4
		bnot
		le?
code_0150:	not
code_0151:	bnt	code_019a
		ldi	$0
		aTop	curRect
		sat	temp[$0]
code_0159:	lst	temp[$0]
		pushi	$5a		; 90, 'Z', size
		push0
		self	$4
		bnot
		lt?
		bnt	code_01bd
		pushi	$4b		; 75, 'K', at
		push1
		lst	temp[$0]
		self	$6
		bnot
		sat	temp[$1]
		bnt	code_0194
		pushi	$a3		; 163, contains
		push2
		lst	temp[$3]
		lst	temp[$4]
		send	$8
		bnot
		bnt	code_0194
		pushi	$54c		; 1356, inWhichList
		push1
		lst	temp[$2]
		lat	temp[$1]
		send	$6
		bnot
		aTop	curRect
		bnt	code_0194
		pushi	$45		; 69, 'E', doit
		push0
		pToa	curRect
		send	$4
		bnot
code_0194:	+at	temp[$0]
		jmp	code_0159

		jmp	code_01bd

code_019a:	pToa	curRect
		bnt	code_01bd
		pushi	$54c		; 1356, inWhichList
		push1
		lst	temp[$2]
		send	$6
		bnot
		sat	temp[$0]
		push
		pToa	curRect
		ne?
		bnt	code_01bd
		lat	temp[$0]
		bnt	code_01bd
		pushi	$45		; 69, 'E', doit
		push0
		lat	temp[$0]
		aTop	curRect
		send	$4
		bnot
code_01bd:	ret

CursorRegionController::reset:
		ldi	$0
		aTop	curRect
		pushi	$45		; 69, 'E', doit
		push1
		push1
		self	$6
		bnot
		ret

CursorRegion::init:
		pushi	$94		; 148, init
		push0
		super	Rect, $4
		bnot
		pToa	aCursor
		not
		bnt	code_01ef
		pushi	$8d		; 141, new
		push0
		&rest	$2
		class	Cursor
		send	$4
		bnot
		aTop	aCursor
		pushi	$8d		; 141, new
		push0
		class	Set
		send	$4
		bnot
		aTop	list
code_01ef:	lap	param[$0]
		bnt	code_01fd
		pushi	$9f		; 159, add
		push1
		pushSelf
		lap	param[$1]
		send	$6
		bnot
code_01fd:	ret

CursorRegion::dispose:
		pushi	$95		; 149, dispose
		push0
		pToa	aCursor
		send	$4
		bnot
		ldi	$0
		aTop	aCursor
		pToa	list
		bnt	code_021a
		pushi	$95		; 149, dispose
		push0
		send	$4
		bnot
		ldi	$0
		aTop	list
code_021a:	lag	global[$cd]
		bnt	code_0225
		pushi	$58		; 88, 'X', delete
		push1
		pushSelf
		send	$6
		bnot
code_0225:	pushi	$95		; 149, dispose
		push0
		super	Rect, $4
		bnot
		ret

CursorRegion::doit:
		lsg	global[$b]
		pToa	aCursor
		ne?
		bnt	code_0249
		pushi	$1b3		; 435, setCursor
		push2
		pTos	aCursor
		push1
		lag	global[$2]
		send	$8
		bnot
		pushi	$57		; 87, 'W', draw
		push0
		lag	global[$b]
		send	$4
		bnot
code_0249:	ret

CursorRegion::add:
		pToa	list
		bnt	code_0257
		pushi	$9f		; 159, add
		push0
		&rest	$1
		send	$4
		bnot
code_0257:	ret

CursorRegion::delete:
		pToa	list
		bnt	code_0264
		pushi	$58		; 88, 'X', delete
		push0
		&rest	$1
		send	$4
		bnot
code_0264:	ret

CursorRegion::eachElementDo:
		pToa	list
		bnt	code_0272
		pushi	$9d		; 157, eachElementDo
		push0
		&rest	$1
		send	$4
		bnot
code_0272:	ret

CursorRegion::inWhichList:
		link	$3
		lap	param[$0]
		bnt	code_027d
		lap	param[$1]
		jmp	code_0286

code_027d:	pushi	$f4		; 244, curEvent
		push0
		lag	global[$e]
		send	$4
		bnot
code_0286:	sat	temp[$2]
		pToa	list
		not
		bt	code_0296
		pushi	$5a		; 90, 'Z', size
		push0
		pToa	list
		send	$4
		bnot
		not
code_0296:	bnt	code_02c2
		pTos	top
		push2
		push0
		lat	temp[$2]
		send	$4
		bnot
		le?
		bnt	code_02bf
		pprev
		pToa	bottom
		le?
		bnt	code_02bf
		pTos	left
		push1
		push0
		lat	temp[$2]
		send	$4
		bnot
		le?
		bnt	code_02bf
		pprev
		pToa	right
		le?
		bnt	code_02bf
		selfID
		jmp	code_02c1

code_02bf:	ldi	$0
code_02c1:	ret

code_02c2:	ldi	$0
		sat	temp[$0]
code_02c6:	lst	temp[$0]
		pushi	$5a		; 90, 'Z', size
		push0
		pToa	list
		send	$4
		bnot
		lt?
		bnt	code_02f1
		pushi	$54c		; 1356, inWhichList
		push1
		lst	temp[$2]
		pushi	$4b		; 75, 'K', at
		push1
		lst	temp[$0]
		pToa	list
		send	$6
		bnot
		sat	temp[$1]
		send	$6
		bnot
		bnt	code_02ed
		lat	temp[$1]
		ret

code_02ed:	+at	temp[$0]
		jmp	code_02c6

code_02f1:	selfID
		ret

CursorRegion::setCursor:
		pToa	aCursor
		not
		bnt	code_0303
		pushi	$8d		; 141, new
		push0
		class	Cursor
		send	$4
		bnot
		aTop	aCursor
code_0303:	pushi	$1b3		; 435, setCursor
		push0
		&rest	$1
		pToa	aCursor
		send	$4
		bnot
		ret

