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
10 OBJ
:= $(SRC
:.180=.rel
)
15 #Location of CP/M binaries
16 CPMBIN
= /usr
/local
/lib
/cpm
/bin80
18 #AS = $(CPMEMU) $(CPMBIN)/m80.com
19 AS
= $(CPMEMU
) slr180.com
20 #LN = $(CPMEMU) slrnk+.com
21 #LN = $(CPMEMU) ccpline.com
48 space
:= $(empty
) $(empty
)
50 ccpline
= $(CPMEMU
) $(1) -$(subst $(space
),$(comma
),$(strip $(2)))
53 COMMAND
="$(AS) -$(basename $<)/$(AS_OPT)"; \
54 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
55 $${COMMAND} > $${OUTPUT}; \
56 grep
-q
'^ 0 Error(s) Detected' $${OUTPUT}; ERROR
=$$?
; \
57 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm -f
$@
; fi
; \
62 COMMAND
="$(call ccpline, slrnk+, $(basename $@)/H/M /V \
63 /P:$(LN_PROG) /D:$(LN_DATA) $(basename $^) /E /Q)";\
64 OUTPUT
=$$(mktemp
); echo
$${COMMAND};\
65 $${COMMAND} > $${OUTPUT} || exit
1;\
68 grep
-q
' Duplicate Symbol ' $${OUTPUT} && ERROR
=2; \
69 grep
-q
'\- Previously Defined' $${OUTPUT} && ERROR
=2; \
70 [ "$${ERROR}" = "0" ] && grep
-q
'^ ** ' $${OUTPUT} && ERROR
=1 ; \
71 [ "$${ERROR}" != "0" ] && rm -f
$@
; \
75 #link80 bnkbios3[b,q]=bioskrnl,boot,chario,drvtbl,...
77 COMMAND
="$(call ccpline, link80, \
78 $(basename $@)=$(basename $^))[b,q]";\
79 OUTPUT
=$$(mktemp
); echo
$${COMMAND};\
80 $${COMMAND} > $${OUTPUT} || exit
1;\
82 grep
-Ev
'^[@?$$._ 0-9A-Z]{7} [0-9A-F]{4}' $${OUTPUT};\
83 grep
-Eq
':|UNRECOGNIZED' $${OUTPUT} && ERROR
=2; \
84 [ "$${ERROR}" != "0" ] && rm -f
$@
; \
90 #Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX]
91 #egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*init\.rel' hdrom.map
93 COMMAND
="$(CPMEMU) makesym -$^ -/P -D"; \
94 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
95 $${COMMAND} > $${OUTPUT}; \
96 grep
-q
'^ 0 Error(s) Detected' $${OUTPUT}; ERROR
=$$?
; \
97 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm -f
$@
; fi
; \
101 PSEG
= $(call SEGMENT-ADDR
, 1)
102 DSEG
= $(call SEGMENT-ADDR
, 2)
104 #(call SEGMENT-ADDR,SEGNUM)
105 SEGMENT-ADDR
= $(shell dd if
=cpm3.sys bs
=128 count
=1 skip
=1 2>/dev
/null |\
106 awk
-vn
=$(strip $1) '/BNKBIOS3/ {if (++seg == n) print $$3}')
108 bnkbios3.map
: cpm3.sys
109 ld80
-o
/dev
/null
-ms bnkbios3.map
-P
$(PSEG
) -D
$(DSEG
) $(OBJ
)
112 cpm3.sys
: bnkbios3.spr
117 bnkbios3.spr
: $(OBJ
)
119 @
#ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^
125 .phony
: clean realclean
127 rm -f
$(OBJ
) $(OBJ
:.rel
=.lst
) $(OBJ
:.rel
=.sym
)
133 #==================================================================
136 @COMMAND
="$(AS) =$<"; \
137 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
138 $${COMMAND} > $${OUTPUT}; \
139 grep
-q
'No Fatal error(s).$$' $${OUTPUT}; ERROR
=$$?
; \
140 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; rm $@
; fi
; \
146 @COMMAND
="$(AS) ,$@=$<"; \
147 OUTPUT
=$$(mktemp
); echo
$${COMMAND}; \
148 $${COMMAND} > $${OUTPUT}; \
149 grep
-q
'No Fatal error(s).$$' $${OUTPUT}; ERROR
=$$?
; \
150 if
[ "$${ERROR}" != "0" ]; then cat
$${OUTPUT}; fi
; \