
	PAGE

;********************************************************
;*							*
;*		LCDC割り込みテスト 初期設定		*
;*							*
;********************************************************

LCDCINT_TEST_INIT
		CALL	LCDC_OFF

		BGCLR	$00,VBK_1
		BGCLR	SPACE,VBK_0
		BGSET	LCDCBG,VBK_0

		OBJCLR

		VECTOR	VBLK,LCDCINT_TEST_VBLK_INT
		VECTOR	HBLK,LCDCINT_TEST_LCDC_INT

		NEXT_MAIN	LCDCINT_TEST

		LD	A,STAT_INT_LYC_LY	; LYC=LY一致割り込み ON
		LD	(STAT),A

		XOR	A
		LD	(R0),A			; 割り込みカウンタ
		LD	(R1),A

		LD	HL,IE_BUF		; LCDC割り込み OFF
		RES	IE_LCDC_BIT,(HL)
		CALL	IE_SET

		CALL	LCDC_ON

		RET


;********************************************************
;*							*
;*		LCDC割り込みテスト LCDC割り込み		*
;*							*
;********************************************************

LCDCINT_TEST_LCDC_INT
		DI
		PUSH	AF
		PUSH	HL

		LD	HL,R0
		INC	(HL)
		JR	NZ,_10
		INC	HL
		INC	(HL)

_10		POP	HL
		POP	AF
		EI
		RETI


;********************************************************
;*							*
;*		LCDC割り込みテスト			*
;*							*
;********************************************************

LCDCINT_TEST
		LD	A,(CNT1)
		BIT	A_KEY_BIT,A
		JR	Z,_10
		LD	A,(TRG1)

_10		LD	HL,LYC
		BIT	U_KEY_BIT,A		; LYC++
		JR	Z,_20
		INC	(HL)
		JR	_40

_20		BIT	D_KEY_BIT,A		; LYC--
		JR	Z,_30
		DEC	(HL)
		JR	_40

_30		LD	A,(TRG1)
		LD	B,A

		BIT	SE_KEY_BIT,B		; モード選択切替
		JR	Z,_40
		LD	A,(STAT)
		LD	D,A
		AND	$07
		LD	C,A
		LD	A,D
		AND	$78
		ADD	A,A
		CP	$80
		JR	NZ,_31
		LD	A,STAT_INT_HBLK
_31		ADD	A,C
		LD	(STAT),A
		JR	_50

_40		BIT	ST_KEY_BIT,B		; LCDC割り込み ON/OFF
		JR	Z,_50
		LD	A,(IE_BUF)
		XOR	IE_LCDC
		LD	(IE_BUF),A
		CALL	IE_SET

;--------------------------------------------------------

_50		LD	A,(CNT1)
		CP	A_KEY | B_KEY
		RET	NZ

		LD	A,STAT_INT_HBLK		; モード00(H-BLANK割り込み)選択
		LD	(STAT),A

		LD	HL,IE_BUF
		RES	IE_LCDC_BIT,(HL)	; LCDC割り込み OFF
		CALL	IE_SET

		NEXT_MAIN	SET_BG_TITLE
		RET


;********************************************************
;*							*
;*		LCDC割り込みテスト V-BLANK割り込み	*
;*							*
;********************************************************

LCDCINT_TEST_LYC_DSP_ADDR	=	$98F1
LCDCINT_TEST_MODE_DSP_ADDR	=	$9931
LCDCINT_TEST_INT_DSP_ADDR	=	$9972

LCDCINT_TEST_VBLK_INT
		PUSH	AF
		PUSH	BC
		PUSH	DE
		PUSH	HL

		LD	BC,LCDCINT_TEST_LYC_DSP_ADDR
		LD	A,(LYC)
		CALL	GET_NUM

		LD	BC,LCDCINT_TEST_MODE_DSP_ADDR
		LD	A,(STAT)
		BIT	3,A
		JR	Z,_10
		LD	A,$00
		JR	_13
_10		BIT	4,A
		JR	Z,_11
		LD	A,$01
		JR	_13
_11		BIT	5,A
		JR	Z,_12
		LD	A,$10
		JR	_13
_12		LD	A,$FF
_13		CALL	GET_NUM

		LD	BC,LCDCINT_TEST_INT_DSP_ADDR
		LD	A,(R0)
		CALL	GET_NUM
		LD	BC,LCDCINT_TEST_INT_DSP_ADDR -2
		LD	A,(R1)
		CALL	GET_NUM

;--------------------------------------------------------

		LD	HL,VBCOUNT
		INC	(HL)

		LD	A,1
		LD	(VBLK_FLG),A

		POP	HL
		POP	DE
		POP	BC
		POP	AF

		RETI


;********************************************************

	END
