]>
Commit | Line | Data |
---|---|---|
a16ba2b0 L |
1 | |
2 | ||
29605004 | 3 | SRC := init.180 ddtz.180 |
64cc2207 L |
4 | SRC += console.180 |
5 | SRC += msgbuf-a.180 conbuf-a.180 | |
6 | SRC += asci1-p.180 | |
a16ba2b0 L |
7 | SRC += romend.180 |
8 | ||
9 | INC := config.inc z180reg.inc z180.lib | |
10 | ||
11 | OBJ := $(SRC:.180=.rel) | |
12 | ||
13 | #CP/M emulator | |
14 | CPMEMU = zxcc | |
15 | ||
23f85294 | 16 | #Location of CP/M binaries |
a16ba2b0 L |
17 | CPMBIN = /usr/local/lib/cpm/bin80 |
18 | ||
19 | #AS = $(CPMEMU) $(CPMBIN)/m80.com | |
20 | AS = $(CPMEMU) slr180.com | |
21 | LN = $(CPMEMU) slrnk+.com | |
22 | #LN = $(CPMEMU) ccpline.com | |
23 | ||
24 | AS_OPT := MFS | |
25 | ||
26 | AS_QUIET = 1 | |
27 | LN_QUIET = 1 | |
28 | ||
23f85294 | 29 | #LNKCMD = |
a16ba2b0 L |
30 | LN_VERB = /V |
31 | LN_PROG = 0 | |
32 | LN_DATA = C000 | |
33 | ||
34 | ||
35 | .suffixes: | |
36 | #.suffixes: .180 .rel | |
37 | ||
38 | .phony: all | |
78a3a76d | 39 | all: hdrom.c hdrom.h |
a16ba2b0 L |
40 | |
41 | $(OBJ): $(INC) | |
42 | ||
78a3a76d | 43 | hdrom.h: hdrom.c |
a16ba2b0 L |
44 | |
45 | comma:= , | |
46 | empty:= | |
47 | space:= $(empty) $(empty) | |
48 | ||
49 | ccpline = $(CPMEMU) $(1) -$(subst $(space),$(comma),$(strip $(2))) | |
50 | ||
51 | define cpm-asm = | |
52 | COMMAND="$(AS) -$(basename $<)/$(AS_OPT)"; \ | |
53 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ | |
54 | $${COMMAND} > $${OUTPUT}; \ | |
55 | grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \ | |
56 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \ | |
57 | exit $${ERROR} | |
58 | endef | |
59 | ||
60 | define cpm-link = | |
61 | COMMAND="$(call ccpline, slrnk+, $(basename $@)/H/M /V \ | |
62 | /P:$(LN_PROG) /D:$(LN_DATA) $(basename $^) /E /Q)";\ | |
63 | OUTPUT=$$(mktemp); echo $${COMMAND};\ | |
64 | $${COMMAND} > $${OUTPUT};\ | |
65 | ERROR=0;\ | |
66 | cat $${OUTPUT};\ | |
67 | grep -q ' Duplicate Symbol ' $${OUTPUT} && ERROR=2; \ | |
68 | grep -q '\- Previously Defined' $${OUTPUT} && ERROR=2; \ | |
69 | [ "$${ERROR}" = "0" ] && grep -q '^ ** ' $${OUTPUT} && ERROR=1 ; \ | |
70 | [ "$${ERROR}" != "0" ] && rm -f $@; \ | |
71 | exit $${ERROR} | |
72 | endef | |
73 | ||
74 | #Use: MAKESYM Filename[.ext][/PXXXX][/DXXXX][/CXXXX] | |
29605004 | 75 | #egrep '^[[:xdigit:]]{4}[[:space:]]+[[:xdigit:]]{4}[[:space:]]+D.*init\.rel' hdrom.map |
a16ba2b0 L |
76 | define cpm-mksym = |
77 | COMMAND="$(CPMEMU) makesym -$^ -/P -D"; \ | |
78 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ | |
79 | $${COMMAND} > $${OUTPUT}; \ | |
80 | grep -q '^ 0 Error(s) Detected' $${OUTPUT}; ERROR=$$? ; \ | |
81 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm -f $@; fi ; \ | |
82 | exit $${ERROR} | |
83 | endef | |
84 | ||
23f85294 | 85 | hdrom.c: hdrom.hex |
a16ba2b0 L |
86 | srec_cat -o $@ -c_array $(basename $<) -C_COMpressed -include $< -Intel |
87 | ||
88 | hdrom.hex : $(OBJ) | |
89 | @#$(cpm-link) | |
90 | ld80 -o $@ -ms $(@:.hex=.map) -P $(LN_PROG) -D $(LN_DATA) $^ | |
91 | ||
a2907f2e | 92 | %.rel %.lst: %.180 |
a16ba2b0 L |
93 | @$(cpm-asm) |
94 | ||
95 | hdrom.map: hdrom.hex | |
96 | ||
23f85294 | 97 | %.sym: hdrom.map %.lst |
a16ba2b0 L |
98 | @$(cpm-mksym) |
99 | ||
100 | .phony: clean realclean | |
101 | clean: | |
102 | rm -f $(OBJ) $(OBJ:.rel=.lst) $(OBJ:.rel=.sym) hdrom.hex | |
103 | ||
104 | realclean: clean | |
105 | rm -f *.prn *~ hdrom.map | |
106 | ||
107 | ||
108 | #================================================================== | |
109 | ||
110 | %.REL: %.MAC | |
111 | @COMMAND="$(AS) =$<"; \ | |
112 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ | |
113 | $${COMMAND} > $${OUTPUT}; \ | |
114 | grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \ | |
115 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; rm $@; fi ; \ | |
116 | rm $${OUTPUT}; \ | |
117 | exit $${ERROR} | |
118 | ||
119 | ||
120 | %.PRN: %.MAC | |
121 | @COMMAND="$(AS) ,$@=$<"; \ | |
122 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ | |
123 | $${COMMAND} > $${OUTPUT}; \ | |
124 | grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \ | |
125 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; fi ; \ | |
126 | rm $${OUTPUT}; \ | |
127 | exit $${ERROR} |