INC := config.inc z180reg.inc z180.lib
+
OBJ := $(SRC:.180=.rel)
+
+$(foreach X,$(subst =,:=,$(filter VCS_%,\
+ $(shell autorevision -t sh -o $(CURDIR)/autorevision.cache))),$(eval $X))
+
+VERS := $(shell echo "$(VCS_TAG)" | sed -e 's/hexrel-/0./g' -e 's/^v//g')
+
+ifneq ($(VCS_TICK),"0")
+ VERS := $(VERS).$(subst ",,$(VCS_TICK))
+endif
+ifneq ($(VCS_BRANCH),"master")
+ VERS := $(VERS)-$(subst ",,$(VCS_BRANCH))
+endif
+ifeq ($(VCS_WC_MODIFIED),"1")
+ VERS := $(VERS)-dirty
+endif
+
+
+SYSFILE = cpm3_$(VERS).sys
+MAPFILE = bnkbios3_$(VERS).map
+ZIPFILE = cpm3_$(VERS).zip
+
#CP/M emulator
CPMEMU = zxcc
.phony: all
all: sys
-map: bnkbios3.map
-sys: cpm3.sys
+.phony: sys bios map
+sys: $(SYSFILE)
bios: bnkbios3.spr
+map: $(MAPFILE)
+
+.phony: bin-dist
+bin-dist: $(ZIPFILE)
$(OBJ): $(INC)
+boot.rel: version.inc
+
+version.inc: autorevision.cache
+ @echo update $@
+ @echo "defvers macro\r\n\
+ db '$(VERS)'\r\n\
+ endm\r" > $@
+
comma:= ,
empty:=
DSEG = $(call SEGMENT-ADDR, 2)
#(call SEGMENT-ADDR,SEGNUM)
-SEGMENT-ADDR = $(shell dd if=cpm3.sys bs=128 count=1 skip=1 2>/dev/null |\
+SEGMENT-ADDR = $(shell dd if=$(SYSFILE) bs=128 count=1 skip=1 2>/dev/null |\
awk -vn=$(strip $1) '/BNKBIOS3/ {if (++seg == n) print $$3}')
-bnkbios3.map: cpm3.sys
- ld80 -o /dev/null -ms bnkbios3.map -P $(PSEG) -D $(DSEG) $(OBJ)
+$(MAPFILE): $(SYSFILE)
+ ld80 -o /dev/null -ms $@ -P $(PSEG) -D $(DSEG) $(OBJ)
-cpm3.sys: bnkbios3.spr gencpm.dat
+$(SYSFILE): bnkbios3.spr gencpm.dat
zxcc gencpm -AUTO
+ @mv cpm3.sys $@
@echo
@$(cpm-asm)
+$(ZIPFILE): $(SYSFILE) $(MAPFILE)
+ @rm -f $@
+ zip -9 $@ $(SYSFILE) $(MAPFILE)
+
+
.phony: clean realclean
clean:
- rm -f $(OBJ) $(OBJ:.rel=.lst) $(OBJ:.rel=.sym)
+ rm -f *.rel *.lst *.sym version.inc
realclean: clean
- rm -f *.prn *~
+ rm -f *.map *.prn *~
#==================================================================
extrn @civec,@covec,@aivec,@aovec,@lovec\r
extrn @cbnk,?move,?xmove\r
\r
+ include version.inc\r
include config.inc\r
include z180reg.inc\r
\r
ld (@cbnk),a ; right now in bank 0\r
\r
call pr.inln ; print signon message\r
- db 13,10,13,10,'CP/M Version 3.0, Z180-Stamp BIOS',13,10,0\r
-\r
- call pr.inln\r
+ db 13,10,13,10,'CP/M Version 3.0, Z180-Stamp BIOS v'\r
+ defvers\r
+ db 13,10\r
db 'Estimated CPU clock [Hz]: ',0\r
\r
ld hl,(f_cpu)\r