Implement 386 instruction table, improve 8086/186/286 instruction table
[multi_emu.git] / Makefile
1 BIN2HEX=bin2hex.py
2
3 CFLAGS=-g -Og -Wall -Wno-attributes -Wno-unused-function
4 ALT_65C02_CFLAGS=-DALT_BACKEND=1 -DVR_6502_EMU_STATIC=1
5 ALT_6800_CFLAGS=-DALT_BACKEND=1 -DUSE_PROTOTYPES -DM6800 -Isim68xx/inc/arch/m6800 -Isim68xx/inc/arch/m68xx -Isim68xx/inc/base
6 ALT_68000_CFLAGS=-DALT_BACKEND=1 -IMusashi -IMusashi/softfloat
7 ALT_6809_CFLAGS=-DALT_BACKEND=1 -IVCC
8 ALT_8086_CFLAGS=-DALT_BACKEND=1 -Ivirtualxt/lib/vxt -Ivirtualxt/lib/vxt/include
9 ALT_MIPS_CFLAGS=-DALT_BACKEND=1 -DHAVE_CONFIG_H -Iyams -Iyams/src -Wno-enum-compare
10 ALT_PDP11_CFLAGS=-DALT_BACKEND=1 -Isimh -Isimh/PDP11
11 ALT_Z80_CFLAGS=-DALT_BACKEND=1
12
13 .PHONY: all
14 all: \
15 emu_65c02 \
16 emu_65c02_alt \
17 6502_functional_test.ihx \
18 65C02_extended_opcodes_test.ihx \
19 emu_6800 \
20 emu_6800_alt \
21 emu_68000_alt \
22 emu_6809 \
23 emu_6809_alt \
24 basic_6809.ihx \
25 emu_8086_alt \
26 msbasic.ihx \
27 emu_mips_alt \
28 emu_pdp11_alt \
29 basic_pdp11.ihx \
30 emu_z80 \
31 emu_z80_alt \
32 zexall.ihx \
33 zexdoc.ihx
34 #emu_mips
35 #emu_pdp11
36 #emu_68000
37 #emu_8086
38
39 # 65C02
40 emu_65c02: emu_65c02.o cpu_65c02.o
41         ${CC} ${CFLAGS} -o $@ $^
42
43 emu_65c02.o: cpu_65c02.h
44
45 cpu_65c02.o: cpu_65c02.h
46
47 emu_65c02_alt: emu_65c02_alt.o vrEmu6502.o
48         ${CC} ${CFLAGS} -o $@ $^
49
50 emu_65c02_alt.o: emu_65c02.c vrEmu6502/src/vrEmu6502.h
51         ${CC} ${CFLAGS} ${ALT_65C02_CFLAGS} -o $@ -c $<
52
53 vrEmu6502.o: vrEmu6502/src/vrEmu6502.c vrEmu6502/src/vrEmu6502.h
54         ${CC} ${CFLAGS} ${ALT_65C02_CFLAGS} -c $<
55
56 6502_functional_test.ihx: \
57 6502_65C02_functional_tests/bin_files/6502_functional_test.bin
58         ${BIN2HEX} $< __temp__.ihx
59         ./entry_point.py 0x400 __temp__.ihx $@
60         rm __temp__.ihx
61
62 65C02_extended_opcodes_test.ihx: \
63 6502_65C02_functional_tests/bin_files/65C02_extended_opcodes_test.bin
64         ${BIN2HEX} $< __temp__.ihx
65         ./entry_point.py 0x400 __temp__.ihx $@
66         rm __temp__.ihx
67
68 # 6800
69 emu_6800: emu_6800.o cpu_6800.o
70         ${CC} ${CFLAGS} -o $@ $^
71
72 emu_6800.o: cpu_6800.h
73
74 cpu_6800.o: cpu_6800.h
75
76 emu_6800_alt: \
77 emu_6800_alt.o \
78 m6800_callstac.o \
79 m6800_cpu.o \
80 m6800_error.o \
81 m6800_instr.o \
82 m6800_reg.o \
83 m6800_symtab.o \
84 m6800_opfunc.o \
85 m6800_optab.o
86         ${CC} ${CFLAGS} -o $@ $^
87
88 emu_6800_alt.o: \
89 emu_6800.c \
90 sim68xx/inc/arch/m68xx/instr.h \
91 sim68xx/inc/arch/m68xx/reg.h
92         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
93
94 m6800_callstac.o: sim68xx/src/base/callstac.c
95         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
96
97 m6800_cpu.o: sim68xx/src/base/cpu.c
98         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
99
100 m6800_error.o: sim68xx/src/base/error.c
101         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
102
103 m6800_instr.o: sim68xx/src/arch/m6800/instr.c
104         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
105
106 m6800_reg.o: sim68xx/src/arch/m68xx/reg.c
107         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
108
109 m6800_symtab.o: sim68xx/src/base/symtab.c
110         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
111
112 m6800_opfunc.o: sim68xx/src/arch/m68xx/opfunc.c
113         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
114
115 m6800_optab.o: sim68xx/src/arch/m6800/optab.c
116         ${CC} ${CFLAGS} ${ALT_6800_CFLAGS} -o $@ -c $<
117
118 # 68000
119 emu_68000: emu_68000.o cpu_68000.o
120         ${CC} ${CFLAGS} -o $@ $^
121
122 emu_68000.o: cpu_68000.h
123
124 cpu_68000.o: cpu_68000.h
125
126 emu_68000_alt: \
127 emu_68000_alt.o \
128 m68kcpu.o \
129 m68kops.o \
130 softfloat.o
131         ${CC} ${CFLAGS} -o $@ $^
132
133 emu_68000_alt.o: \
134 emu_68000.c \
135 Musashi/m68k.h
136         ${CC} ${CFLAGS} ${ALT_68000_CFLAGS} -o $@ -c $<
137
138 m68kcpu.o: Musashi/m68kcpu.c Musashi/m68kfpu.c
139         ${CC} ${CFLAGS} ${ALT_68000_CFLAGS} -o $@ -c $<
140
141 m68kops.o: Musashi/m68kops.c
142         ${CC} ${CFLAGS} ${ALT_68000_CFLAGS} -o $@ -c $<
143
144 softfloat.o: Musashi/softfloat/softfloat.c
145         ${CC} ${CFLAGS} ${ALT_68000_CFLAGS} -o $@ -c $<
146
147 # 6809
148 emu_6809: emu_6809.o cpu_6809.o
149         ${CC} ${CFLAGS} -o $@ $^
150
151 emu_6809.o: cpu_6809.h
152
153 cpu_6809.o: cpu_6809.h
154
155 emu_6809_alt: \
156 emu_6809_alt.o \
157 mc6809.o
158         ${CC} ${CFLAGS} -o $@ $^
159
160 emu_6809_alt.o: \
161 emu_6809.c \
162 VCC/mc6809.h \
163 VCC/tcc1014mmu.h
164         ${CC} ${CFLAGS} ${ALT_6809_CFLAGS} -o $@ -c $<
165
166 mc6809.o: VCC/mc6809.c
167         ${CC} ${CFLAGS} ${ALT_6809_CFLAGS} -o $@ -c $<
168
169 basic_6809.ihx: ExBasROM.hex
170         dos2unix <$< >$@
171
172 ExBasROM.hex: ExBasRom.zip
173         rm -f $@
174         unzip $< $@
175
176 ExBasRom.zip:
177         rm -f $@
178         wget http://searle.x10host.com/6809/$@
179
180 # 8086
181 emu_8086: emu_8086.o cpu_8086.o
182         ${CC} ${CFLAGS} -o $@ $^
183
184 emu_8086.o: cpu_8086.h
185
186 cpu_8086.o: cpu_8086.h
187
188 emu_8086_alt: emu_8086_alt.o vxt_cpu.o
189         ${CC} ${CFLAGS} -o $@ $^
190
191 emu_8086_alt.o: emu_8086.c virtualxt/lib/vxt/cpu.h
192         ${CC} ${CFLAGS} ${ALT_8086_CFLAGS} -o $@ -c $<
193
194 vxt_cpu.o: virtualxt/lib/vxt/cpu.c virtualxt/lib/vxt/cpu.h
195         ${CC} ${CFLAGS} ${ALT_8086_CFLAGS} -o $@ -c $<
196
197 msbasic.ihx: msbasic.com
198         ${BIN2HEX} --offset=0x600 $< __temp__.ihx
199         ./entry_point.py 0x50:0x100 __temp__.ihx $@
200         rm __temp__.ihx
201
202 # MIPS
203 emu_mips: emu_mips.o cpu_mips.o
204         ${CC} ${CFLAGS} -o $@ $^
205
206 emu_mips.o: cpu_mips.h
207
208 cpu_mips.o: cpu_mips.h
209
210 emu_mips_alt: \
211 emu_mips_alt.o \
212 cp0.o \
213 cpu.o \
214 misc.o
215         ${CC} ${CFLAGS} -o $@ $^
216
217 emu_mips_alt.o: \
218 emu_mips.c \
219 yams/src/cpu.h \
220 yams/src/cpu_defs.h \
221 yams/src/cpuregs.h \
222 yams/src/memory.h \
223 yams/src/simulator.h
224         ${CC} ${CFLAGS} ${ALT_MIPS_CFLAGS} -o $@ -c $<
225
226 cp0.o: yams/src/cp0.c
227         ${CC} ${CFLAGS} ${ALT_MIPS_CFLAGS} -o $@ -c $<
228
229 cpu.o: yams/src/cpu.c
230         ${CC} ${CFLAGS} ${ALT_MIPS_CFLAGS} -o $@ -c $<
231
232 misc.o: yams/src/misc.c
233         ${CC} ${CFLAGS} ${ALT_MIPS_CFLAGS} -o $@ -c $<
234
235 # PDP-11
236 emu_pdp11: emu_pdp11.o cpu_pdp11.o
237         ${CC} ${CFLAGS} -o $@ $^
238
239 emu_pdp11.o: cpu_pdp11.h
240
241 cpu_pdp11.o: cpu_pdp11.h
242
243 emu_pdp11_alt: \
244 emu_pdp11_alt.o \
245 pdp11_cpu.o \
246 pdp11_cis.o \
247 pdp11_fp.o
248         ${CC} ${CFLAGS} -o $@ $^
249
250 emu_pdp11_alt.o: \
251 emu_pdp11.c \
252 simh/PDP11/pdp11_defs.h \
253 simh/PDP11/pdp11_cpumod.h
254         ${CC} ${CFLAGS} ${ALT_PDP11_CFLAGS} -o $@ -c $<
255
256 pdp11_cpu.o: simh/PDP11/pdp11_cpu.c
257         ${CC} ${CFLAGS} ${ALT_PDP11_CFLAGS} -o $@ -c $<
258
259 pdp11_cis.o: simh/PDP11/pdp11_cis.c
260         ${CC} ${CFLAGS} ${ALT_PDP11_CFLAGS} -o $@ -c $<
261
262 pdp11_fp.o: simh/PDP11/pdp11_fp.c
263         ${CC} ${CFLAGS} ${ALT_PDP11_CFLAGS} -o $@ -c $<
264
265 basic_pdp11.ihx: doc/DEC-11-AJPB-PB.ptap
266         ./absolute_loader.py $< $@
267
268 # Z80
269 emu_z80: emu_z80.o cpu_z80.o
270         ${CC} ${CFLAGS} -o $@ $^
271
272 emu_z80.o: cpu_z80.h
273
274 cpu_z80.o: cpu_z80.h
275
276 emu_z80_alt: emu_z80_alt.o z80.o
277         ${CC} ${CFLAGS} -o $@ $^
278
279 emu_z80_alt.o: emu_z80.c z80/z80.h
280         ${CC} ${CFLAGS} ${ALT_Z80_CFLAGS} -o $@ -c $<
281
282 z80.o: z80/z80.c z80/z80.h
283         ${CC} ${CFLAGS} ${ALT_Z80_CFLAGS} -c $<
284
285 zexall.ihx: ZEXALL/zexall.com
286         ${BIN2HEX} --offset=0x100 $< __temp__.ihx
287         ./entry_point.py 0x100 __temp__.ihx $@
288         rm __temp__.ihx
289
290 zexdoc.ihx: ZEXALL/zexdoc.com
291         ${BIN2HEX} --offset=0x100 $< __temp__.ihx
292         ./entry_point.py 0x100 __temp__.ihx $@
293         rm __temp__.ihx
294
295 .PHONY: clean
296 clean:
297         rm -f \
298 *.ihx \
299 *.o \
300 emu_65c02 \
301 emu_65c02_alt \
302 emu_6800 \
303 emu_6800_alt \
304 emu_68000_alt \
305 emu_6809 \
306 emu_6809_alt \
307 emu_8086_alt \
308 emu_pdp11_alt \
309 emu_z80 \
310 emu_z80_alt
311 #emu_pdp11
312 #emu_68000
313 #emu_8086