From a2f1cfdc870fc1a5ad1ac3e81be532a46aa1b15a Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 23 Oct 2020 15:56:48 +0200 Subject: [PATCH] added ppossibility to build Ultimate 64 ROM with CRT image --- Makefile | 145 +++++++++++++++++++++++------ src/,,config_generic_crt.s | 3 +- src/,,config_ultimate64_crt.s | 122 ++++++++++++++++++++++++ src/aliases/,aliases_config.s | 2 +- src/basic/assets/startup_banner.s | 6 +- src/kernal/board_crt/crt_imports.s | 8 +- tools/generate_strings.cc | 35 ++++--- 7 files changed, 273 insertions(+), 48 deletions(-) create mode 100644 src/,,config_ultimate64_crt.s diff --git a/Makefile b/Makefile index 1c006005..bbb11c14 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ SRC_ACME = $(DIR_ACME)/acme.c $(DIR_ACME)/platform.c $(DIR_ACME)/alu.c $(DIR $(DIR_ACME)/dynabuf.c $(DIR_ACME)/mnemo.c $(DIR_ACME)/input.c $(DIR_ACME)/section.c \ $(DIR_ACME)/symbol.c $(DIR_ACME)/tree.c -CRT_HDR_LIST = assets/cartridge/header-cart.bin \ +CRT_BIN_LIST = assets/cartridge/header-cart.bin \ assets/cartridge/header-seg0.bin \ assets/cartridge/header-seg1.bin \ assets/cartridge/header-seg2.bin \ @@ -96,6 +96,7 @@ DIR_GENCRT = build/target_generic_crt DIR_TST = build/target_testing DIR_M65 = build/target_mega65 DIR_U64 = build/target_ultimate64 +DIR_U64CRT = build/target_ultimate64_crt DIR_X16 = build/target_cx16 # List of config files @@ -107,6 +108,7 @@ CFG_TST = src/,,config_testing.s CFG_M65 = src/,,config_mega65.s CFG_U64 = src/,,config_ultimate64.s CFG_X16 = src/,,config_cx16.s +CFG_U64CRT = src/,,config_ultimate64_crt.s # List of files with generated strings @@ -116,6 +118,7 @@ GEN_STR_GENCRT = $(DIR_GENCRT)/,generated/,packed_strings.s GEN_STR_TST = $(DIR_TST)/,generated/,packed_strings.s GEN_STR_M65 = $(DIR_M65)/,generated/,packed_strings.s GEN_STR_U64 = $(DIR_U64)/,generated/,packed_strings.s +GEN_STR_U64CRT = $(DIR_U64CRT)/,generated/,packed_strings.s GEN_STR_X16 = $(DIR_X16)/,generated/,packed_strings.s # Dependencies - helper variables @@ -154,14 +157,17 @@ TARGET_GEN_B = build/basic_generic.rom TARGET_GENCRT_B = build/basic_generic_crt.rom TARGET_TST_B = build/basic_testing.rom TARGET_U64_B = build/basic_ultimate64.rom +TARGET_U64CRT_B = build/basic_ultimate64_crt.rom TARGET_CUS_K = build/kernal_custom.rom TARGET_GEN_K = build/kernal_generic.rom TARGET_GENCRT_K = build/kernal_generic_crt.rom TARGET_TST_K = build/kernal_testing.rom TARGET_U64_K = build/kernal_ultimate64.rom +TARGET_U64CRT_K = build/kernal_ultimate64_crt.rom TARGET_GENCRT_X = build/extrom_generic_crt.crt +TARGET_U64CRT_X = build/extrom_ultimate64_crt.crt TARGET_M65_x_ORF = build/mega65.rom TARGET_M65_x_PXL = build/mega65_pxlfont.rom @@ -172,20 +178,26 @@ TARGET_LIST_GEN = $(TARGET_GEN_B) $(TARGET_GEN_K) TARGET_LIST_GENCRT = $(TARGET_GENCRT_B) $(TARGET_GENCRT_K) $(TARGET_GENCRT_X) TARGET_LIST_TST = $(TARGET_TST_B) $(TARGET_TST_K) TARGET_LIST_U64 = $(TARGET_U64_B) $(TARGET_U64_K) +TARGET_LIST_U64CRT = $(TARGET_U64CRT_B) $(TARGET_U64CRT_K) $(TARGET_U64CRT_X) -TARGET_LIST = build/chargen_openroms.rom \ - $(TARGET_LIST_CUS) \ - $(TARGET_LIST_GEN) \ - $(TARGET_LIST_TST) \ - $(TARGET_LIST_CRT) \ - $(TARGET_M65_x_ORF) \ - $(TARGET_M65_x_PXL) \ - $(TARGET_LIST_U64) \ + +TARGET_LIST = $(TARGET_CHR_ORF) \ + $(TARGET_LIST_CUS) \ + $(TARGET_LIST_GEN) \ + $(TARGET_LIST_GENCRT) \ + $(TARGET_LIST_TST) \ + $(TARGET_M65_x_ORF) \ + $(TARGET_M65_x_PXL) \ + $(TARGET_LIST_U64) \ + $(TARGET_LIST_U64CRT) \ $(TARGET_X16_x) SEG_LIST_GENCRT = $(DIR_GENCRT)/basic.seg_1 \ $(DIR_GENCRT)/kernal.seg_1 +SEG_LIST_U64CRT = $(DIR_U64CRT)/basic.seg_1 \ + $(DIR_U64CRT)/kernal.seg_1 + SEG_LIST_M65 = $(DIR_M65)/basic.seg_0 \ $(DIR_M65)/basic.seg_1 \ $(DIR_M65)/dos.seg_1 \ @@ -197,7 +209,12 @@ SEG_LIST_X16 = $(DIR_X16)/basic.seg_0 \ $(DIR_X16)/kernal.seg_0 \ $(DIR_X16)/kernal.seg_1 -REL_TARGET_LIST = $(TARGET_LIST_GEN) $(TARGET_LIST_GENCRT) $(TARGET_M65_x_ORF) $(TARGET_M65_x_PXL) $(TARGET_LIST_U64) +REL_TARGET_LIST = $(TARGET_LIST_GEN) \ + $(TARGET_LIST_GENCRT) \ + $(TARGET_M65_x_ORF) \ + $(TARGET_M65_x_PXL) \ + $(TARGET_LIST_U64) \ + $(TARGET_LIST_U64CRT) # Misc strings @@ -310,6 +327,11 @@ $(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/BASIC_0_combined.vs: \ $(DIR_GENCRT)/OUTK_0.BIN $(DIR_GENCRT)/KERNAL_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.sym: \ $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_GENCRT) $(GEN_STR_GENCRT) +$(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/BASIC_0_combined.vs: \ + $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_U64CRT) $(CRT_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym +$(DIR_U64CRT)/OUTK_0.BIN $(DIR_U64CRT)/KERNAL_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.sym: \ + $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_U64CRT) $(GEN_STR_U64CRT) + $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/BASIC_0_combined.vs $(DIR_M65)/BASIC_0_combined.sym: \ $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_M65) $(GEN_STR_M65) $(DIR_M65)/KERNAL_0_combined.sym $(DIR_M65)/OUTK_0.BIN $(DIR_M65)/KERNAL_0_combined.vs $(DIR_M65)/KERNAL_0_combined.sym: \ @@ -325,6 +347,11 @@ $(DIR_GENCRT)/basic.seg_1 $(DIR_GENCRT)/BASIC_1_combined.vs $(DIR_GENCRT)/BASI $(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1_combined.vs $(DIR_GENCRT)/KERNAL_1_combined.sym: \ $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_GENCRT) $(GEN_STR_GENCRT) $(DIR_GENCRT)/KERNAL_0_combined.sym +$(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1_combined.vs $(DIR_U64CRT)/BASIC_1_combined.sym: \ + $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_U64CRT) $(GEN_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym $(DIR_U64CRT)/BASIC_0_combined.sym +$(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1_combined.vs $(DIR_U64CRT)/KERNAL_1_combined.sym: \ + $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_U64CRT) $(GEN_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym + $(DIR_M65)/basic.seg_1 $(DIR_M65)/BASIC_1_combined.vs $(DIR_M65)/BASIC_1_combined.sym: \ $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_M65) $(GEN_STR_M65) $(DIR_M65)/KERNAL_0_combined.sym $(DIR_M65)/BASIC_0_combined.sym $(DIR_M65)/dos.seg_1 $(DIR_M65)/DOS_1_combined.vs $(DIR_M65)/DOS_1_combined.sym: \ @@ -337,13 +364,14 @@ $(DIR_X16)/basic.seg_1 $(DIR_X16)/BASIC_1_combined.vs $(DIR_X16)/BASIC_1_combi $(DIR_X16)/kernal.seg_1 $(DIR_X16)/KERNAL_1_combined.vs $(DIR_X16)/KERNAL_1_combined.sym: \ $(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_X16) $(GEN_STR_X16) $(DIR_X16)/KERNAL_0_combined.sym -$(DIR_CUS)/OUTx_x.BIN: $(DIR_CUS)/OUTB_x.BIN $(DIR_CUS)/OUTK_x.BIN -$(DIR_GEN)/OUTx_x.BIN: $(DIR_GEN)/OUTB_x.BIN $(DIR_GEN)/OUTK_x.BIN +$(DIR_CUS)/OUTx_x.BIN: $(DIR_CUS)/OUTB_x.BIN $(DIR_CUS)/OUTK_x.BIN +$(DIR_GEN)/OUTx_x.BIN: $(DIR_GEN)/OUTB_x.BIN $(DIR_GEN)/OUTK_x.BIN $(DIR_GENCRT)/OUTx_0.BIN: $(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/OUTK_0.BIN -$(DIR_TST)/OUTx_x.BIN: $(DIR_TST)/OUTB_x.BIN $(DIR_TST)/OUTK_x.BIN -$(DIR_M65)/OUTx_0.BIN: $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN -$(DIR_U64)/OUTx_x.BIN: $(DIR_U64)/OUTB_x.BIN $(DIR_U64)/OUTK_x.BIN -$(DIR_X16)/OUTx_0.BIN: $(DIR_X16)/OUTB_0.BIN $(DIR_X16)/OUTK_0.BIN +$(DIR_TST)/OUTx_x.BIN: $(DIR_TST)/OUTB_x.BIN $(DIR_TST)/OUTK_x.BIN +$(DIR_M65)/OUTx_0.BIN: $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN +$(DIR_U64)/OUTx_x.BIN: $(DIR_U64)/OUTB_x.BIN $(DIR_U64)/OUTK_x.BIN +$(DIR_U64CRT)/OUTx_0.BIN: $(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/OUTK_0.BIN +$(DIR_X16)/OUTx_0.BIN: $(DIR_X16)/OUTB_0.BIN $(DIR_X16)/OUTK_0.BIN $(TARGET_CUS_B): $(DIR_CUS)/OUTx_x.BIN $(TARGET_GEN_B): $(DIR_GEN)/OUTx_x.BIN @@ -360,6 +388,7 @@ build/symbols_generic.vs: $(DIR_GEN)/BASIC_combined.vs $(DIR_GEN)/ build/symbols_generic_crt.vs: $(DIR_GENCRT)/BASIC_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.vs build/symbols_testing.vs: $(DIR_TST)/BASIC_combined.vs $(DIR_TST)/KERNAL_combined.vs build/symbols_ultimate64.vs: $(DIR_U64)/BASIC_combined.vs $(DIR_U64)/KERNAL_combined.vs +build/symbols_ultimate64_crt.vs: $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.vs # Rules - BASIC and KERNAL intermediate files @@ -387,6 +416,10 @@ $(GEN_STR_U64): $(TOOL_GENERATE_STRINGS) $(CFG_U64) @mkdir -p $(DIR_U64)/,generated $(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_U64) +$(GEN_STR_U64CRT): $(TOOL_GENERATE_STRINGS) $(CFG_U64CRT) + @mkdir -p $(DIR_U64CRT)/,generated + $(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_U64CRT) + $(GEN_STR_X16): $(TOOL_GENERATE_STRINGS) $(CFG_X16) @mkdir -p $(DIR_X16)/,generated $(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_X16) @@ -395,13 +428,14 @@ build/,generated/,float_constants.s: $(TOOL_GENERATE_CONSTANTS) @mkdir -p build/,generated $(TOOL_GENERATE_CONSTANTS) -o build/,generated/,float_constants.s -GEN_STR_custom = $(GEN_STR_CUS) -GEN_STR_generic = $(GEN_STR_GEN) -GEN_STR_generic_crt = $(GEN_STR_GENCRT) -GEN_STR_testing = $(GEN_STR_TST) -GEN_STR_mega65 = $(GEN_STR_M65) -GEN_STR_ultimate64 = $(GEN_STR_U64) -GEN_STR_cx16 = $(GEN_STR_X16) +GEN_STR_custom = $(GEN_STR_CUS) +GEN_STR_generic = $(GEN_STR_GEN) +GEN_STR_generic_crt = $(GEN_STR_GENCRT) +GEN_STR_testing = $(GEN_STR_TST) +GEN_STR_mega65 = $(GEN_STR_M65) +GEN_STR_ultimate64 = $(GEN_STR_U64) +GEN_STR_ultimate64_crt = $(GEN_STR_U64CRT) +GEN_STR_cx16 = $(GEN_STR_X16) .PRECIOUS: build/target_%/OUTB_x.BIN build/target_%/BASIC_combined.vs build/target_%/OUTB_x.BIN build/target_%/BASIC_combined.vs: @@ -437,6 +471,26 @@ $(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1_combined.vs $(DIR_GENCRT)/KERN @rm -f $@* $(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1* @$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_1 -i KERNAL_1-generic-crt -o kernal.seg_1 -d $(DIR_GENCRT) -l 8000 -h 9fff $(CFG_GENCRT) $(GEN_STR_GENCRT) $(SRCDIR_KERNAL) $(GEN_KERNAL) +$(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/BASIC_0_combined.sym: + @mkdir -p $(DIR_U64CRT) + @rm -f $@* $(DIR_U64CRT)/BASIC_0* + @$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_0 -i BASIC_0-ultimate64-crt -o OUTB_0.BIN -d $(DIR_U64CRT) -l a000 -h e4d2 $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_BASIC) $(GEN_BASIC) + +$(DIR_U64CRT)/OUTK_0.BIN $(DIR_U64CRT)/KERNAL_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.sym: + @mkdir -p $(DIR_U64CRT) + @rm -f $@* $(DIR_U64CRT)/KERNAL_0* + @$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_0 -i KERNAL_0-ultimate64-crt -o OUTK_0.BIN -d $(DIR_U64CRT) -l e4d3 -h ffff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_KERNAL) $(GEN_KERNAL) + +$(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1_combined.vs $(DIR_U64CRT)/BASIC_1_combined.sym: + @mkdir -p $(DIR_U64CRT) + @rm -f $@* $(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1* + @$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_1 -i BASIC_1-ultimate64-crt -o basic.seg_1 -d $(DIR_U64CRT) -l 8000 -h 9fff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_BASIC) $(GEN_BASIC) + +$(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1_combined.vs $(DIR_U64CRT)/KERNAL_1_combined.sym: + @mkdir -p $(DIR_U64CRT) + @rm -f $@* $(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1* + @$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_1 -i KERNAL_1-ultimate64-crt -o kernal.seg_1 -d $(DIR_U64CRT) -l 8000 -h 9fff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_KERNAL) $(GEN_KERNAL) + # Rules - BASIC and KERNAL intermediate files, for MEGA65 $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/BASIC_0_combined.vs $(DIR_M65)/BASIC_0_combined.sym: @@ -513,6 +567,15 @@ $(DIR_GENCRT)/kernal.seg_0: $(DIR_GENCRT)/OUTx_0.BIN $(DIR_GENCRT)/basic.seg_0: $(DIR_GENCRT)/OUTx_0.BIN @dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none +$(DIR_U64CRT)/OUTx_0.BIN: + @cat $(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/OUTK_0.BIN > $@ + +$(DIR_U64CRT)/kernal.seg_0: $(DIR_U64CRT)/OUTx_0.BIN + @dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none + +$(DIR_U64CRT)/basic.seg_0: $(DIR_U64CRT)/OUTx_0.BIN + @dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none + $(DIR_M65)/OUTx_0.BIN: @cat $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN > $@ @@ -537,9 +600,18 @@ $(TARGET_GENCRT_K): $(DIR_GENCRT)/OUTx_0.BIN $(TARGET_GENCRT_B): $(DIR_GENCRT)/OUTx_0.BIN @dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none +$(TARGET_U64CRT_K): $(DIR_U64CRT)/OUTx_0.BIN + @dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none + +$(TARGET_U64CRT_B): $(DIR_U64CRT)/OUTx_0.BIN + @dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none + build/symbols_generic_crt.vs: @sort $(DIR_GENCRT)/BASIC_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.vs | uniq | grep -v "__" > $@ +build/symbols_ultimate64_crt.vs: + @sort $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.vs | uniq | grep -v "__" > $@ + build/kernal_hybrid.rom: kernal $(DIR_GEN)/OUTK_x.BIN @echo @echo $(HYBRID_WARNING) @@ -564,18 +636,18 @@ build/kernal_hybrid_u64.rom: kernal $(DIR_U64)/OUTK_x.BIN build/symbols_hybrid_u64.vs: $(DIR_U64)/KERNAL_combined.vs @sort $(DIR_U64)/KERNAL_combined.vs | uniq | grep -v "__" > $@ -# Rules - external CRT image +# Rules - external CRT images build/padding_8_KB: @mkdir -p build @dd if=/dev/zero bs=8192 count=1 of=$@ status=none -$(TARGET_GENCRT_X): $(SEG_LIST_GENCRT) $(CRT_HDR_LIST) build/padding_8_KB +$(TARGET_GENCRT_X): $(SEG_LIST_GENCRT) $(CRT_BIN_LIST) build/padding_8_KB @echo @echo @echo @echo //------------------------------------------------------------------------------------------- - @echo // Making external CRT ROM image + @echo // Making external CRT ROM image - generic @echo //------------------------------------------------------------------------------------------- @cat assets/cartridge/header-cart.bin > $@ @cat assets/cartridge/header-seg0.bin >> $@ @@ -588,6 +660,24 @@ $(TARGET_GENCRT_X): $(SEG_LIST_GENCRT) $(CRT_HDR_LIST) build/padding_8_KB @cat build/padding_8_KB >> $@ @echo +$(TARGET_U64CRT_X): $(SEG_LIST_U64CRT) $(CRT_BIN_LIST) build/padding_8_KB + @echo + @echo + @echo + @echo //------------------------------------------------------------------------------------------- + @echo // Making external CRT ROM image - Ultimate 64 + @echo //------------------------------------------------------------------------------------------- + @cat assets/cartridge/header-cart.bin > $@ + @cat assets/cartridge/header-seg0.bin >> $@ + @cat $(DIR_U64CRT)/basic.seg_1 >> $@ + @cat assets/cartridge/header-seg1.bin >> $@ + @cat build/padding_8_KB >> $@ + @cat assets/cartridge/header-seg2.bin >> $@ + @cat $(DIR_U64CRT)/kernal.seg_1 >> $@ + @cat assets/cartridge/header-seg3.bin >> $@ + @cat build/padding_8_KB >> $@ + @echo + # Rules - MEGA65 platform specific build/padding_64_KB: @@ -668,6 +758,9 @@ test_testing: $(TARGET_LIST_TST) $(TARGET_CHR_PXL) build/symbols_testing.vs test_ultimate64: $(TARGET_LIST_U64) $(TARGET_CHR_PXL) build/symbols_ultimate64.vs x64 -kernal $(TARGET_U64_K) -basic $(TARGET_U64_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_ultimate64.vs -1 $(TESTTAPE) -8 $(TESTDISK) +test_ultimate64_crt: $(TARGET_LIST_U64CRT) $(TARGET_CHR_PXL) build/symbols_ultimate64_crt.vs + x64 -kernal $(TARGET_U64CRT_K) -basic $(TARGET_U64CRT_B) -chargen $(TARGET_CHR_PXL) -cartcrt $(TARGET_U64CRT_X) -moncommands build/symbols_ultimate64_crt.vs -1 $(TESTTAPE) -8 $(TESTDISK) + test_mega65: $(TARGET_M65_x_ORF) $(TARGET_M65_x_PXL) ../xemu/build/bin/xmega65.native -dmarev 2 -besure -fontrefresh -forcerom -loadrom $(TARGET_M65_x_PXL) diff --git a/src/,,config_generic_crt.s b/src/,,config_generic_crt.s index 75a312b4..1e9a6970 100644 --- a/src/,,config_generic_crt.s +++ b/src/,,config_generic_crt.s @@ -1,5 +1,5 @@ -;; #CONFIG# ID $02 ; should be 1 byte, different for each config file! +;; #CONFIG# ID $11 ; should be 1 byte, different for each config file! ; ; Please read CONFIG.md before modifying this file! @@ -15,6 +15,7 @@ ; --- Hardware platform and brand ;; #CONFIG# PLATFORM_COMMODORE_64 YES +;; #CONFIG# ROM_CRT YES ;; #CONFIG# BRAND_GENERIC_CRT YES diff --git a/src/,,config_ultimate64_crt.s b/src/,,config_ultimate64_crt.s new file mode 100644 index 00000000..290d2756 --- /dev/null +++ b/src/,,config_ultimate64_crt.s @@ -0,0 +1,122 @@ + +;; #CONFIG# ID $13 ; should be 1 byte, different for each config file! + +; +; Please read CONFIG.md before modifying this file! +; + +; Idea: +; - sane defaults for the Ultimate 64 FPGA computer +; - do not enable features which are a significant compatibility risk + + + +; --- Hardware platform and brand + +;; #CONFIG# PLATFORM_COMMODORE_64 YES +;; #CONFIG# MB_U64 YES +;; #CONFIG# ROM_CRT YES + + +; --- Memory model + +;; #CONFIG# MEMORY_MODEL_38K NO +;; #CONFIG# MEMORY_MODEL_46K NO +;; #CONFIG# MEMORY_MODEL_50K YES +;; #CONFIG# MEMORY_MODEL_60K NO + + +; --- IEC bus configuration + +;; #CONFIG# IEC YES +;; #CONFIG# IEC_DOLPHINDOS YES +;; #CONFIG# IEC_DOLPHINDOS_FAST YES +;; #CONFIG# IEC_JIFFYDOS YES +;; #CONFIG# IEC_JIFFYDOS_BLANK YES + + +; --- Tape deck configuration + +;; #CONFIG# TAPE_NORMAL YES +;; #CONFIG# TAPE_TURBO YES +;; #CONFIG# TAPE_AUTODETECT YES +;; #CONFIG# TAPE_NO_KEY_SENSE NO +;; #CONFIG# TAPE_NO_MOTOR_CONTROL NO + + +; --- Sound support + +;; #CONFIG# SID_2ND_ADDRESS NO +;; #CONFIG# SID_3RD_ADDRESS NO +;; #CONFIG# SID_D4XX YES +;; #CONFIG# SID_D5XX YES +;; #CONFIG# SID_D6XX NO +;; #CONFIG# SID_D7XX NO + + +; --- Keyboard settings + +;; #CONFIG# LEGACY_SCNKEY NO +;; #CONFIG# KEYBOARD_C128 NO +;; #CONFIG# KEYBOARD_C128_CAPS_LOCK NO +;; #CONFIG# KEY_REPEAT_DEFAULT NO +;; #CONFIG# KEY_REPEAT_ALWAYS NO +;; #CONFIG# KEY_FAST_SCAN YES +;; #CONFIG# JOY1_CURSOR NO +;; #CONFIG# JOY2_CURSOR NO + +;; #CONFIG# PROGRAMMABLE_KEYS YES + +;; #CONFIG# KEYCMD_RUN "\5FL" + +;; #CONFIG# KEYCMD_F1 "@8$" +;; #CONFIG# KEYCMD_F2 "LOAD" +;; #CONFIG# KEYCMD_F3 "@9$" +;; #CONFIG# KEYCMD_F4 "RUN:" +;; #CONFIG# KEYCMD_F5 "@10$" +;; #CONFIG# KEYCMD_F6 NO +;; #CONFIG# KEYCMD_F7 "@11$" +;; #CONFIG# KEYCMD_F8 NO + +;; #CONFIG# KEYCMD_HELP "LIST" + +;; #CONFIG# KEYCMD_F9 NO +;; #CONFIG# KEYCMD_F10 NO +;; #CONFIG# KEYCMD_F11 NO +;; #CONFIG# KEYCMD_F12 NO +;; #CONFIG# KEYCMD_F13 NO +;; #CONFIG# KEYCMD_F14 NO + + +; --- Screen editor + +;; #CONFIG# EDIT_STOPQUOTE YES +;; #CONFIG# EDIT_TABULATORS NO + + +; --- Software features + +;; #CONFIG# PANIC_SCREEN YES +;; #CONFIG# DOS_WEDGE YES +;; #CONFIG# TAPE_WEDGE YES +;; #CONFIG# TAPE_HEAD_ALIGN YES +;; #CONFIG# BCD_SAFE_INTERRUPTS YES + + +; --- Eye candy + +;; #CONFIG# COLORS_BRAND YES +;; #CONFIG# BANNER_SIMPLE NO +;; #CONFIG# BANNER_FANCY YES +;; #CONFIG# SHOW_FEATURES YES + + +; --- Debug options + +;; #CONFIG# DBG_STUBS_BRK NO +;; #CONFIG# DBG_PRINTF NO + + +; --- Other + +;; #CONFIG# COMPRESSION_LVL_2 NO diff --git a/src/aliases/,aliases_config.s b/src/aliases/,aliases_config.s index 4eb53819..54444095 100644 --- a/src/aliases/,aliases_config.s +++ b/src/aliases/,aliases_config.s @@ -24,7 +24,7 @@ !if (counter > 1) { !error "Please select at most one CONFIG_MB_* option" } !ifdef ROM_LAYOUT_M65 { !ifndef CONFIG_MB_M65 { !error "ROM layout requires CONFIG_MB_M65 option" } } -!ifdef ROM_LAYOUT_U16 { !ifndef CONFIG_MB_U64 { !error "ROM layout requires CONFIG_MB_U64 option" } } +!ifdef ROM_LAYOUT_U64 { !ifndef CONFIG_MB_U64 { !error "ROM layout requires CONFIG_MB_U64 option" } } !ifdef CONFIG_MB_M65 { !ifndef ROM_LAYOUT_M65 { !error "CONFIG_MB_M65 can only be used with appropriate ROM layout" } } ; !ifdef CONFIG_MB_U64 { !ifndef ROM_LAYOUT_U64 { !error "CONFIG_MB_U64 can only be used with appropriate ROM layout" } } diff --git a/src/basic/assets/startup_banner.s b/src/basic/assets/startup_banner.s index bd0e3b9b..2340c4c4 100644 --- a/src/basic/assets/startup_banner.s +++ b/src/basic/assets/startup_banner.s @@ -20,7 +20,11 @@ } else ifdef CONFIG_BRAND_TESTING { !pet "open roms testing build" } else ifdef CONFIG_MB_U64 { - !pet "open roms for ultimate 64" + !ifdef CONFIG_ROM_CRT { + !pet "open roms crt for ultimate 64" + } else { + !pet "open roms for ultimate 64" + } } } diff --git a/src/kernal/board_crt/crt_imports.s b/src/kernal/board_crt/crt_imports.s index dd21e1cd..86a5c251 100644 --- a/src/kernal/board_crt/crt_imports.s +++ b/src/kernal/board_crt/crt_imports.s @@ -9,7 +9,6 @@ ;; #ALIAS# STOP = KERNAL_0.STOP ;; #ALIAS# IOINIT = KERNAL_0.proxy_K1_IOINIT -;; #ALIAS# xxx = KERNAL_0.xxx ;; #ALIAS# map_NORMAL = KERNAL_0.map_NORMAL ;; #ALIAS# map_KERNAL_1 = KERNAL_0.map_KERNAL_1 @@ -47,3 +46,10 @@ ;; #ALIAS# CLALL = KERNAL_0.proxy_K1_CLALL ;; #ALIAS# nmi_lock = KERNAL_0.nmi_lock + +; +; Ultimate 64 specific entries +; + +;; #ALIAS# U64_SLOW = KERNAL_0.U64_SLOW +;; #ALIAS# U64_FAST = KERNAL_0.U64_FAST diff --git a/tools/generate_strings.cc b/tools/generate_strings.cc index 81f01b41..074393b4 100644 --- a/tools/generate_strings.cc +++ b/tools/generate_strings.cc @@ -1685,7 +1685,6 @@ void DataSet::prepareOutput() // Convert our encoded strings to a KickAssembler source std::ostringstream stream; - stream << std::endl << "!ifdef ROM_LAYOUT_" << layoutName() << " {"<< std::endl; // Export 1-nibble and 3-nibble encoding data @@ -1724,7 +1723,7 @@ void DataSet::prepareOutput() // Finalize the file stream - stream << std::endl << "} ; ROM_LAYOUT_" << layoutName() << std::endl; + stream << std::endl; outFileContent = stream.str(); } @@ -1856,22 +1855,7 @@ void writeStrings() outputString = dataSetM65.getOutput(); } - else if (GLOBAL_ConfigOptions["PLATFORM_COMMODORE_64"] && GLOBAL_ConfigOptions["MB_U64"]) - { - DataSetU64 dataSetU64; - - // Add input data to computation objects - - dataSetU64.addStrings(GLOBAL_Keywords_V2); - dataSetU64.addStrings(GLOBAL_Keywords_01); - dataSetU64.addStrings(GLOBAL_Errors); - dataSetU64.addStrings(GLOBAL_MiscStrings); - - // Retrieve the results - - outputString = dataSetU64.getOutput(); - } - else if (GLOBAL_ConfigOptions["PLATFORM_COMMODORE_64"] && GLOBAL_ConfigOptions["BRAND_GENERIC_CRT"]) + else if (GLOBAL_ConfigOptions["PLATFORM_COMMODORE_64"] && GLOBAL_ConfigOptions["ROM_CRT"]) { DataSetCRT dataSetCRT; @@ -1887,6 +1871,21 @@ void writeStrings() outputString = dataSetCRT.getOutput(); } + else if (GLOBAL_ConfigOptions["PLATFORM_COMMODORE_64"] && GLOBAL_ConfigOptions["MB_U64"]) + { + DataSetU64 dataSetU64; + + // Add input data to computation objects + + dataSetU64.addStrings(GLOBAL_Keywords_V2); + dataSetU64.addStrings(GLOBAL_Keywords_01); + dataSetU64.addStrings(GLOBAL_Errors); + dataSetU64.addStrings(GLOBAL_MiscStrings); + + // Retrieve the results + + outputString = dataSetU64.getOutput(); + } else if (GLOBAL_ConfigOptions["PLATFORM_COMMODORE_64"]) { DataSetSTD dataSetSTD;