all: imgdisk

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-rom.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: 16kblank.rom setbank.rom frzrom
	cat 16kblank.rom \
		16kblank.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

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

tstrom: FLASH.COM PATCH.COM setbank.rom 16kblank.rom 8kblank.rom frz128.rom frz512.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 \
		roms/learnphone.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-`date '+%y%m%d-%H%M'`.tgz \
		*.src *.inc *.cpp *.h Makefile \
		mypdos-rom.bin oldos.rom 16kblank.rom \
		freezer/*.M65 freezer/Makefile freezer/buildjmp \
		freezer/jmptab freezer/jsrtab freezer/build.bat \
		freezer/ChangeLog 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
