# Makefile for small sdcc Z80 Projekts
#

TARGET	:= z80rom
INTERFACE := /dev/ttyUSB0

CODE_LOC := 0x2100
DATA_LOC := 0x8000

SRC	= main.c driver.c interrupt.c mcurses.c hexedit.c


.PHONY: all
all: $(TARGET).bin


CC	= sdcc
AS	= sdasz80
LD	= sdcc
HEX2BIN	= objcopy --input-target=ihex --output-target=binary --gap-fill 0xff
RM	= rm -f


CFLAGS	= -mz80 --std-c99 --opt-code-size --fomit-frame-pointer
AFLAGS	= -plosgff
LDFLAGS	= -mz80 --no-std-crt0 -Wl-u
LDFLAGS	+= --code-loc $(CODE_LOC) --data-loc $(DATA_LOC)


OBJ := $(SRC:.c=.rel)

$(TARGET).ihx: crt0.rel $(OBJ)
	$(LD) $(LDFLAGS) crt0.rel $(OBJ) -o $@ 

crt0.rel: crt0.s
	$(AS) $(AFLAGS) crt0.s

%.bin: %.ihx
	$(HEX2BIN) $< $@

%.rel: %.c
	$(CC) $(CFLAGS) -c $<

%.asm: %.c
	$(CC) $(CFLAGS) -S $<


.PHONY: clean realclean
clean:
	$(RM) *.rel *.asm *.sym *.ihx *.noi *.bin *.lk \
	$(TARGET).lk $(TARGET).map $(TARGET).noi

realclean: clean
	$(RM) $(TARGET).ihx $(TARGET).bin *~ 

upload:
	@echo "----------------------------------------------------"
	@echo " >>> Dateitransfer zum Z80"
	@echo "----------------------------------------------------"
	stty 9600 raw -parenb -crtscts -ixoff -F $(INTERFACE)
	echo "load" > /dev/ttyUSB0
	stat -c %s $(TARGET).bin > $(INTERFACE)
	@echo "Uebertrage Daten...."
	cat $(TARGET).bin > $(INTERFACE)
	echo "start" > $(INTERFACE)
	@echo "User programm Upload fertig!...Run!"



