all:
	@echo "MAKE     userspc/baos.inc"
	@make userspc/baos.inc
	@echo "MAKE     base.bin"
	@make base.bin
	@echo "MAKE     baseclean"
	@make baseclean
	@echo "MAKE     baos"
	@make baos

baos:	baos.rom baos.sym baos.8xu

baos.hex: base.hex tools/multihex tools/encdos restrict.hex
	@echo "MULTIHEX baos.hex"
	@tools/multihex 0 base.hex 1c restrict.hex | tools/encdos baos.hex
	
baos.8xu:	baos.hex tools/packxxu
	@echo "PACKXUU  baos.8xu"
	@tools/packxxu -v 9.99 -h 255 baos.hex -t 83p -o baos.8xu

baos.rom:	clean.rom baos.hex tools/rompatch
	@echo "ROMPATCH baos.rom"
	@cp -f clean.rom baos.rom
	@tools/rompatch baos.rom baos.hex

restrict.hex:	tools/bin2hex restrict.bin
	@echo "BIN2HEX  restrict.hex"
	@tools/bin2hex restrict 4000

base.hex: tools/bin2hex base.bin
	@echo "BIN2HEX  base.hex"
	@tools/bin2hex base 0

baos.sym:	baos.inc tools/gensyms
	@echo "GENSYMS  baos.sym"
	@tools/gensyms

baos.inc:	base.bin

restrict.bin:	restrict.asm tools/z80asm
	@echo "Z80ASM   restrict.bin"
	@tools/z80asm restrict.asm -o restrict.bin -Lrestrict.h

base.bin: base.asm flash.h restrict.h userspc/userspc.h *.h tools/z80asm
	@echo "Z80ASM   base.bin"
	@tools/z80asm base.asm -o base.bin -Lbaos.inc
	@echo "CP       userspc/baos.inc"
	@rm -f userspc/baos.inc || echo -n ""
	@cp baos.inc userspc/

userspc/userspc.h:	userspc/*.asm
	@echo "MAKE     userspc/"
	@cd userspc && make

userspc/baos.inc:	*.h	userspc/*.asm userspc/*.in
	@echo "MAKE     fakeheader"
	@cd userspc && make fakeheader
	@echo "TOUCH    baos.inc"
	@touch baos.inc
	@echo "MAKE     base.bin"
	@make base.bin
	@echo "MAKE     baseclean"
	@make baseclean

restrict.h:	restrict.bin

flash.h:	flashram.bin tools/bin2h
	@echo "BIN2H    flash.h"
	@tools/bin2h flashram.bin flash.h

clean:
	@echo "MAKE     baseclean"
	@make baseclean
	@echo "MAKE     patchclean"
	@make patchclean
	@echo "CLEAN    ./"
	@rm -f restrict.hex || echo -n ""
	@rm -f restrict.bin || echo -n ""
	@rm -f restrict.h || echo -n ""
	@echo "CLEAN    tools/"
	@cd tools && make clean
	@rm -f *~ || echo -n ""

patchclean:
	@echo "PATCHCLEAN"
	@rm -f tilem.1.patch || echo -n ""
	@rm -f tilem.2.patch || echo -n ""
	@touch tilem.1.patch
	@touch tilem.2.patch

baseclean:
	@echo "CLEAN    userspc/"
	@cd userspc && make clean
	@echo "BASECLEAN"
	@rm -f flash.h baos.hex base.hex baos.rom base.bin flashram.bin baos.inc baos.sym baos.8xu  || echo -n ""

flashram.bin:	flashram.h vars.h tools/z80asm
	@echo "Z80ASM   flashram.bin"
	@tools/z80asm flashram.h -o flashram.bin -Lmemlocs.h

memlocs.h: flashram.bin

tools/multihex:
	@cd tools && make

tools/rompatch:
	@cd tools && make

tools/packxxu:
	@cd tools && make

tools/bin2hex:
	@cd tools && make

tools/bin2h:
	@cd tools && make

tools/z80asm:
	@cd tools && make

tools/gensyms:
	@cd tools && make

tools/encdos:
	@cd tools && make

tilem-patch:
	@echo "PATCH    tilem.1.patch"
	@cp -f tilem.1.patch.in tilem.1.patch
	@echo "PATCH    tilem.2.patch"
	@cp -f tilem.2.patch.in tilem.2.patch
