2018-07-31 06:40:07 +00:00
|
|
|
ifeq ($(USER),lk)
|
|
|
|
TREES ?= $(HOME)/others
|
|
|
|
else
|
|
|
|
TREES ?= $(HOME)/trees
|
|
|
|
endif
|
|
|
|
|
|
|
|
CC65 ?= $(TREES)/cc65/bin
|
|
|
|
APPLE2E ?= $(TREES)/apple2e/apple2e
|
2018-07-28 19:20:47 +00:00
|
|
|
|
2018-07-28 05:30:44 +00:00
|
|
|
CPU = 6502
|
2018-07-31 06:40:07 +00:00
|
|
|
ROM = apple2a.rom
|
|
|
|
LIB = apple2rom.lib
|
2018-07-28 05:30:44 +00:00
|
|
|
|
2018-07-31 06:40:07 +00:00
|
|
|
$(ROM): a.out
|
|
|
|
(dd count=5 bs=4096 if=/dev/zero 2> /dev/null; cat a.out) > $(ROM)
|
2018-07-28 19:12:52 +00:00
|
|
|
|
2018-07-31 06:40:07 +00:00
|
|
|
run: $(ROM)
|
|
|
|
$(APPLE2E) $(ROM)
|
2018-07-28 19:12:52 +00:00
|
|
|
|
2018-07-31 19:02:22 +00:00
|
|
|
a.out: main.o interrupt.o vectors.o platform.o apple2rom.cfg $(LIB)
|
|
|
|
$(CC65)/ld65 -C apple2rom.cfg -m main.map --dbgfile main.dbg interrupt.o vectors.o platform.o main.o $(LIB)
|
2018-07-31 23:05:56 +00:00
|
|
|
awk -f rom_usage.awk < main.map
|
2018-07-28 05:30:44 +00:00
|
|
|
|
|
|
|
clean:
|
2018-07-31 22:02:57 +00:00
|
|
|
rm -f *.o *.lst a.out platform.s main.s $(LIB) tmp.lib
|
2018-07-28 05:30:44 +00:00
|
|
|
|
|
|
|
main.s: main.c
|
2018-07-31 19:04:26 +00:00
|
|
|
$(CC65)/cc65 -t none -O --cpu $(CPU) $<
|
2018-07-28 05:30:44 +00:00
|
|
|
|
2018-07-31 22:02:57 +00:00
|
|
|
%.o: %.s
|
|
|
|
$(CC65)/ca65 -l $(<:.s=.lst) --cpu $(CPU) $<
|
2018-07-28 05:30:44 +00:00
|
|
|
|
2018-07-31 19:02:22 +00:00
|
|
|
# platform.c contains inline assembly and code that must not be optimized
|
|
|
|
platform.s: platform.c
|
2018-07-31 19:04:26 +00:00
|
|
|
$(CC65)/cc65 -t none --cpu $(CPU) $<
|
2018-07-31 19:02:22 +00:00
|
|
|
|
|
|
|
platform.o: platform.s
|
2018-07-28 05:30:44 +00:00
|
|
|
interrupt.o: interrupt.s
|
|
|
|
vectors.o: vectors.s
|
|
|
|
crt0.o: crt0.s
|
|
|
|
|
2018-07-31 06:40:07 +00:00
|
|
|
$(LIB): crt0.o supervision.lib
|
|
|
|
cp supervision.lib tmp.lib
|
|
|
|
$(CC65)/ar65 a tmp.lib crt0.o
|
|
|
|
mv tmp.lib $(LIB)
|