
	PAGE

;********************************************************
;*							*
;*		DMAテスト初期設定			*
;*							*
;********************************************************

DMA_TEST_INIT
		CALL	LCDC_OFF

		BGCLR	$00,VBK_1		; スクリーンカラーセット
		MCLR	BGRAM2,$400,$01		; BGRAM1:黒  BGRAM2:赤

		BGCLR	SPACE,VBK_0
		BGSET	DMABG,VBK_0

		OBJCLR
		MOVB	DMAOBJ,OBJRAM,28

		LD	B,8			; DMA転送元データセット
		LD	C,0
_00		LD	A,C
		LD	(SVBK),A
		ADD	A,$E0
		PUSH	BC
		MCLR	WRAMH,$800,A
		POP	BC
		INC	C
		DEC	B
		JR	NZ,_00

		LD	A,0			; 転送元エリア初期バンク
		LD	(SVBK),A

		XOR	A
		LD	(SCY_BUF),A
		LD	(SCX_BUF),A

		LD	(R0),A			; 転送数カウンタ
		LD	(R1),A			; DMA方式記録用

		VECTOR	VBLK,DMA_TEST_VBLK_INT	; V-BLANK割り込みベクタ セット

		NEXT_MAIN	DMA_TEST

		LD	A,LCDC_START | LCDC_OBJ_ON | LCDC_BG_ON
		LD	(LCDC_BUF),A
		CALL	LCDC_ON

		RET


;********************************************************
;*							*
;*		DMAテスト				*
;*							*
;********************************************************

DMA_TEST
		LD	A,(CNT1)
		BIT	A_KEY_BIT,A
		JR	Z,_00
		LD	A,(TRG1)
_00		LD	B,A

		BIT	U_KEY_BIT,B
		JR	Z,_20
		LD	A,(R0)
		INC	A
		BIT	7,A
		JR	Z,_10
		XOR	A
_10		LD	(R0),A

_20		BIT	D_KEY_BIT,B
		JR	Z,_30
		LD	A,(R0)
		DEC	A
		BIT	7,A
		JR	Z,_21
		LD	A,$7F
_21		LD	(R0),A

_30		LD	A,(TRG1)
		LD	B,A

		BIT	R_KEY_BIT,B
		JR	Z,_40
		LD	A,(SVBK)
		INC	A
		AND	$07
		LD	(SVBK),A

_40		BIT	L_KEY_BIT,B
		JR	Z,_50
		LD	A,(SVBK)
		DEC	A
		AND	$07
		LD	(SVBK),A

_50		BIT	SE_KEY_BIT,B
		JR	Z,_60
		LD	A,(R1)
		XOR	$80
		LD	(R1),A

_60		BIT	ST_KEY_BIT,B
		JR	Z,_70
		NEXT_MAIN	DMA_START

;--------------------------------------------------------

_70		LD	A,(CNT1)
		CP	A_KEY | B_KEY
		RET	NZ

		LD	A,LCDC_START | LCDC_OBJ_ON | LCDC_BG_ON
		LD	(LCDC_BUF),A

		NEXT_MAIN	SET_BG_TITLE
		RET


;********************************************************
;*							*
;*		転送スタート				*
;*							*
;********************************************************

DMA_START
		CALL	LCDC_OFF

		LD	A,$D0			; DMA転送元アドレスセット
		LD	(HDMA1),A
		LD	A,$00
		LD	(HDMA2),A

		LD	A,$98			; DMA転送先アドレスセット
		LD	(HDMA3),A
		LD	A,$00
		LD	(HDMA4),A

		LD	A,(R0)			; 転送バイト数
		LD	B,A
		LD	A,(R1)
		ADD	A,B
		LD	(HDMA5),A		; DMA転送スタート
;		RES	7,A
;		LD	(HDMA5),A

		LD	A,(LCDC_BUF)
		RES	LCDC_OBJ_ON_BIT,A
		LD	(LCDC_BUF),A
		CALL	LCDC_ON

		NEXT_MAIN	DMA_RESULT

		RET


;********************************************************
;*							*
;*		転送結果表示				*
;*							*
;********************************************************

DMA_RESULT
		LD	A,(CNT1)
		BIT	A_KEY_BIT,A
		JR	Z,_10
		LD	A,(TRG1)
_10		LD	B,A

		LD	HL,SCY_BUF
		BIT	D_KEY_BIT,B		; SCY++
		JR	Z,_11
		LD	A,$70
		CP	(HL)
		JR	Z,_11
		INC	(HL)

_11		BIT	U_KEY_BIT,B		; SCY--
		JR	Z,_12
		LD	A,$00
		CP	(HL)
		JR	Z,_12
		DEC	(HL)

_12		LD	HL,SCX_BUF		; SCX++
		BIT	R_KEY_BIT,B
		JR	Z,_13
		LD	A,$60
		CP	(HL)
		JR	Z,_13
		INC	(HL)

_13		BIT	L_KEY_BIT,B		; SCX--
		JR	Z,_20
		LD	A,$00
		CP	(HL)
		JR	Z,_20
		DEC	(HL)

_20		LD	A,(TRG1)
		BIT	A_KEY_BIT,A		; 表示エリア切替
		JR	Z,_30
		LD	A,(LCDC_BUF)
		XOR	LCDC_BG_SCREEN
		LD	(LCDC_BUF),A

_30		LD	A,(CNT1)
		CP	B_KEY
		RET	NZ

		NEXT_MAIN	DMA_TEST_INIT
		RET


;****************************************************************
;*								*
;*		DMAテスト V-BLANK割り込み			*
;*								*
;****************************************************************

RDMA_DSP_DATA
		DEFB	FONT_R_HA,FONT_R_N,FONT_R_YO,FONT_R_U
HDMA_DSP_DATA
		DEFB	FONT_H,FONT_B,FONT_L,FONT_K

DMA_TEST_VBLK_INT
		PUSH	AF
		PUSH	BC
		PUSH	DE
		PUSH	HL

		LD	BC,OBJRAM +2
		LD	A,(R0)
		CALL	GET_NUM
		LD	A,(OBJRAM +3)
		LD	(OBJRAM +6),A
		XOR	A
		LD	(OBJRAM +3),A

		LD	HL,OBJRAM +10
		LD	A,(SVBK)
		AND	$07
		ADD	A,$E0
		LD	(HL),A

		LD	HL,OBJRAM +14
		LD	B,4
		LD	A,(R1)
		BIT	7,A
		JR	NZ,_10
		LD	DE,RDMA_DSP_DATA
		JR	_11
_10		LD	DE,HDMA_DSP_DATA
_11		LD	A,(DE)
		LD	(HLI),A
		INC	HL
		INC	HL
		INC	HL
		INC	DE
		DEC	B
		JR	NZ,_11

;--------------------------------------------------------

		LD	HL,VBCOUNT
		INC	(HL)

		LD	A,1
		LD	(VBLK_FLG),A

		POP	HL
		POP	DE
		POP	BC
		POP	AF

		RETI


;********************************************************

	END
