-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
138 lines (114 loc) · 3 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# BW-DOS build recipes
# --------------------
# Build folder
BUILD=build
# Output disk
DISK=$(BUILD)/disk
# And folder with listings
LST=$(BUILD)/lst
# Standard tools:
TOOLS=\
dos/bload.com\
dos/boot.com\
dos/chkdsk.com\
dos/chvol.com\
dos/copy.com\
dos/cut.com\
dos/date.com\
dos/dirmast.com\
dos/disass.com\
dos/dump.com\
dos/else.com\
dos/endif.com\
dos/format.com\
dos/hexedit.com\
dos/if.com\
dos/mdump.com\
dos/mem.com\
dos/memedit.com\
dos/move.com\
dos/msdos.com\
dos/msini.com\
dos/newed.com\
dos/offload.com\
dos/pause.com\
dos/pwd.com\
dos/save.com\
dos/time.com\
dos/unerase.com\
dos/verify.com\
dos/xbat.com\
dos/argsprn.com\
dos/argsrtc.com\
dos/autocwd.com\
dos/clock.com\
dos/dosdrive.com\
dos/keybuff.com\
dos/rambox.com\
dos/ramdisk.com\
dos/rtime8.com\
dos/xfsio.com\
dos/xlrdisk.com\
# Tools from multiple files
TOOLS_MULTI=\
dos/backup.com\
dos/menu.com\
# And the main DOS file
XDOS=dos/xbw14d.dos
# The extra files included in the original BW-DOS disk:
EXTRA=\
readme.txt\
startup.bat\
bwdfunct.bas\
# The resulting ATR image
ATR=bwdos.atr
#######################################################################
# Build tools
MADS=mads
MKATR=mkatr
#######################################################################
# Main rules
# The output files
O_TOOLS=$(TOOLS:%=$(DISK)/%)
O_TOOLS_MULTI=$(TOOLS_MULTI:%=$(DISK)/%)
O_XDOS=$(XDOS:%=$(DISK)/%)
O_EXTRA=$(EXTRA:%=$(DISK)/%)
O_ATR=$(ATR:%=$(BUILD)/%)
OUT=\
$(O_TOOLS)\
$(O_TOOLS_MULTI)\
$(O_XDOS)\
$(O_EXTRA)\
# Main rule: build the ATR image
all: $(O_ATR)
# Build boot-able DOS disk image
$(O_ATR): $(OUT) | $(BUILD)
$(MKATR) $@ $(DISK)/dos -b $(O_XDOS) \
$(sort $(O_TOOLS) $(O_TOOLS_MULTI) $(O_EXTRA))
# Build DOS
$(O_XDOS):dos/bwdos.asm | $(DISK)/dos $(LST)
$(MADS) -o:$@ -l:$(LST)/$(notdir $(@:%.dos=%.lst)) -t:$(LST)/$(notdir $(@:%.dos=%.lab)) $<
# Simple assembly for the main tools:
$(O_TOOLS):$(DISK)/dos/%.com:utils/%.src | $(DISK)/dos $(LST)
$(MADS) -o:$@ -l:$(LST)/$(notdir $(@:%.com=%.lst)) -t:$(LST)/$(notdir $(@:%.com=%.lab)) $<
# Assembly from multiple files:
$(O_TOOLS_MULTI):$(DISK)/dos/%.com:utils/%.asm | $(DISK)/dos $(LST)
$(MADS) -o:$@ -l:$(LST)/$(notdir $(@:%.com=%.lst)) -t:$(LST)/$(notdir $(@:%.com=%.lab)) $<
# Extra files
$(O_EXTRA):$(DISK)/%:extra/%
cp $< $@
# Make build folder
$(BUILD):
mkdir -p $@
$(DISK): | $(BUILD)
mkdir -p $@
$(DISK)/dos: | $(DISK)
mkdir -p $@
$(LST): | $(BUILD)
mkdir -p $@
# Dependencies
$(O_XDOS): dos/bwdosa.src dos/bwdosb.src dos/bwdosc.src dos/bwmac.src\
dos/comtab.src dos/bwcmd.src dos/equates.inc dos/startup.src
$(O_TOOLS): utils/print.inc utils/print1.inc utils/chkdos.inc utils/chkbw.inc\
utils/error.inc
$(DISK)/dos/menu.com: utils/menu_a.src utils/menu_b.src utils/menu_c.src