254 lines
5.1 KiB
Makefile
Executable file
254 lines
5.1 KiB
Makefile
Executable file
|
|
ifeq ($(PLATFORM),)
|
|
_PLATFORM_ = c64
|
|
else ifeq ($(PLATFORM),c116)
|
|
_PLATFORM_ = c16
|
|
else ifeq ($(PLATFORM),plus4)
|
|
_PLATFORM_ = c16
|
|
else
|
|
_PLATFORM_ = $(PLATFORM)
|
|
endif
|
|
|
|
ifeq ($(NO_VICE),)
|
|
NO_VICE = 0
|
|
endif
|
|
|
|
|
|
ifneq ($(_PLATFORM_),c64)
|
|
ifneq ($(_PLATFORM_),c128)
|
|
ifneq ($(_PLATFORM_),c16)
|
|
$(error invalid platform $(_PLATFORM_) specified)
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
|
|
ARCH = $(shell uname | tr "[a-z]" "[A-Z]" | tr -c -d "[A-Z]")
|
|
|
|
ifneq ($(findstring CYGWINNT,$(ARCH)),)
|
|
ifeq (CYGWINNT,$(ARCH))
|
|
ARCH = WIN32
|
|
else
|
|
ARCH = WIN64
|
|
endif
|
|
endif
|
|
ifneq ($(findstring DARWIN,$(ARCH)),)
|
|
ARCH = MACOSX
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifneq ($(NO_VICE),0)
|
|
ifneq ($(findstring WIN,$(ARCH)),)
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 1
|
|
else
|
|
USE_PLUS4EMU = 1
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
else
|
|
USE_PLUS4EMU = 0
|
|
USE_YAPE = 0
|
|
endif
|
|
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
ifeq ($(ARCH),MACOSX)
|
|
# MacOSX, these programs must be installed as applications
|
|
VICE = xplus4
|
|
PLUS4EMU = open /Applications/plus4emu.app --args
|
|
else
|
|
VICE = xplus4
|
|
PLUS4EMU = plus4emu
|
|
ifeq ($(ARCH),WIN64)
|
|
YAPE = YapeWin64
|
|
else
|
|
YAPE = Yape
|
|
endif
|
|
endif
|
|
else
|
|
ifeq ($(_PLATFORM_),c128)
|
|
VICE = x128
|
|
else
|
|
VICE = x64
|
|
endif
|
|
endif
|
|
|
|
|
|
ifneq ($(USE_PLUS4EMU),0)
|
|
EMU = $(PLUS4EMU) -disk
|
|
else
|
|
EMU = $(VICE) -drive8type 1541 -drive9type 0 -autostart
|
|
endif
|
|
EMU70 = $(VICE) -drive8type 1570 -drive9type 0 -autostart
|
|
|
|
|
|
ECHO = echo
|
|
PRINTF = printf
|
|
|
|
AS = ca65
|
|
LD = ld65
|
|
PU = ../../tools/pucrunch/pucrunch
|
|
PU_SOURCE = ../../tools/pucrunch
|
|
CC1541 = ../../tools/cc1541
|
|
|
|
MKDIR = mkdir -p
|
|
RM = rm -f
|
|
ifeq ($(ARCH),MACOSX)
|
|
RMDIR = rmdir # XXX TODO xargs to remove .DS_Store
|
|
else
|
|
RMDIR = rmdir
|
|
endif
|
|
CAT = cat
|
|
|
|
|
|
.PHONY: default loader assemble link compress diskimage run clean distclean wipe
|
|
.PHONY: tellarch
|
|
|
|
|
|
BUILDDIR = ../../build
|
|
INTERMDIR = ../../build/intermediate
|
|
LOADER_SRC = ../../src
|
|
LOADER = $(BUILDDIR)/loader-$(_PLATFORM_).lib
|
|
|
|
RESOURCESDIR = ../resources
|
|
PIC1 = $(INTERMDIR)/pic1.bin
|
|
PIC2 = $(INTERMDIR)/pic2.bin
|
|
|
|
ifeq ($(_PLATFORM_),c16)
|
|
STARTTRACK = 25
|
|
STARTSECTOR = 13
|
|
INTERLEAVE = 3
|
|
SKEW = 13
|
|
DEMO = $(RESOURCESDIR)/threeve.prg
|
|
DEMONAME = "threeve"
|
|
else ifeq ($(_PLATFORM_),c128)
|
|
STARTTRACK = 19
|
|
STARTSECTOR = 0
|
|
INTERLEAVE = 3
|
|
SKEW = 13
|
|
DEMO = $(RESOURCESDIR)/doom_c128.prg
|
|
DEMONAME = "doom c128"
|
|
else
|
|
STARTTRACK = 18
|
|
STARTSECTOR = 16
|
|
INTERLEAVE = 3
|
|
SKEW = 1
|
|
DEMO = $(RESOURCESDIR)/oxyron_oneder.prg
|
|
DEMONAME = "oneder /oxy"
|
|
endif
|
|
|
|
NAME = standalone
|
|
|
|
SOURCE = $(NAME).s
|
|
LOADERCFG = loaderconfig.inc
|
|
ASSEMBLE = $(INTERMDIR)/$(NAME)-$(_PLATFORM_).o
|
|
LINK = $(INTERMDIR)/$(NAME)-uncompressed-$(_PLATFORM_).prg
|
|
COMPRESS = $(INTERMDIR)/$(NAME)-$(_PLATFORM_).prg
|
|
DISKIMAGE = $(BUILDDIR)/$(NAME)-$(_PLATFORM_).d64
|
|
|
|
AS_FLAGS = -I ../../../shared -I ../../include -I $(LOADER) -D EXTCONFIGPATH
|
|
|
|
PU_FLAGS = -d -l 0x1c01 -x 0x1c01 -i 1
|
|
|
|
|
|
default: diskimage
|
|
|
|
|
|
tellarch:
|
|
@$(ECHO) $(ARCH)
|
|
|
|
|
|
loader: $(LOADER)
|
|
|
|
$(LOADER): $(LOADERCFG)
|
|
make -C $(LOADER_SRC) EXTCONFIGPATH=../samples/$(NAME) lib
|
|
|
|
|
|
assemble: $(ASSEMBLE)
|
|
|
|
$(ASSEMBLE): $(SOURCE) $(LOADERCFG)
|
|
$(MKDIR) $(BUILDDIR)
|
|
$(MKDIR) $(INTERMDIR)
|
|
ifeq ($(_PLATFORM_),c64)
|
|
$(AS) $(AS_FLAGS) -t c64 -Wa -D PLATFORM=64 -o $@ $<
|
|
else ifeq ($(_PLATFORM_),c128)
|
|
$(AS) $(AS_FLAGS) -t c128 -Wa -DPLATFORM=128 -o $@ $<
|
|
else
|
|
$(AS) $(AS_FLAGS) -t c16 -Wa -D PLATFORM=16 -o $@ $<
|
|
endif
|
|
|
|
|
|
link: $(LINK)
|
|
|
|
$(LINK): Linkfile-$(_PLATFORM_) $(ASSEMBLE) $(LOADER)
|
|
$(LD) -o $@ -C $^
|
|
|
|
|
|
compress: $(COMPRESS)
|
|
|
|
$(COMPRESS): $(LINK) $(PU)
|
|
ifeq ($(_PLATFORM_),c64)
|
|
$(PU) $(PU_FLAGS) -c64 -g 0x37 $< $@
|
|
else ifeq ($(_PLATFORM_),c128)
|
|
$(PU) $(PU_FLAGS) -c128 $< $@
|
|
else
|
|
$(PU) $(PU_FLAGS) -c16 $< $@
|
|
endif
|
|
|
|
|
|
diskimage: $(DISKIMAGE)
|
|
|
|
$(DISKIMAGE): $(COMPRESS) $(DEMO) $(PIC1) $(PIC2) $(CC1541)/cc1541
|
|
$(CC1541)/cc1541 -v -n "normal is boring" -i plush -S $(INTERLEAVE) -t \
|
|
\
|
|
-f "standalone" -s 8 -w $(COMPRESS) \
|
|
\
|
|
-f $(DEMONAME) -r $(STARTTRACK) -b $(STARTSECTOR) -F -$(SKEW) -w $(DEMO) \
|
|
-f pic1 -r 18 -E -w $(PIC1) \
|
|
-f pic2 -r 18 -E -w $(PIC2) \
|
|
\
|
|
$@
|
|
|
|
ifneq ($(USE_YAPE),0)
|
|
run: $(DISKIMAGE)
|
|
$(YAPE) "..\..\build\$(NAME)-$(_PLATFORM_).d64"
|
|
else
|
|
run: $(DISKIMAGE)
|
|
ifneq ($(USE_PLUS4EMU),0)
|
|
$(EMU) $(realpath $^)
|
|
else
|
|
$(EMU) $(realpath $^):standalone
|
|
endif
|
|
run70: $(DISKIMAGE)
|
|
$(EMU70) $(realpath $^):standalone
|
|
endif
|
|
|
|
|
|
$(INTERMDIR)/%.bin: $(RESOURCESDIR)/%.bin
|
|
$(PRINTF) '\000\140' | $(CAT) - $? > $@ # octal 140 = hex 60
|
|
|
|
$(CC1541)/cc1541: $(CC1541)/cc1541.c
|
|
$(MAKE) -C $(CC1541) cc1541
|
|
|
|
clean:
|
|
-$(RM) $(ASSEMBLE) $(LINK) $(COMPRESS) $(DISKIMAGE)
|
|
-$(RM) -rf $(INTERMDIR)
|
|
-$(RM) $(BUILDDIR)/loader-c64.lib
|
|
-$(RM) $(BUILDDIR)/loader-c128.lib
|
|
-$(RM) $(BUILDDIR)/loader-c16.lib
|
|
-$(RMDIR) $(BUILDDIR)
|
|
|
|
distclean:
|
|
-$(MAKE) -C $(LOADER_SRC) clean
|
|
$(MAKE) -C $(CC1541) clean
|
|
|
|
wipe: distclean clean
|
|
|
|
$(PU):
|
|
$(MAKE) -C $(PU_SOURCE)
|