3 SRC
:= bioskrnl
.180 boot
.180 chario
.180 drvtbl
.180
4 SRC
+= move
.180 time
.180 mm
.180 misc
.180 utils
.180
5 SRC
+= msgbuf
.180 conbuf
.180 ascip
.180 sdio
.180
8 INC
:= config.inc z180reg.inc z180.lib
11 OBJ
:= $(SRC
:.180=.rel
)
14 $(foreach X
,$(subst =,:=,$(filter VCS_
%,\
15 $(shell autorevision
-t sh
-o
$(CURDIR
)/autorevision.cache
))),$(eval
$X))
17 VERS
:= $(shell echo
"$(VCS_TAG)" | sed
-e
's/hexrel-/0./g' -e
's/^v//g')
19 ifneq ($(VCS_TICK
),"0")
20 VERS
:= $(VERS
).
$(subst ",,$(VCS_TICK))
22 ifneq ($(VCS_BRANCH),"master
")
23 VERS := $(VERS)-$(subst ",,$(VCS_BRANCH
))
25 ifeq ($(VCS_WC_MODIFIED
),"1")
30 SYSFILE
= cpm3_
$(VERS
).sys
31 MAPFILE
= bnkbios3_
$(VERS
).map
32 ZIPFILE
= cpm3_
$(VERS
).zip
37 #Location of CP/M binaries
38 CPMBIN
= /usr
/local
/lib
/cpm
/bin80
40 #AS = $(CPMEMU) $(CPMBIN)/m80.com
41 AS
= $(CPMEMU
) slr180.com
42 #LN = $(CPMEMU) slrnk+.com
43 #LN = $(CPMEMU) ccpline.com
73 version.inc
: autorevision.cache
75 @echo
"defvers macro\r\n\
82 space
:= $(empty
) $(empty
)
84 ccpline
= $(CPMEMU
) $(1) -$(subst $(space
),$(comma
),$(strip $(2)))
87 COMMAND
="$(AS) -$(basename $<)/$(AS_OPT)"; \
88 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
89 $${COMMAND} > $${OUTPUT}; \
90 grep
-q
'^ 0 Error(s) Detected' $${OUTPUT}; ERROR
=$$?
; \
91 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm -f
$@
; fi
; \
96 COMMAND
="$(call ccpline, slrnk+, $(basename $@)/H/M /V \
97 /P:$(LN_PROG) /D:$(LN_DATA) $(basename $^) /E /Q)";\
98 OUTPUT
=$$(mktemp
); echo
$${COMMAND};\
99 $${COMMAND} > $${OUTPUT} || exit
1;\
102 grep
-q
' Duplicate Symbol ' $${OUTPUT} && ERROR
=2; \
103 grep
-q
'\- Previously Defined' $${OUTPUT} && ERROR
=2; \
104 [ "$${ERROR}" = "0" ] && grep
-q
'^ ** ' $${OUTPUT} && ERROR
=1 ; \
105 [ "$${ERROR}" != "0" ] && rm -f
$@
; \
109 #link80 bnkbios3[b,q]=bioskrnl,boot,chario,drvtbl,...
110 define cpm-bioslink
=
111 COMMAND
="$(call ccpline, link80, \
112 $(basename $@)=$(basename $^))[b,q]";\
113 OUTPUT
=$$(mktemp
); echo
$${COMMAND};\
114 $${COMMAND} > $${OUTPUT} || exit
1;\
116 grep
-Ev
'^[@?$$._ 0-9A-Z]{7} [0-9A-F]{4}' $${OUTPUT};\
117 grep
-Eq
':|UNRECOGNIZED' $${OUTPUT} && ERROR
=2; \
118 [ "$${ERROR}" != "0" ] && rm -f
$@
; \
124 #Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX]
125 #egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*init\.rel' hdrom.map
127 COMMAND
="$(CPMEMU) makesym -$^ -/P -D"; \
128 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
129 $${COMMAND} > $${OUTPUT}; \
130 grep
-q
'^ 0 Error(s) Detected' $${OUTPUT}; ERROR
=$$?
; \
131 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm -f
$@
; fi
; \
135 PSEG
= $(call SEGMENT-ADDR
, 1)
136 DSEG
= $(call SEGMENT-ADDR
, 2)
138 #(call SEGMENT-ADDR,SEGNUM)
139 SEGMENT-ADDR
= $(shell dd if
=$(SYSFILE
) bs
=128 count
=1 skip
=1 2>/dev
/null |\
140 awk
-vn
=$(strip $1) '/BNKBIOS3/ {if (++seg == n) print $$3}')
142 $(MAPFILE
): $(SYSFILE
)
143 ld80
-o
/dev
/null
-ms
$@
-P
$(PSEG
) -D
$(DSEG
) $(OBJ
)
146 $(SYSFILE
): bnkbios3.spr gencpm.dat
152 bnkbios3.spr
: $(OBJ
)
154 @
#ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^
160 $(ZIPFILE
): $(SYSFILE
) $(MAPFILE
)
162 zip
-9 $@
$(SYSFILE
) $(MAPFILE
)
165 .phony
: clean realclean
167 rm -f
*.rel
*.lst
*.sym version.inc
173 #==================================================================
176 @COMMAND
="$(AS) =$<"; \
177 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
178 $${COMMAND} > $${OUTPUT}; \
179 grep
-q
'No Fatal error(s).$$' $${OUTPUT}; ERROR
=$$?
; \
180 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm $@
; fi
; \
186 @COMMAND
="$(AS) ,$@=$<"; \
187 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
188 $${COMMAND} > $${OUTPUT}; \
189 grep
-q
'No Fatal error(s).$$' $${OUTPUT}; ERROR
=$$?
; \
190 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; fi
; \