all: freezer.atr freezer128.atr wrdisk.rom

ATASM=atasm

ASMFLAGS=
#ASMFLAGS = -s

CXXFLAGS=-g -W -Wall

FLASH.COM: flash.src flash.inc cio.inc
	$(ATASM) $(ASMFLAGS) -oFLASH.COM flash.src

CFLASH.COM: flash.src flash.inc cio.inc
	$(ATASM) $(ASMFLAGS) -dCARTFLOPPY=1 -oCFLASH.COM flash.src

PATCH.COM: patch.src cio.inc crc16.src
	$(ATASM) $(ASMFLAGS) -oPATCH.COM patch.src

setbnk8.rom: setbank.src flash.inc cio.inc mypdos.bin
	$(ATASM) $(ASMFLAGS) -osetbnk8.rom -r setbank.src

setbank.rom: setbnk8.rom
	cat setbnk8.rom oldos.rom > setbank.rom

test.atr: test.src
	$(ATASM) $(ASMFLAGS) -r test.src
	cp -f test.bin test.atr

chkrom: chkrom.o
	$(CXX) -o chkrom chkrom.o

romcrc: romcrc.o crc16.o
	$(CXX) -o romcrc romcrc.o crc16.o

crc16.o: crc16.cpp crc16.h

romcrc.o: romcrc.cpp crc16.h

8kblank.rom:
	dd if=/dev/zero bs=8k count=1 | tr '\000' '\377' > 8kblank.rom

16kblank.rom:
	dd if=/dev/zero bs=16k count=1 | tr '\000' '\377' > 16kblank.rom

frz512.rom: 8kblank.rom 16kblank.rom setbank.rom frzrom
	cat 16kblank.rom \
		8kblank.rom \
		freezer/freezer.rom \
		setbank.rom > frz512.rom

frz128.rom: setbank.rom frzrom
	cat freezer/freezer.rom setbank.rom > frz128.rom

frzrom:
	make -C freezer freezer.rom

wrdisk1.rom: wrdisk.src cio.inc flash.inc freezer/HIDET.M65 freezer/HISIO.M65
	$(ATASM) $(ASMFLAGS) -Ifreezer -r -f255 -owrdisk1.rom wrdisk.src

wrdisk.rom: wrdisk1.rom freezer.atr
	dd if=/dev/zero bs=8k count=18 | tr '\000' '\377' > wrdisk.rom
	dd if=wrdisk1.rom of=wrdisk.rom bs=8k conv=notrunc
	dd if=freezer.atr of=wrdisk.rom bs=1 conv=notrunc seek=8192 skip=16
	cp -f wrdisk.rom wrdisk

#imgdisk: FLASH.COM CFLASH.COM PATCH.COM setbank.rom frz128.rom frz512.rom
#	cp -f FLASH.COM CFLASH.COM PATCH.COM disk
#	cp -f frz128.rom disk/FRZ128.ROM
#	cp -f frz512.rom disk/FRZ512.ROM
#	dir2atr -b MyDos453 -d 720 freezer.atr disk

freezer.atr: FLASH.COM PATCH.COM frz512.rom
	cp -f FLASH.COM PATCH.COM disk
	cp -f frz512.rom disk/FREEZER.ROM
	dir2atr -b MyDos453 1040 freezer.atr disk

freezer128.atr: FLASH.COM PATCH.COM frz128.rom
	cp -f FLASH.COM PATCH.COM disk128
	cp -f frz128.rom disk128/FRZ128.ROM
	dir2atr -b MyDos453 1040 freezer128.atr disk128

all.rom: frz512.rom wrdisk.rom FLASH.COM
	dd if=/dev/zero bs=8k count=64 | tr '\000' '\377' > all.rom
	dd if=wrdisk.rom of=all.rom bs=8k conv=notrunc
	dd if=frz512.rom of=all.rom bs=8k conv=notrunc seek=56
	cp -f FLASH.COM all.rom all-rom
	dir2atr -m -d -b MyDos453 all-rom.atr all-rom

cartmenu.rom: cartmenu.src
	$(ATASM) $(ASMFLAGS) -r -f255 -ocartmenu.rom cartmenu.src

tstrom: FLASH.COM PATCH.COM setbank.rom 16kblank.rom 8kblank.rom frz128.rom frz512.rom cartmenu.rom
	cat roms/basicxl.rom \
		roms/basicxe.rom \
		roms/action.rom \
		roms/mac65.rom \
		roms/galaxian.rom roms/anteater.rom \
		roms/defender.rom \
		frz128.rom >testrom/T128.ROM
	cat roms/dos20.rom \
		roms/sdx419.rom \
		roms/sdx421.rom \
		roms/sdx422.rom \
		roms/basicxl.rom \
		roms/basicxe.rom \
		roms/mac65.rom \
		roms/action.rom \
		roms/defender.rom \
		roms/donkey.rom \
		roms/poleposition.rom \
		roms/popeye.rom \
		roms/bcsquest.rom \
		roms/anteater.rom \
		roms/asteroid.rom \
		roms/galaxian.rom \
		roms/pacman.rom \
		roms/zenji.rom \
		cartmenu.rom \
		frz512.rom > testrom/T512.ROM
	cat roms/sdx422.rom \
		roms/basicxe.rom \
		roms/poleposition.rom \
		roms/pacman.rom \
		roms/galaxian.rom > testrom/RAM.ROM

testdisk.atr: img
	cp -f freezer64k.rom 512k/freezer.rom
	cp -f FLASH.COM PATCH.COM newdisk
	cp -f freezer32k.rom newdisk/FRZ32K.ROM
	cp -f freezer64k.rom newdisk/FRZ64K.ROM
	cp -f 512k/all.rom newdisk/TEST.ROM
	cp -f 512k/ram.rom newdisk/RAMTEST.ROM
	unix2atr -m -d 5760 testdisk.atr newdisk

	cat roms/basicxl.rom \
		roms/basicxe.rom \
		roms/action.rom \
		roms/mac65.rom \
		roms/galaxian.rom roms/anteater.rom \
		roms/defender.rom \

# 128k ROM layout:
#  0 Basic XL (OSS)
#  2 Basic XE (OSS)
#  4 Action (OSS)
#  6 Mac 65 (OSS)
#  8 Galaxian (8k)
#  9 Ant Eater (8k)
# 10 Defender (16k)

# 512k ROM layout:
#  0 dos2.0 (8k)
#  8 SDX 4.19 (SDX)
# 16 SDX 4.21 (SDX)
# 24 SDX 4.22 (SDX)
# 32 Basic XL (OSS)
# 34 Basic XE (OSS)
# 36 Mac 65 (OSS)
# 38 Action (OSS)
# 40 Defender (16k)
# 42 Donkey Kong (16k)
# 44 Pole Position (16k)
# 46 Popeye (16k)
# 48 Bc's Quest for Tires (16k)
# 50 Ant Eater (8k)
# 51 Asteroid (8k)
# 52 Galaxian (8k)
# 53 Pac Man (8k)
# 54 Zenji (8k)
# 55 The Learning Phone (8k)
# 56-59 <empty>

# 112k RAM layout:
#  0 SDX 4.22 (SDX)
#  8 Basic XE (OSS)
# 10 Pole Position (16k)
# 12 Pac Man (8k)
# 13 Galaxian (8k)


backup:
	tar zcf bak/freezer-b3-`date '+%y%m%d-%H%M'`.tgz \
		*.src *.inc *.cpp *.h Makefile build.bat \
		mypdos.bin oldos.rom 16kblank.rom \
		freezer/*.M65 freezer/Makefile freezer/buildjmp \
		freezer/jmptab* freezer/jsrtab* \
		freezer/ChangeLog addendum.txt mkdist disk

clean:
	make -C freezer clean
	rm -f *.COM setbnk*.rom setbank.rom 8kblank.rom 16kblank.rom \
	frz128.rom frz512.rom \
	chkrom chkrom.o crc16.o romcrc romcrc.o
