# sample Makefile
#
# sample1.asm sample2.asm sample3.asm の３本のソースファイルがあり、
# ３本とも equ.h というファイルをインクルードしている場合の Makefile です。
#
# NAME と REL と RELOCATE の定義と、インクルードファイルのルールの部分を
# 書き替えれば、流用できます。
#

# link が直接出力するのは、map ファイルと リンク出力ファイル（link.out) で、
# sym file と hex file は link 出力ファイルを それぞれ insp プログラムおよび
# load プログラムに入力することにより作られます。


# hex sym map のファイル名を指定します。
NAME = mn_hp_smmain

# 使用するモジュールのリロケータブルファイル名を列挙します。
REL = mn_mario_main.rel\
mn_mario_init.rel\
mn_hp_smmain.rel\
mn_hp_sminit.rel\
mn_hp_smplay.rel\
mn_hp_smenmy.rel\
mn_hp_smcros.rel\
mn_hp_smcset.rel\
mn_hp_smfrdt.rel\
mn_hp_smsub0.rel\
mn_hp_smsub1.rel\
mn_hp_smsub2.rel\
mn_hp_smend1.rel\
mn_hp_smsnd.rel

# リンク時のリローケーション情報を記述します。
RELOCATE = PROG=0000,DATA=0000


##### 共通部分

.SUFFIXES: .rel .asm

.asm.rel:
	as65c $< -w

HEX = $(NAME).hex

SYM = $(NAME).sym

MAP = $(NAME).map

# １つのディレクトリに１プログラムなら link.out のままでよい。
LNK = $(NAME).lnk

all:  $(HEX) $(SYM) $(MAP)

$(HEX): $(LNK)
	load -o $(HEX) $(LNK)

$(SYM): $(LNK)
	insp -f -s $(SYM) $(LNK)

$(LNK) $(MAP):	$(REL)
	link $(REL) -o $(LNK) -r$(RELOCATE) -lsv $(MAP)

##### インクルードファイルのルール

mn_hp_smmain	: mn_hp_smram.asm
mn_hp_sminit	: mn_hp_smram.asm
mn_hp_smcros	: mn_hp_smram.asm
mn_hp_smcset	: mn_hp_smram.asm
mn_hp_smenmy	: mn_hp_smram.asm
mn_hp_smfrdt	: mn_hp_smram.asm
mn_hp_smplay	: mn_hp_smram.asm
mn_hp_smsub0	: mn_hp_smram.asm
mn_hp_smsub1	: mn_hp_smram.asm
mn_hp_smsub2	: mn_hp_smram.asm
mn_hp_smend1	: mn_hp_smram.asm
mn_hp_smsnd	: mn_hp_smram.asm
