# Makefile for BCC tests
#
MODEL=s
CC = bcc -M$(MODEL)
CPP = gcc -E
CINCL = /usr/lib/bcc/include/
AS = as86
LINK = $(CC) -v
COPT = -ansi -I$(CINCL) -c -O -DDEBUG=0
LOPT = -m >$*.map -M -d
AOPT = -0 -a -w
FD = msdos.b
FDSIZE = 1440
MFILE=/tmp/liloboot
LOOP=/dev/loop5

.SUFFIXES:	.com .S

.c.o:
	$(CC) $(COPT) -o $@ $<

.o.com:
	$(LINK) $(LOPT) -o $@ $^

.s.o:
	$(AS) $(AOPT) -l $*.lis -o $@ $<

all:	test4d.com test4.com bootdisk.b.gz

floppy:	bootdisk.b.gz
	gzip -d <bootdisk.b.gz | dd of=/dev/fd0 bs=1024

bootdisk.b.gz:	sector.b test4.com test4d.com
	rm -rf $(MFILE) bootdisk.b
	mkdir $(MFILE)
	dd if=/dev/zero of=bootdisk.b bs=1024 count=$(FDSIZE)
	mkfs.msdos bootdisk.b
	dd if=sector.b bs=2 count=1 of=floppy.b
	dd if=bootdisk.b bs=2 skip=1 count=30 >>floppy.b
	dd if=sector.b bs=2 skip=31 count=225 >>floppy.b
#	umount $(MFILE) 2>/dev/null
	mount -t msdos -o loop=$(LOOP) bootdisk.b $(MFILE)
	dd if=floppy.b of=$(LOOP) bs=512
	chown 0.0 *.com *.map
	cp -ufv test4.com $(MFILE)/hipboot.sys
	cp -ufv test4.com $(MFILE)
	cp -ufv test4d.com $(MFILE)
	if [ -f ../disk.b ]; then cp -ufv ../disk.b $(MFILE)/disk.com; fi
	umount $(MFILE)
	rm -rf $(MFILE)
	gzip -9 <bootdisk.b >bootdisk.b.gz
	rm -f bootdisk.b

test4.com:	test4.o bios_start.o cprintf.o

sector.o:	sector.s
test4.o:	test4.c ../bdata.h
cprintf.o:	cprintf.c
bios_start.o:	bios.c
#	bcc -c -u -I../../dev86-0.16.0/libc/include -DL_bios_start -D__AS386_16__ -D__STANDALONE__ -o bios_start.o bios.c -v
	bcc -c -u -I/usr/lib/bcc/include -DL_bios_start -D__AS386_16__ -D__STANDALONE__ -o bios_start.o bios.c -v

test4d.o:	test4.c ../bdata.h
	bcc -Md $(COPT) -o $@ $<

test4d.com:	test4d.o
	bcc -Md $(LOPT) -o $@ $^

sector.s:	sector.S
	$(CPP) -traditional -o $@ $<

sector.img:	sector.o
	ld86 -0 -s -o $@ $<

sector.b:	sector.img
	dd if=$< of=$@ bs=32 skip=1

floppy.b:	sector.b
	dd if=sector.b bs=2 count=1 of=floppy.b
	dd if=$(FD) bs=2 skip=1 count=30 >>floppy.b
	dd if=sector.b bs=2 skip=31 count=225 >>floppy.b
	
tidy:
	rm -f *.map *.lis core

clean:	tidy
	rm -f *.o *.s *.img *.b

spotless:  clean
	rm -f *.com *.gz *~

