.SUFFIXES: .fap .obj .lst

ASM7090 = asm7090
LNK7090 = lnk7090
OBJ2BIN = obj2bin
OBJ2IMG = obj2img

ASMFLAGS = $(DEBUG) -I ../include -wc CTSS -l $(subst obj,lst,$@)

.fap.obj:
	$(ASM7090) $(ASMFLAGS) -o $@ $<

EXES = fib.exe fibmon.exe hello.exe ldabs.exe link.exe listf.exe
IMAGES = fib.img fibmon.img hello.img fap.img ldabs.img link.img \
	listf.img
TAPES = com2.tap dot.img

LIBS = -L../tslib1
XLIBS = -L../xlibe

FIBOBJS = fib.mdo
FIBMONOBJS = fibmon.mdo
HELLOOBJS = hello.obj helout.obj ../com3/messg.obj ../com3/seterr.obj \
	../com3/svcpu.obj
LDABSOBJS = madmain.obj ldabs.mdo cksum.obj
LINKOBJS = link.mdo
LISTFOBJS = listf.mdo lfunc.mdo lsort.mdo nullb.obj readfl.obj

DOTOBJS = main.obj abbr.obj gtprob.obj iccom.obj pri.obj profl.obj tball.obj
DOTSRCS = main.fap abbr.fap gtprob.fap iccom.fap pri.fap profl.fap tball.fap
DOTIMGS = main.img abbr.img gtprob.img iccom.img pri.img profl.img tball.img

OBJS = abbr.obj cksum.obj comand.obj fap.obj fmstap.obj gencom.obj gtprob.obj \
	hello.obj helout.obj iccom.obj list5.obj madmain.obj main.obj \
	nullb.obj pri.obj profl.obj readfl.obj

all: $(OBJS) $(EXES) $(TAPES)

clean:
	rm -f *.obj *.lst
	rm -f *.exe *.img *.map *.tap

dot.exe: $(DOTOBJS)
	$(LNK7090) -wxdmo DOT dot.map $@ $(DOTOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f "." -o dot.img $@

fib.exe: $(FIBOBJS)
	$(LNK7090) -wxdmo FIB fib.map $@ $(FIBOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f FIB -o fib.img $@

fibmon.exe: $(FIBMONOBJS)
	$(LNK7090) -wxdmo FIBMON fibmon.map $@ $(FIBMONOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f FIBMON -o fibmon.img $@

hello.exe: $(HELLOOBJS)
	$(LNK7090) -wxdmo HELLO hello.map $@ $(HELLOOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f HELO8A -o hello.img $@

ldabs.exe: $(LDABSOBJS)
	$(LNK7090) -wxdmo LDABS ldabs.map $@ $(LDABSOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f LDABS -o ldabs.img $@

link.exe: $(LINKOBJS)
	$(LNK7090) -wxdmo LINK link.map $@ $(LINKOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f LINK -o link.img $@

listf.exe: $(LISTFOBJS)
	$(LNK7090) -wxdmo LISTF listf.map $@ $(LISTFOBJS) $(XLIBS) $(LIBS)
	$(OBJ2IMG) -f LISTF -o listf.img $@

com2.tap: $(EXES)
	$(OBJ2IMG) -f FAP -o fap.img fap.obj
	cat $(IMAGES) ../EOF.BIN >com2.tap

dot.img: $(DOTSRCS)
	ls -1 $(DOTSRCS) | awk -F . '{ print "obj2img -t -f " $$1 " -e " $$2 " -a \" M1416SYSDEV\" -o " $$1 ".img " $$1 "."$$2 }' >/tmp/fapimg.sh
	@sh -x /tmp/fapimg.sh
	@rm -f /tmp/fapimg.sh
	$(OBJ2IMG) -t -f calls -e fap -a " M1416SYSDEV" -o calls.img \
		../include/calls.inc
	$(OBJ2IMG) -t -f misc -e fap -a " M1416SYSDEV" -o misc.img \
		../include/misc.inc
	$(OBJ2IMG) -t -f lookup -e fap -a " M1416SYSDEV" -o lookup.img \
		../include/lookup.inc
	$(OBJ2IMG) -t -f .com -e fap -a " M1416SYSDEV" -o .com.img \
		../include/.com.inc
	$(OBJ2IMG) -t -f mkdot -e runcom -a " M1416SYSDEV" -o mkdot.img \
		mkdot.runcom
	cat $(DOTIMGS) calls.img misc.img lookup.img .com.img \
		mkdot.img >dot.img

dot.tap: dot.img
	cat dot.img ../EOF.BIN >dot.tap
