#
# this makefile does double duty.  it serves as the top level make
# and as the invoked make for the different ways that the cpm3 is built
#
# it does this by overriding OBJECTS in an invoked sub-make
#
OBJECTS = cpmldr.com cpmldr.sys cpm3res.sys cpm3bnk.sys zpmbios3
OBJECTS += ccp.com gencpm.com genres.dat genbnk.dat
OBJECTS += bdos3.spr bnkbdos3.spr resbdos3.spr
OBJECTS += readme.1st cpm3fix.pat cpm3.sys gencpm.dat
NOCOPY = zpmbios3
OTHERS = cpmldr.rel biosldr.rel cpm3res.sys cpm3bnk.sys loader.bin cpmldr.bin
OTHERS += biosldrc.rel biosldrd.rel
NODELETE = ccp.com gencpm.com genres.dat genbnk.dat bdos3.spr bnkbdos3.spr resbdos3.spr
NODELETE += readme.1st cpm3fix.pat
NODIFF = zpmbios3

DEST = ../../Binary/CPM3
TOOLS = ../../Tools

include $(TOOLS)/Makefile.inc

export INCDIR80 = ../

BIOSOBJS = bioskrnl.rel scb.rel boot.rel chario.rel 
BIOSOBJS += move.rel drvtbl.rel diskio.rel util.rel
COMMA := ,
NULL :=
SPACE := $(NULL) $(NULL)
BIOSNAMES := $(subst $(SPACE),$(COMMA),$(basename $(BIOSOBJS)))

DEFCPM3 = bnk
#DEFCPM3 = res

clean:: biosclean
	@rm -f bios3.spr bnkbios3.spr zpmbios3.spr cpmldr.com gencpm.dat options.lib ldropts.lib
	
biosclean:
	@rm -f $(BIOSOBJS)

cpm3res.sys:
	make biosclean
	cp optres.lib options.lib
	cp genres.dat gencpm.dat
	make OBJECTS=bios3.spr
	$(ZXCC) gencpm -auto -display
	mv cpm3.sys cpm3res.sys
	rm gencpm.dat

cpm3bnk.sys:
	make biosclean
	cp optbnk.lib options.lib
	cp genbnk.dat gencpm.dat
	make OBJECTS=bnkbios3.spr
	$(ZXCC) gencpm -auto -display
	mv cpm3.sys cpm3bnk.sys
	rm gencpm.dat

zpmbios3:
	make biosclean
	cp optzpm.lib options.lib
	make OBJECTS=zpmbios3.spr DEST=

cpmldr.bin:	biosldrd.rel cpmldr.rel util.rel
	$(ZXCC) LINK -CPMLDRD[L100]=CPMLDR,BIOSLDRD,UTIL
	mv cpmldrd.com cpmldr.bin

cpmldr.com: biosldrc.rel cpmldr.rel util.rel
	$(ZXCC) LINK -CPMLDRC[L100]=CPMLDR,BIOSLDRC,UTIL
	mv cpmldrc.com cpmldr.com

biosldrc.rel: biosldr.z80 optcmd.lib
	cp optcmd.lib ldropts.lib	
	$(ZXCC) Z80ASM -BIOSLDR/MF
	mv biosldr.rel biosldrc.rel

biosldrd.rel: biosldr.z80 optdsk.lib
	cp optdsk.lib ldropts.lib	
	$(ZXCC) Z80ASM -BIOSLDR/MF
	mv biosldr.rel biosldrd.rel
 
bios3.spr: $(BIOSOBJS)
	$(ZXCC) LINK -bios3[OS]=$(BIOSNAMES)

bnkbios3.spr: $(BIOSOBJS)
	$(ZXCC) LINK -bnkbios3[B]=$(BIOSNAMES)

zpmbios3.spr: $(BIOSOBJS)
	$(ZXCC) LINK -zpmbios3[B]=$(BIOSNAMES)

cpm3.sys: cpm3$(DEFCPM3).sys
	cp cpm3$(DEFCPM3).sys cpm3.sys

gencpm.dat: gen$(DEFCPM3).dat
	cp gen$(DEFCPM3).dat gencpm.dat

cpmldr.sys: loader.bin cpmldr.bin
	cat loader.bin cpmldr.bin > $@

