.PHONY : all images clean
CA65FLAGS = -t atari -l $@.lst

IMAGES = 800-rev-a-ntsc.rom            \
         800-rev-a-pal.rom             \
         800-rev-b-ntsc.rom            \
         800-rev-b-pal.rom             \
         sweet-16.rom                  \
         xl-rev-10.rom                 \
         xl-rev-11.rom                 \
         xl-rev-1.rom                  \
         xl-rev-1-swe.rom              \
         xl-rev-2.rom                  \
         xl-rev-2-pol.rom              \
         xl-rev-3-1984-03-23.rom       \
         xl-rev-3-1984-03-27.rom       \
         xl-rev-3-ver-4.rom            \
         xl-rev-4-ver-0-1984-07-19.rom \
         xl-rev-4-ver-0-1984-07-24.rom \
         xl-rev-5-ver-0.rom            \
         xl-rev-5-ver-0-early.rom      \
         xe-rev-3.rom                  \
         xe-rev-4.rom                  \
         xe-rev-59-1987.rom            \
         xe-rev-59-1988.rom

sweet_16_dir = sweet-16
sweet_16_objs = $(sweet_16_dir)/DATBAS.o   \
                $(sweet_16_dir)/ROMID.o    \
                $(sweet_16_dir)/INTHV.o    \
                $(sweet_16_dir)/DISKP.o    \
                $(sweet_16_dir)/MONITP.o   \
                $(sweet_16_dir)/RELLOAD.o  \
                $(sweet_16_dir)/PHLOAD.o   \
                $(sweet_16_dir)/SELFTEST.o \
                $(sweet_16_dir)/INTCHR.o   \
                $(sweet_16_dir)/FPP.o      \
                $(sweet_16_dir)/DOMCHR.o   \
                $(sweet_16_dir)/JVEC.o     \
                $(sweet_16_dir)/CIOL.o     \
                $(sweet_16_dir)/SIOL.o     \
                $(sweet_16_dir)/PRINTP.o   \
                $(sweet_16_dir)/CASCV.o    \
                $(sweet_16_dir)/KEYDIS.o   \
                $(sweet_16_dir)/RAINBOW.o  \
                $(sweet_16_dir)/PHLOAD2.o  \
                $(sweet_16_dir)/SELFTST2.o \
                $(sweet_16_dir)/PATCHES.o

xl_rev_10_dir = xl-rev-10
xl_rev_10_objs = $(xl_rev_10_dir)/DATBAS.o   \
                 $(xl_rev_10_dir)/ROMID.o    \
                 $(xl_rev_10_dir)/INTHV.o    \
                 $(xl_rev_10_dir)/DISKP.o    \
                 $(xl_rev_10_dir)/MONITP.o   \
                 $(xl_rev_10_dir)/RELLOAD.o  \
                 $(xl_rev_10_dir)/PHLOAD.o   \
                 $(xl_rev_10_dir)/SELFTEST.o \
                 $(xl_rev_10_dir)/INTCHR.o   \
                 $(xl_rev_10_dir)/FPP.o      \
                 $(xl_rev_10_dir)/DOMCHR.o   \
                 $(xl_rev_10_dir)/JVEC.o     \
                 $(xl_rev_10_dir)/CIOL.o     \
                 $(xl_rev_10_dir)/SIOL.o     \
                 $(xl_rev_10_dir)/PRINTP.o   \
                 $(xl_rev_10_dir)/CASCV.o    \
                 $(xl_rev_10_dir)/KEYDIS.o   \
                 $(xl_rev_10_dir)/RAINBOW.o  \
                 $(xl_rev_10_dir)/PHLOAD2.o  \
                 $(xl_rev_10_dir)/SELFTST2.o \
                 $(xl_rev_10_dir)/PATCHES.o

# To build xl-rev-10.rom from the Microtec sources at xl-rev-10/:
# 1. Remove xl-rev-10.o from OBJS.
# 2. Add $(xl_rev_10_objs) at the end of OBJS.
# 3. Uncomment the xl-rev-10.rom-nocksum rule.

OBJS = 800-fpp-main.o              \
       charset.o                   \
       800-rev-a-ntsc-main.o       \
       800-rev-a-pal-main.o        \
       800-rev-b-ntsc-main.o       \
       800-rev-b-pal-main.o        \
       xl-rev-10.o                 \
       xl-rev-11.o                 \
       xl-rev-1.o                  \
       xl-rev-1-swe.o              \
       xl-rev-2.o                  \
       xl-rev-2-pol.o              \
       xl-rev-3-1984-03-23.o       \
       xl-rev-3-1984-03-27.o       \
       xl-rev-3-ver-4.o            \
       xl-rev-4-ver-0-1984-07-19.o \
       xl-rev-4-ver-0-1984-07-24.o \
       xl-rev-5-ver-0.o            \
       xl-rev-5-ver-0-early.o      \
       xe-rev-3.o                  \
       xe-rev-4.o                  \
       xe-rev-59-1987.o            \
       xe-rev-59-1988.o            \
       $(sweet_16_objs)
#       $(xl_rev_10_objs)

c_exes = setchecksum-xl setchecksum-800

all : images

.SECONDARY : $(OBJS)

.INTERMEDIATE : $(IMAGES:.rom=.rom-nocksum)

-include $(OBJS:.o=.d)

images : $(IMAGES)

800-rev-%.rom : 800-rev-%.rom-nocksum setchecksum-800
	./setchecksum-800 $* $< $@

xl-%.rom : xl-%.rom-nocksum setchecksum-xl
	./setchecksum-xl $< $@

xe-%.rom : xe-%.rom-nocksum setchecksum-xl
	./setchecksum-xl $< $@

sweet-16.rom : sweet-16.rom-nocksum setchecksum-xl
	./setchecksum-xl $< $@

800%.rom-nocksum : 800%-main.o 800-fpp-main.o charset.o 800.cfg
	ld65 -o $@ -C 800.cfg $< 800-fpp-main.o charset.o

xl-%.rom-nocksum : xl-%.o xl.cfg
	ld65 -o $@ -C xl.cfg $<

xe-%.rom-nocksum : xe-%.o xl.cfg
	ld65 -o $@ -C xl.cfg $<

sweet-16.rom-nocksum : $(sweet_16_objs) $(sweet_16_dir)/link.cfg
	ld65 -o $@ -C $(sweet_16_dir)/link.cfg $(sweet_16_objs)

#xl-rev-10.rom-nocksum : $(xl_rev_10_objs) $(xl_rev_10_dir)/link.cfg
#	ld65 -o $@ -C $(xl_rev_10_dir)/link.cfg $(xl_rev_10_objs)

%.o : %.s
	ca65 $(CA65FLAGS) --create-dep $*.d $< -o $@

%.dump : %.rom
	od -tx1 -Ax -v $^ > $@

$(c_exes) : %: %.c
	$(CC) -o $@ -Wall $^

clean :
	$(RM) $(OBJS) $(OBJS:.o=.d) $(OBJS:.o=.o.lst) $(IMAGES) $(IMAGES:.rom=.dump) $(IMAGES:.rom=.rom-nocksum) $(c_exes) *~
