]>
Commit | Line | Data |
---|---|---|
b0db0839 L |
1 | |
2 | # The system-independent files: | |
3 | ||
4 | SRC_CPSKER = cpsker.asm cpsdef.asm cpsmit.asm cpscom.asm cpspk1.asm \ | |
5 | cpspk2.asm cpsrem.asm cpsser.asm cpstt.asm cpscpm.asm \ | |
6 | cpswld.asm cpscmd.asm cpsutl.asm cpsdat.asm cpxlnk.asm | |
7 | ||
8 | # The system-dependent files: | |
9 | ||
10 | SRC_SYSDEP = cpxtyp.asm cpxlnk.asm cpxcom.asm cpxswt.asm cpxvdu.asm | |
11 | ||
12 | # One of: | |
13 | ||
14 | SRC_SYSTEM = cpxsys.asm cpxtor.asm cpxnor.asm cpxmrl.asm cpxsb.asm \ | |
15 | cpxcif.asm cpxhea.asm cpxapp.asm cpxpcw.asm cpxbbi.asm cpxbee.asm \ | |
16 | cpxsyo.asm cpxtm4.asm cpxgni.asm cpxpro.asm cpxz80.asm cpxac.asm | |
17 | ||
18 | ||
19 | OVLADR = 7000 | |
20 | ||
0a1239e0 L |
21 | # Create assembler listing by default |
22 | AS_FLAGS = /L | |
b0db0839 L |
23 | |
24 | # CP/M emulator | |
25 | #CPMEMU = aliados | |
26 | CPMEMU = zxcc | |
27 | ||
28 | ifeq "$(OS)" "Windows_NT" | |
29 | PLATFORM=win32 | |
30 | else | |
31 | PLATFORM=Linux | |
32 | endif | |
33 | ||
34 | #Location of M80/L80 | |
35 | ifeq ($(PLATFORM),Linux) | |
36 | CPMBIN = /usr/local/lib/cpm/bin80 | |
37 | else | |
38 | CPMBIN = C:/cpmbin | |
39 | endif | |
40 | ||
41 | AS = $(CPMEMU) $(CPMBIN)/m80.com | |
42 | LINK = $(CPMEMU) $(CPMBIN)/l80.com | |
43 | ||
0a1239e0 L |
44 | ECHO = /bin/echo -e |
45 | RM = rm -f | |
46 | ||
47 | comma := , | |
48 | empty := | |
49 | space := $(empty) $(empty) | |
50 | commasep = $(subst $(space),$(comma),$(strip $(1))) | |
51 | ccpline = $(CPMEMU) $(1) -$(call commasep, $(2)) | |
52 | ||
53 | do_as = \ | |
54 | @COMMAND="$(AS) -=$<$(AS_FLAGS)"; \ | |
b0db0839 | 55 | OUTPUT=$$(mktemp); echo $${COMMAND}; \ |
0a1239e0 | 56 | $${COMMAND} | tee $${OUTPUT}; \ |
b0db0839 | 57 | grep -q 'No Fatal error(s).$$' $${OUTPUT}; ERROR=$$? ; \ |
0a1239e0 L |
58 | if [ "$${ERROR}" != "0" ]; then cat $${OUTPUT}; $(RM) $@; fi ; \ |
59 | $(RM) $${OUTPUT}; \ | |
b0db0839 L |
60 | exit $${ERROR} |
61 | ||
62 | ||
0a1239e0 | 63 | .SUFFIXES: |
b0db0839 L |
64 | .PHONY: all |
65 | ||
b0db0839 | 66 | |
0a1239e0 | 67 | all: kerm411.com |
b0db0839 | 68 | |
0a1239e0 L |
69 | kerm411.com: cpsker.hex cpxtyp.hex |
70 | $(CPMEMU) mload.com -$@=$(call commasep, $^) | |
b0db0839 | 71 | |
0a1239e0 L |
72 | cpsker.hex: LOADADR = 100 |
73 | cpxtyp.hex: LOADADR = $(OVLADR) | |
b0db0839 | 74 | |
b0db0839 | 75 | |
0a1239e0 L |
76 | cpxtyp.hex: $(SRC_SYSDEP) $(SRC_SYSTEM) |
77 | cpsker.hex: $(SRC_CPSKER) | |
78 | #cpxtyp.prn: $(SRC_SYSDEP) $(SRC_SYSTEM) | |
79 | #cpsker.prn: $(SRC_CPSKER) | |
b0db0839 | 80 | |
0a1239e0 | 81 | kerm411.com: | mload.com |
b0db0839 | 82 | |
0a1239e0 L |
83 | .SECONDARY: mload.com |
84 | .INTERMEDIATE: mload.rel tmp.asm | |
85 | mload.rel: AS_FLAGS = / # No assembler listing | |
86 | mload.rel: tmp.asm | |
87 | tmp.asm: mload.asm | |
88 | $(ECHO) 'aseg\r' >tmp.asm | |
89 | cat mload.asm >>tmp.asm | |
b0db0839 L |
90 | |
91 | ||
92 | %.rel: %.asm | |
0a1239e0 | 93 | $(do_as) |
b0db0839 L |
94 | |
95 | ||
0a1239e0 L |
96 | %.hex: %.rel |
97 | $(LINK) -/P:$(LOADADR),$(call commasep, $< $@)/N/X/E | |
b0db0839 | 98 | |
b0db0839 L |
99 | |
100 | %.com: %.rel | |
0a1239e0 | 101 | $(LINK) -/P:100,$(call commasep, $< $@)/N/E |
b0db0839 L |
102 | |
103 | ||
104 | .PHONY: clean | |
105 | ||
106 | clean: | |
0a1239e0 | 107 | $(RM) *.hex *.prn |