
	PAGE

;********************************************************
;*							*
;*		カーソル初期設定			*
;*							*
;********************************************************

CURSOR_INIT					; DE = 転送元
		LD	HL,CURSOR_INIT_ADDR
		LD	B,8
		CALL	MOVB_M
		XOR	A
		LD	(CURSOR_Y),A
		LD	(CURSOR_X),A
		CALL	CURSOR_TIMER_INIT
		RET


CURSOR_TIMER_INIT
		LD	A,(CURSOR_TIMER_MAX)
		DEC	A
		LD	(CURSOR_TIMER),A
		LD	A,(CURSOR_CHR_No2)
		LD	DE,OBJRAM +2
		LD	(DE),A
		RET


;********************************************************
;*							*
;*		カーソルの移動とOBJセット		*
;*							*
;********************************************************

CURSOR_MOV
		LD	A,(TRG1)
		LD	B,A

		BIT	D_KEY_BIT,B		; CURSOR_Y++
		JR	Z,_20
		LD	A,(CURSOR_Y_MAX)
		LD	C,A
		LD	A,(CURSOR_Y)
		INC	A
		CP	C
		JR	C,_10
		XOR	A
_10		LD	(CURSOR_Y),A
		CALL	CURSOR_TIMER_INIT

_20		BIT	U_KEY_BIT,B		; CURSOR_Y--
		JR	Z,_30
		LD	A,(CURSOR_Y)
		DEC	A
		CP	$FF
		JR	NZ,_21
		LD	A,(CURSOR_Y_MAX)
		DEC	A
_21		LD	(CURSOR_Y),A
		CALL	CURSOR_TIMER_INIT

_30		BIT	R_KEY_BIT,B		; CURSOR_X++
		JR	Z,_40
		LD	A,(CURSOR_X_MAX)
		LD	C,A
		LD	A,(CURSOR_X)
		INC	A
		CP	C
		JR	C,_31
		XOR	A
_31		LD	(CURSOR_X),A
		CALL	CURSOR_TIMER_INIT

_40		BIT	L_KEY_BIT,B		; CURSOR_X--
		JR	Z,_50
		LD	A,(CURSOR_X)
		DEC	A
		CP	$FF
		JR	NZ,_41
		LD	A,(CURSOR_X_MAX)
		DEC	A
_41		LD	(CURSOR_X),A
		CALL	CURSOR_TIMER_INIT

;--------------------------------------------------------

_50		LD	A,(CURSOR_Y)
		LD	B,A
		AND	A
		JR	Z,_62
		LD	A,(CURSOR_X_MAX)
		LD	C,A
		DEC	B
		JR	Z,_61
_60		ADD	A,C
		DEC	B
		JR	NZ,_60
_61		LD	B,A
_62		LD	A,(CURSOR_X)
		ADD	A,B
		LD	(CURSOR_INDEX),A	; INDEX = CURSOR_X_MAX * Y + X

		SLA	A
		LD	E,A
		LD	D,0
		LD	A,(CURSOR_POS_DATA)
		LD	L,A
		LD	A,(CURSOR_POS_DATA+1)
		LD	H,A
		ADD	HL,DE			; A = (CURSOR_POS_DATA)[A*2]
		LD	A,(HLI)

		LD	DE,OBJRAM		; OBJ0セット
		LD	(DE),A			; Y POS
		INC	DE

		LD	A,(HLI)
		LD	(DE),A			; X POS
		INC	DE

		LD	A,(CURSOR_TIMER_MAX)	; CHR No.替えによる点滅
		LD	B,A
		LD	A,(CURSOR_TIMER)
		INC	A
		CP	B
		JR	C,_72

		LD	A,(CURSOR_CHR_No1)
		LD	B,A
		LD	A,(DE)
		CP	B
		JR	Z,_70
		LD	A,B
		JR	_71
_70		LD	A,(CURSOR_CHR_No2)
_71		LD	(DE),A			; CHR No.( CHR_No1 or CHR_No2 )
		XOR	A
_72		LD	(CURSOR_TIMER),A

		INC	DE
		LD	A,(CURSOR_ATRB)
		LD	(DE),A			; ATRB

		RET


;********************************************************

	END
