
	PAGE

;********************************************************
;*							*
;*		マクロ定義ファイル			*
;*							*
;********************************************************
;
;	LOOP_BC			BCレジスタを用いたループ命令
;	LD_ARRAY		バイト配列データのロード ( Aレジスタ)
;	LDE_ARRAY		ワード配列データのロード (DEレジスタ)
;
;	MCLR			RAMクリア (1〜FFFF個)
;	MCLRB			RAMクリア (1〜  FF個)
;	MOV			RAM間転送 (1〜FFFF個)
;	MOVB			RAM間転送 (1〜  FF個)
;
;	FARCALL			バンク越えサブルーチンコール
;	SET_ROMBANK		バンク設定
;	VECTOR			割り込みベクタセット
;	NEXT_MAIN		メイン分岐アドレスセット
;
;	PLTSET			カラーパレットデータセット
;	CHRSET			CHRデータセット
;	BGSET			BG表示用データセット
;	BGCLR			BGRAMクリア
;	OBJCLR			OBJRAMクリア
;
;	VERIFY			RAMチェック
;
;********************************************************

LOOP_BC		MACRO	TO			; BCレジスタを用いたループ命令
		DEC	BC			;  Aレジスタを破壊するので注意!!
		LD	A,C
		OR	B
		JR	NZ,TO
		ENDM


LD_ARRAY	MACRO	DB_TABLE
		LD	E,A
		LD	D,0
		LD	HL,DB_TABLE
		ADD	HL,DE
		LD	A,(HLI)			; A = DB_TABLE[A]
		ENDM


LDE_ARRAY	MACRO	DW_TABLE
		SLA	A			; A *= 2
		LD_ARRAY	DW_TABLE
		LD	E,A
		LD	A,(HLI)
		LD	D,A			; DE = DW_TABLE[A]
		ENDM

;--------------------------------------------------------

MCLR		MACRO	ADDR,NUM,DATA		; 先頭アドレス,個数,クリアデータ
		LD	HL,ADDR
		LD	BC,NUM
		LD	D,DATA
		CALL	MOV_A			; メモリ転送 (A Reg.-> メモリ)
		ENDM


MCLRB		MACRO	ADDR,NUM,DATA		; 先頭アドレス,個数,クリアデータ
		LD	HL,ADDR
		LD	B,NUM
		LD	A,DATA
		CALL	MOVB_A			; メモリ転送 (A Reg.-> メモリ)
		ENDM


MOV		MACRO	FROM,TO,NUM		; 転送元アドレス,転送先アドレス,個数
		LD	DE,FROM
		LD	HL,TO
		LD	BC,NUM
		CALL	MOV_M			; メモリ転送 (メモリ -> メモリ)
		ENDM


MOVB		MACRO	FROM,TO,NUM		; 転送元アドレス,転送先アドレス,個数
		LD	DE,FROM
		LD	HL,TO
		LD	B,NUM
		CALL	MOVB_M			; メモリ転送 (メモリ -> メモリ)
		ENDM

;--------------------------------------------------------

FARCALL		MACRO	LABEL
		LD	B,:LABEL
		LD	HL,LABEL
		RST	2
		ENDM

SET_ROMBANK	MACRO
		LD	(ROM_BANK),A
		LD	(MBCBANKREG),A
		ENDM

VECTOR		MACRO	VECT,FUNC
		LD	DE,FUNC
		LD	HL,VECT
		CALL	SET_FUNC_VECTOR
		ENDM


NEXT_MAIN	MACRO	FUNC
		LD	A,:FUNC
		LD	DE,FUNC
		CALL	SET_MAIN_FUNC
		ENDM

;--------------------------------------------------------

PLTSET		MACRO	ADDR,PLT
		LD	DE,ADDR
		LD	HL,PLT
		CALL	SET_PLT
		ENDM


CHRSET		MACRO	ADDR,BANK		; 転送元アドレス,転送先バンク
		LD	A,BANK
		LD	(VBK),A
		MOV	ADDR,CHRRAM,$1800
		ENDM


BGSET		MACRO	ADDR,BANK
		LD	A,BANK
		LD	(VBK),A
		LD	DE,ADDR
		CALL	SET_BG
		ENDM


BGCLR		MACRO	DATA,BANK
		LD	A,BANK
		LD	(VBK),A
		LD	HL,$9800
		LD	BC,$800
		LD	D,DATA
		CALL	MOV_A
		ENDM


OBJCLR		MACRO
		MCLRB	OBJRAM,4*40,$00
		ENDM

;--------------------------------------------------------

VERIFY		MACRO	ADDR,NUM		; 先頭アドレス,個数
		LD	HL,ADDR
		LD	BC,NUM
		CALL	RAM_CHECK
		ENDM


;********************************************************

	END
