X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/05437fb4cdb907816a4fc3ffafa2617fcf33266a..aea51b6c4c93c56715f50e64d424e1181c6d0242:/z180/Makefile diff --git a/z180/Makefile b/z180/Makefile index f676826..02ef580 100644 --- a/z180/Makefile +++ b/z180/Makefile @@ -1,126 +1,16 @@ +HDROM_SRC := init.180 ddtz.180 msgbuf-a.180 +HDROM_SRC += conbuf-a.180 console.180 asci-p.180 +#HDROM_SRC += bioscio.180 chario.180 +HDROM_SRC += romend.180 -SRC := r3init.180 ddtz.180 -SRC += fifoio.180 msgbuf.180 ser1-i.180 console.180 -SRC += romend.180 +.PHONY: all +all: hdrom.c cfboot.c cpuinfo.c -INC := config.inc z180reg.inc z180.lib +hdrom.hex: ASM_OPT = MFS +hdrom.hex: PROG_SEG = 0 +hdrom.hex: DATA_SEG = C000 +hdrom.hex: $(HDROM_SRC:.180=.rel) -OBJ := $(SRC:.180=.rel) - -#CP/M emulator -CPMEMU = zxcc - -#Location of CP/M binaries -CPMBIN = /usr/local/lib/cpm/bin80 - -#AS = $(CPMEMU) $(CPMBIN)/m80.com -AS = $(CPMEMU) slr180.com -LN = $(CPMEMU) slrnk+.com -#LN = $(CPMEMU) ccpline.com - -AS_OPT := MFS - -AS_QUIET = 1 -LN_QUIET = 1 - -#LNKCMD = -LN_VERB = /V -LN_PROG = 0 -LN_DATA = C000 - - -.suffixes: -#.suffixes: .180 .rel - -.phony: all -all: hdrom.c hdrom.h - -$(OBJ): $(INC) - -hdrom.h: hdrom.c - -comma:= , -empty:= -space:= $(empty) $(empty) - -ccpline = $(CPMEMU) $(1) -$(subst $(space),$(comma),$(strip $(2))) - -define cpm-asm = -COMMAND="$(AS) -$(basename $<)/$(AS_OPT)"; \ -OUTPUT=$$(mktemp); echo $${COMMAND}; \ -$${COMMAND} > $${OUTPUT}; \ -grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \ -if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \ -exit $${ERROR} -endef - -define cpm-link = - COMMAND="$(call ccpline, slrnk+, $(basename $@)/H/M /V \ - /P:$(LN_PROG) /D:$(LN_DATA) $(basename $^) /E /Q)";\ - OUTPUT=$$(mktemp); echo $${COMMAND};\ - $${COMMAND} > $${OUTPUT};\ - ERROR=0;\ - cat $${OUTPUT};\ - grep -q ' Duplicate Symbol ' $${OUTPUT} && ERROR=2; \ - grep -q '\- Previously Defined' $${OUTPUT} && ERROR=2; \ - [ "$${ERROR}" = "0" ] && grep -q '^ ** ' $${OUTPUT} && ERROR=1 ; \ - [ "$${ERROR}" != "0" ] && rm -f $@; \ - exit $${ERROR} -endef - -#Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX] -#egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*r3init\.rel' hdrom.map -define cpm-mksym = -COMMAND="$(CPMEMU) makesym -$^ -/P -D"; \ -OUTPUT=$$(mktemp); echo $${COMMAND}; \ -$${COMMAND} > $${OUTPUT}; \ -grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \ -if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \ -exit $${ERROR} -endef - -hdrom.c: hdrom.hex - srec_cat -o $@ -c_array $(basename $<) -C_COMpressed -include $< -Intel - -hdrom.hex : $(OBJ) - @#$(cpm-link) - ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^ - -%.rel %lst: %.180 - @$(cpm-asm) - -hdrom.map: hdrom.hex - -%.sym: hdrom.map %.lst - @$(cpm-mksym) - -.phony: clean realclean -clean: - rm -f $(OBJ) $(OBJ:.rel=.lst) $(OBJ:.rel=.sym) hdrom.hex - -realclean: clean - rm -f *.prn *~ hdrom.map - - -#================================================================== - -%.REL: %.MAC - @COMMAND="$(AS) =$<"; \ - OUTPUT=$$(mktemp); echo $${COMMAND}; \ - $${COMMAND} > $${OUTPUT}; \ - grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \ - if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm $@; fi ; \ - rm $${OUTPUT}; \ - exit $${ERROR} - - -%.PRN: %.MAC - @COMMAND="$(AS) ,$@=$<"; \ - OUTPUT=$$(mktemp); echo $${COMMAND}; \ - $${COMMAND} > $${OUTPUT}; \ - grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \ - if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; fi ; \ - rm $${OUTPUT}; \ - exit $${ERROR} +include ../mk/cpm.rules.mk