#
# SDX Plus firmware
#

all:		OSBASIC4.BIN BOOTSDX4.BIN

# So we can program 64KB W27C512s, which are easier to find than 16KB 27128s

OSBASIC4.BIN:	OSBASIC.BIN
		cat OSBASIC.BIN OSBASIC.BIN OSBASIC.BIN OSBASIC.BIN > OSBASIC4.BIN

BOOTSDX4.BIN:	BOOTSDX.BIN
		cat BOOTSDX.BIN BOOTSDX.BIN BOOTSDX.BIN BOOTSDX.BIN > BOOTSDX4.BIN

# The Fixed ROM and BASIC ROM together

OSBASIC.BIN:	OS.BIN basic.rom
		cat OS.BIN basic.rom > OSBASIC.BIN

# The Fixed ROM

OS.BIN:		os-sdx.rom VTAPEP.OUT
		cp os-sdx.rom OS.BIN
		dd if=VTAPEP.OUT of=OS.BIN bs=1 seek=2734 count=33 conv=notrunc

# The CP/M boot ROM and SDX ROM together

BOOTSDX.BIN:	BOOT.BIN SDX.BIN
		dd if=BOOT.BIN  > $@ 2> /dev/null
		dd if=SDX.BIN  >> $@ 2> /dev/null

# The CP/M boot ROM

BOOT.BIN:	BOOTZMON.REL BOOTISID.REL BOOTKBD.REL BOOTCRT.REL BOOTSCRT.REL BOOTDISC.REL BOOTFDSC.REL
		memu -mc -fast L80.COM BOOTZMON,BOOTISID,BOOTKBD,BOOTCRT,BOOTSCRT,BOOTDISC,BOOTFDSC,BOOT.BIN/N/Y/E

# Assembling the ROM modules

BOOTZMON.REL:	BOOTZMON.MAC BOOTCONF.INC
		unix2dos -q BOOTZMON.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTZMON

BOOTISID.REL:	BOOTISID.MAC BOOTCONF.INC
		unix2dos -q BOOTISID.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTISID

BOOTKBD.REL:	BOOTKBD.MAC BOOTCONF.INC
		unix2dos -q BOOTKBD.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTKBD

BOOTCRT.REL:	BOOTCRT.MAC BOOTCONF.INC
		unix2dos -q BOOTCRT.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTCRT

BOOTSCRT.REL:	BOOTSCRT.MAC BOOTCONF.INC
		unix2dos -q BOOTSCRT.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTSCRT

BOOTDISC.REL:	BOOTDISC.MAC BOOTCONF.INC
		unix2dos -q BOOTDISC.MAC
		unix2dos -q BOOTCONF.INC
		memu -mc -fast M80.COM =BOOTDISC

BOOTFDSC.REL:	BOOTFDSC.MAC BOOTCONF.INC
		unix2dos -q BOOTFDSC.MAC
		memu -mc -fast M80.COM =BOOTFDSC

#

SDX.BIN:	SDX.OUT VTAPE.OUT
		dd if=SDX.OUT of=SDX.BIN bs=256 skip=31 count=32
		dd if=VTAPE.OUT of=SDX.BIN bs=1024 seek=7 conv=notrunc

SDX.OUT:	SDXMAIN.REL SDXFDSC.REL SDXBAS.REL SDXFMT.REL SDXSTAT.REL SDXSD.REL SDXRAM.REL SDXEND.REL
		memu -mc -fast L80.COM /P:2000,SDXMAIN,SDXFDSC,SDXBAS,SDXFMT,SDXSTAT,SDXSD,SDXRAM,SDXEND,SDX.OUT/N/Y/E
		dd if=SDX.OUT of=SDX.BIN bs=256 skip=31 count=32

SDXMAIN.REL:	SDXMAIN.MAC BDOS.INC BASIC.INC SYSVARS.INC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXMAIN.MAC
		@unix2dos -q BDOS.INC
		@unix2dos -q BASIC.INC
		@unix2dos -q SYSVARS.INC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXMAIN

SDXFDSC.REL:	SDXFDSC.MAC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXFDSC.MAC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXFDSC

SDXBAS.REL:	SDXBAS.MAC BDOS.INC BASIC.INC SYSVARS.INC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXBAS.MAC
		@unix2dos -q BDOS.INC
		@unix2dos -q BASIC.INC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SYSVARS.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXBAS

SDXFMT.REL:	SDXFMT.MAC SDXCONF.INC
		@unix2dos -q SDXFMT.MAC
		@unix2dos -q SDXCONF.INC
		memu -mc -fast M80.COM =SDXFMT

SDXSTAT.REL:	SDXSTAT.MAC BDOS.INC BASIC.INC SYSVARS.INC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXSTAT.MAC
		@unix2dos -q BDOS.INC
		@unix2dos -q BASIC.INC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SYSVARS.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXSTAT

SDXSD.REL:	SDXSD.MAC PORTS.INC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXSD.MAC
		@unix2dos -q PORTS.INC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXSD

SDXRAM.REL:	SDXRAM.MAC SYSVARS.INC SDXCONF.INC SDXHIGH.INC
		@unix2dos -q SDXRAM.MAC
		@unix2dos -q SDXCONF.INC
		@unix2dos -q SYSVARS.INC
		@unix2dos -q SDXHIGH.INC
		memu -mc -fast M80.COM =SDXRAM

SDXEND.REL:	SDXEND.MAC
		@unix2dos -q SDXEND.MAC
		memu -mc -fast M80.COM =SDXEND

# Virtual tape stuff

VTAPE.OUT:	VTAPE.REL
		memu -mc -fast L80.COM VTAPE,VTAPE.OUT/N/Y/E

VTAPE.REL:	VTAPE.MAC
		@unix2dos -q PORTS.INC
		@unix2dos -q VTAPE.MAC
		memu -mc -fast M80.COM =VTAPE

VTAPEP.OUT:	VTAPEP.REL
		memu -mc -fast L80.COM VTAPEP,VTAPEP.OUT/N/Y/E

VTAPEP.REL:	VTAPEP.MAC PORTS.INC
		@unix2dos -q PORTS.INC
		@unix2dos -q VTAPEP.MAC
		memu -mc -fast M80.COM =VTAPEP

# General files

CONFIG.COM:	CONFIG.REL
		memu -mc -fast L80.COM CONFIG,CONFIG/N/Y/E

CONFIG.REL:	CONFIG.MAC
		@unix2dos -q CONFIG.MAC
		memu -mc -fast M80.COM =CONFIG

SIDISC.COM:	SIDISC.REL
		memu -mc -fast L80.COM SIDISC,SIDISC/N/Y/E

SIDISC.REL:	SIDISC.MAC
		@unix2dos -q SIDISC.MAC
		memu -mc -fast M80.COM =SIDISC

# SDPTAPE

SDPTAPE.COM:	SDPTAPE.REL
		memu -mc -fast L80.COM SDPTAPE,SDPTAPE/N/Y/E

SDPTAPE.REL:	SDPTAPE.MAC
		@unix2dos -q SDPTAPE.MAC
		@unix2dos -q PORTS.INC
		memu -mc -fast M80.COM =SDPTAPE

#

clean:
		@rm *.bin *.REL *.BIN
