VLOGS=Uart.v Timer.v Interrupt.v GBZ80Core.v CPUDCM.v 7seg.v System.v allinsns.v insn_ld_reg_imm8.v

all: CoreTop.svf CoreTop.twr

CoreTop.ngc: CoreTop.xst CoreTop.prj $(VLOGS) CoreTop.ucf
	xst -ifn CoreTop.xst -ofn CoreTop.syr

CoreTop.ngd: CoreTop.ngc foo.bmm
	ngdbuild -dd _ngo  -nt timestamp -i -bm "foo.bmm" -p xc3s500e-fg320-5 "CoreTop.ngc" CoreTop.ngd

CoreTop_map.ncd: CoreTop.ngd
	map -p xc3s500e-fg320-5 -cm area -pr off -k 4 -c 100 -o CoreTop_map.ncd CoreTop.ngd CoreTop.pcf

CoreTop.ncd: CoreTop_map.ncd
	par -w -ol std -t 1 CoreTop_map.ncd CoreTop.ncd CoreTop.pcf

CoreTop.twr: CoreTop_map.ncd
	trce -e 3 -s 5 -xml CoreTop CoreTop.ncd -o CoreTop.twr CoreTop.pcf -ucf CoreTop.ucf

CoreTop.bit: CoreTop.ut CoreTop.ncd
	bitgen -f CoreTop.ut CoreTop.ncd

CoreTop_rom.bit: rom.hex CoreTop.bit foo_bd.bmm
	data2mem -bm foo_bd.bmm -bd rom.mem -bt CoreTop.bit -o b CoreTop_rom.bit

CoreTop.svf: CoreTop_rom.bit rom.hex impact.cmd
	impact -batch impact.cmd

rom.o: rom.asm
	rgbasm -orom.o rom.asm

rom.bin: rom.o rom.lnk
	xlink rom.lnk

rom.hex: rom.bin
	./mashrom < rom.bin > rom.hex