# Paths that will need changing

# default to the xc3s250e part
WORKING_DIR=working/250
SRC_DIR=src/250

ATOMFPGA=$(HOME)/atom/AtomBusMon
PAPILIO_LOADER=/opt/GadgetFactory/papilio-loader/programmer
XILINX=/opt/Xilinx/14.7

# Shouldn't need to make changes below this point

BIT_FILE=$(ATOMFPGA)/$(WORKING_DIR)/MC6809ECpuMon.bit
BMM_FILE=$(ATOMFPGA)/$(SRC_DIR)/MC6809ECpuMon_bd.bmm


# Papilio dev environment
SREC_CAT=srec_cat
GAWK=gawk
DATA2MEM=${XILINX}/ISE_DS/ISE/bin/lin/data2mem

# AVR dev environment
MCU=atmega103
F_CPU=15855484
CC=avr-gcc
OBJCOPY=avr-objcopy

CFLAGS=-DCPU=6809 -DCPUEMBEDDED -DF_CPU=${F_CPU}UL -DSERIAL_STATUS -DCOOKED_SERIAL -DNOUSART1 -mmcu=$(MCU) -Wall -Os -mcall-prologues -mno-interrupts

OBJECTS=AtomBusMon.o dis6809.o regs6809.o status.o

build: avr6809cpu.bit

avr6809cpu.bit: avr_progmem.mem
	$(DATA2MEM) -bm $(BMM_FILE) -bd avr_progmem.mem -bt $(BIT_FILE) -o b avr6809cpu.bit

avr_progmem.mem: avr_progmem.hex
	$(SREC_CAT)  $< -Intel -Byte_Swap 2  -Data_Only -o tmp.mem -vmem 8
	$(GAWK) ' BEGIN{FS=" ";} { $$1= ""; print}' tmp.mem > $@
	rm tmp.mem

avr_progmem.hex : avr_progmem.out 
	$(OBJCOPY) -R .eeprom -O ihex avr_progmem.out avr_progmem.hex 
avr_progmem.out : $(OBJECTS)
	$(CC) $(CFLAGS) -o avr_progmem.out -Wl,-Map,avr_progmem.map $^
%.o : %.c 
	$(CC) $(CFLAGS) -Os -c $<
%.o : %.S
	$(CC) $(CFLAGS) -Os -c $<

.phony: clean

clean:
	rm -f avr6809cpu.bit avr_progmem.mem avr_progmem.hex avr_progmem.out avr_progmem.map *.o
