small build system and config files reorganization

This commit is contained in:
FeralChild64 committed 2019-12-20 17:29:06 +01:00
1 parent 8f30156ec5
commit 9392728750
20 files changed
+224 -41

No files matched your search

+6
View File
@@ -3,9 +3,11 @@
It's not possible to provide ROM builds that suit everyone needs - therefore configuration files were introduced, few predefined configurations are provided with sane defaults:
* [`c64/,,config_custom.s`](c64/,,config_custom.s)
* [`c64/,,config_generic.s`](c64/,,config_generic.s)
* [`c64/,,config_mega65.s`](c64/,,config_mega65.s)
* [`c64/,,config_ultimate64.s`](c64/,,config_ultimate64.s)
* [`c64/,,config_testing.s`](c64/,,config_testing.s)
Just edit them and recompile the project. To enable particular option - uncomment it by removing leading `//` from before `#define` directive (as you probably guessed, commenting out disables it). Some options are followed by constants - you can change them too to further fine-tune the build.
@@ -27,6 +29,10 @@ Since Open ROMs is highly modular, it should be possible to add other platforms
Select if the ROM is going to be used exclusively on the specific motherboard. It prevents from enabling options not having sense, skips initialization of C128-only registers, etc.
### `CONFIG_BRAND_CUSTOM`
Intended for custom builds, which are not to be redistributed. Allows to configure branding with `CONFIG_CUSTOM_BRAND` varaible
### `CONFIG_BRAND_GENERIC`
If you don't know which variant to choose - select this one.
+31 -15
View File
@@ -55,13 +55,14 @@ TOOLS_LIST = $(pathsubst src/tools/%,build/tools/%,$(basename $(SRC_TOOLS)))
# List of targets
STD_TARGET_LIST = build/kernal_generic.rom build/basic_generic.rom \
STD_TARGET_LIST = build/kernal_custom.rom build/basic_custom.rom \
build/kernal_generic.rom build/basic_generic.rom \
build/kernal_testing.rom build/basic_testing.rom \
build/kernal_mega65.rom build/basic_mega65.rom \
build/kernal_ultimate64.rom build/basic_ultimate64.rom \
build/chargen.rom
EXT_TARGET_LIST = build/newc65.rom
EXT_TARGET_LIST = build/mega65.rom
REL_TARGET_LIST = $(pathsubst build/%,bin/%, $(STD_TARGET_LIST))
@@ -85,7 +86,7 @@ clean:
updatebin:
$(MAKE) -j64 --output-sync=target $(STD_TARGET_LIST) $(EXT_TARGET_LIST) $(TOOL_RELEASE)
$(TOOL_RELEASE) -i ./build -o ./bin basic_generic.rom kernal_generic.rom basic_testing.rom kernal_testing.rom basic_mega65.rom kernal_mega65.rom basic_ultimate64.rom kernal_ultimate64.rom newc65.rom
$(TOOL_RELEASE) -i ./build -o ./bin basic_generic.rom kernal_generic.rom basic_testing.rom kernal_testing.rom basic_ultimate64.rom kernal_ultimate64.rom mega65.rom
cp build/chargen.rom bin/chargen.rom
# Rules - tools
@@ -113,6 +114,10 @@ build/chargen.rom: $(TOOL_PNGPREPARE) assets/8x8font.png
# Dependencies - BASIC and KERNAL
build/target_custom/OUTB.BIN build/target_custom/BASIC_combined.vs: \
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(GEN_BASIC) $(SRCDIR_BASIC) \
c64/,,config_custom.s build/target_custom/KERNAL_combined.sym \
$(foreach dir,$(SRCDIR_BASIC),$(wildcard $(dir)/*.s))
build/target_generic/OUTB.BIN build/target_generic/BASIC_combined.vs: \
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(GEN_BASIC) $(SRCDIR_BASIC) \
c64/,,config_generic.s build/target_generic/KERNAL_combined.sym \
@@ -130,6 +135,10 @@ build/target_ultimate64/OUTB.BIN build/target_ultimate64/BASIC_combined.vs: \
c64/,,config_ultimate64.s build/target_ultimate64/KERNAL_combined.sym \
$(foreach dir,$(SRCDIR_BASIC),$(wildcard $(dir)/*.s))
build/target_custom/OUTK.BIN build/target_custom/KERNAL_combined.vs build/target_custom/KERNAL_combined.sym: \
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(GEN_KERNAL) $(SRCDIR_KERNAL) \
c64/,,config_custom.s \
$(foreach dir,$(SRCDIR_KERNAL),$(wildcard $(dir)/*.s))
build/target_generic/OUTK.BIN build/target_generic/KERNAL_combined.vs build/target_generic/KERNAL_combined.sym: \
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(GEN_KERNAL) $(SRCDIR_KERNAL) \
c64/,,config_generic.s \
@@ -147,21 +156,25 @@ build/target_ultimate64/OUTK.BIN build/target_ultimate64/KERNAL_combined.vs bu
c64/,,config_ultimate64.s \
$(foreach dir,$(SRCDIR_KERNAL),$(wildcard $(dir)/*.s))
build/target_custom/newrom: build/target_custom/OUTB.BIN build/target_custom/OUTK.BIN
build/target_generic/newrom: build/target_generic/OUTB.BIN build/target_generic/OUTK.BIN
build/target_testing/newrom: build/target_testing/OUTB.BIN build/target_testing/OUTK.BIN
build/target_mega65/newrom: build/target_mega65/OUTB.BIN build/target_mega65/OUTK.BIN
build/target_ultimate64/newrom: build/target_ultimate64/OUTB.BIN build/target_ultimate64/OUTK.BIN
build/kernal_custom.rom: build/target_custom/newrom
build/kernal_generic.rom: build/target_generic/newrom
build/kernal_testing.rom: build/target_testing/newrom
build/kernal_mega65.rom: build/target_mega65/newrom
build/kernal_ultimate64.rom: build/target_ultimate64/newrom
build/basic_custom.rom: build/target_custom/newrom
build/basic_generic.rom: build/target_generic/newrom
build/basic_testing.rom: build/target_testing/newrom
build/basic_mega65.rom: build/target_mega65/newrom
build/basic_ultimate64.rom: build/target_ultimate64/newrom
build/symbols_custom.vs: build/target_custom/BASIC_combined.vs build/target_custom/KERNAL_combined.vs
build/symbols_generic.vs: build/target_generic/BASIC_combined.vs build/target_generic/KERNAL_combined.vs
build/symbols_testing.vs: build/target_testing/BASIC_combined.vs build/target_testing/KERNAL_combined.vs
build/symbols_mega65.vs: build/target_mega65/BASIC_combined.vs build/target_mega65/KERNAL_combined.vs
@@ -215,11 +228,11 @@ build/symbols_hybrid.vs: build/target_generic/KERNAL_combined.vs
# Rules - platform 'Mega 65' specific
build/newc65.rom: build/kernal_mega65.rom build/basic_mega65.rom build/chargen.rom
dd if=/dev/zero bs=4096 count=10 of=build/newc65.rom
cat build/basic_mega65.rom build/chargen.rom build/chargen.rom build/kernal_mega65.rom >> build/newc65.rom
build/mega65.rom: build/kernal_mega65.rom build/basic_mega65.rom build/chargen.rom
dd if=/dev/zero bs=4096 count=10 of=build/mega65.rom
cat build/basic_mega65.rom build/chargen.rom build/chargen.rom build/kernal_mega65.rom >> build/mega65.rom
dd if=/dev/zero bs=65536 count=1 of=build/padding
cat build/padding >> build/newc65.rom
cat build/padding >> build/mega65.rom
rm -f build/padding
# Rules - tests
@@ -229,7 +242,10 @@ build/newc65.rom: build/kernal_mega65.rom build/basic_mega65.rom build/chargen.r
test_ultimate64 \
testremote testsimilarity
test: test_generic
test: test_custom
test_custom: build/kernal_custom.rom build/basic_custom.rom build/symbols_custom.vs
x64 -kernal build/kernal_custom.rom -basic build/basic_custom.rom -moncommands build/symbols_custom.vs -1 $(TESTTAPE) -8 $(TESTDISK)
test_generic: build/kernal_generic.rom build/basic_generic.rom build/symbols_generic.vs
x64 -kernal build/kernal_generic.rom -basic build/basic_generic.rom -moncommands build/symbols_generic.vs -1 $(TESTTAPE) -8 $(TESTDISK)
@@ -240,11 +256,11 @@ test_generic_x128: build/kernal_generic.rom build/basic_generic.rom build/symbol
test_testing: build/kernal_testing.rom build/basic_testing.rom build/symbols_testing.vs
x64 -kernal build/kernal_testing.rom -basic build/basic_testing.rom -moncommands build/symbols_testing.vs -1 $(TESTTAPE) -8 $(TESTDISK)
test_mega65: build/kernal_mega65.rom build/basic_mega65.rom build/symbols_mega65.vs
test_mega65_vice: build/kernal_mega65.rom build/basic_mega65.rom build/symbols_mega65.vs
x64 -kernal build/kernal_mega65.rom -basic build/basic_mega65.rom -moncommands build/symbols_mega65.vs -1 $(TESTTAPE) -8 $(TESTDISK)
test_mega65_xemu: build/newc65.rom
../xemu/build/bin/xmega65.native -dmarev 2 -forcerom -loadrom build/newc65.rom
test_mega65: build/mega65.rom
../xemu/build/bin/xmega65.native -dmarev 2 -forcerom -loadrom build/mega65.rom
test_ultimate64: build/kernal_ultimate64.rom build/basic_ultimate64.rom build/symbols_ultimate64.vs
x64 -kernal build/kernal_ultimate64.rom -basic build/basic_ultimate64.rom -moncommands build/symbols_ultimate64.vs -1 $(TESTTAPE) -8 $(TESTDISK)
@@ -258,11 +274,11 @@ test_hybrid: build/kernal_hybrid.rom build/symbols_hybrid.vs
@echo $(HYBRID_WARNING)
@echo
test_m65: build/newc65.rom
m65 -b ../mega65-core/bin/mega65r1.bit -k ../mega65-core/bin/KICKUP.M65 -R build/newc65.rom -4
test_m65: build/mega65.rom
m65 -b ../mega65-core/bin/mega65r1.bit -k ../mega65-core/bin/KICKUP.M65 -R build/mega65.rom -4
testremote: build/kernal_generic.rom build/basic_generic.rom build/symbols_generic.vs
x64 -kernal build/kernal_generic.rom -basic build/basic_generic.rom -moncommands build/symbols_generic.vs -remotemonitor
testremote: build/kernal_custom.rom build/basic_custom.rom build/symbols_custom.vs
x64 -kernal build/kernal_custom.rom -basic build/basic_custom.rom -moncommands build/symbols_custom.vs -remotemonitor
testsimilarity: build/target_generic/newrom $(TOOL_SIMILARITY) kernal basic
$(TOOL_SIMILARITY) kernal build/target_generic/newrom
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+133
View File
@@ -0,0 +1,133 @@
.const CONFIG_ID = $00 // should be 1 byte, different for each config file!
.encoding "petscii_upper"
//
// Please read CONFIG.md before modifying this file!
//
// Idea:
// - configuration for custom builds and for development
// - file contains options to enable unfinished functionalities
// Hardware platform and brand
#define CONFIG_PLATFORM_COMMODORE_64
// #define CONFIG_MB_MEGA_65
// #define CONFIG_MB_ULTIMATE_64
#define CONFIG_BRAND_CUSTOM_BUILD
// #define CONFIG_BRAND_GENERIC
// #define CONFIG_BRAND_TESTING
// #define CONFIG_BRAND_MEGA_65
// #define CONFIG_BRAND_ULTIMATE_64
.const CONFIG_CUSTOM_BRAND = @"CUSTOM BUILD"
// Processor instruction set
#define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_WDC_65C02
// #define CONFIG_CPU_CSG_65CE02
// #define CONFIG_CPU_WDC_65816
// Memory model
#define CONFIG_MEMORY_MODEL_38K
// #define CONFIG_MEMORY_MODEL_60K
// I/O devices
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
// #define CONFIG_IEC_DOLPHINDOS // please keep disabled for now
#define CONFIG_IEC_JIFFYDOS
#define CONFIG_TAPE_NORMAL // not finished yet!
#define CONFIG_TAPE_TURBO
// #define CONFIG_RS232_UP2400 // please keep disabled for now
// #define CONFIG_RS232_UP9600 // please keep disabled for now
// Multiple SID support
// #define CONFIG_SID_2ND
.const CONFIG_SID_2ND_ADDRESS = $D420
// #define CONFIG_SID_3RD
.const CONFIG_SID_3RD_ADDRESS = $D440
// #define CONFIG_SID_D4XX
// #define CONFIG_SID_D5XX
// Keyboard settings
// #define CONFIG_LEGACY_SCNKEY
// #define CONFIG_KEYBOARD_C128
// #define CONFIG_KEYBOARD_C128_CAPS_LOCK
// #define CONFIG_KEYBOARD_C65 // untested
// #define CONFIG_KEYBOARD_C65_CAPS_LOCK // untested
// #define CONFIG_KEY_REPEAT_DEFAULT
// #define CONFIG_KEY_REPEAT_ALWAYS
#define CONFIG_KEY_FAST_SCAN
#define CONFIG_JOY1_CURSOR
#define CONFIG_JOY2_CURSOR
#define CONFIG_PROGRAMMABLE_KEYS
.const CONFIG_KEYCMD_RUN = @"\$5FL"
.const CONFIG_KEYCMD_F1 = @"@"
.const CONFIG_KEYCMD_F2 = @""
.const CONFIG_KEYCMD_F3 = @"RUN:"
.const CONFIG_KEYCMD_F4 = @""
.const CONFIG_KEYCMD_F5 = @"LOAD"
.const CONFIG_KEYCMD_F6 = @""
.const CONFIG_KEYCMD_F7 = @"@$"
.const CONFIG_KEYCMD_F8 = @""
.const CONFIG_KEYCMD_HELP = @"LIST"
.const CONFIG_KEYCMD_F9 = @""
.const CONFIG_KEYCMD_F10 = @""
.const CONFIG_KEYCMD_F11 = @""
.const CONFIG_KEYCMD_F12 = @""
.const CONFIG_KEYCMD_F13 = @""
.const CONFIG_KEYCMD_F14 = @""
// Screen editor
#define CONFIG_EDIT_STOPQUOTE
#define CONFIG_EDIT_TABULATORS
// Software features
#define CONFIG_PANIC_SCREEN
#define CONFIG_DOS_WEDGE
#define CONFIG_TAPE_WEDGE
#define CONFIG_BCD_SAFE_INTERRUPTS
// Eye candy
// #define CONFIG_COLORS_BRAND
// #define CONFIG_BANNER_SIMPLE
#define CONFIG_BANNER_FANCY
// #define CONFIG_BANNER_BRAND
#define CONFIG_SHOW_FEATURES
#define CONFIG_SHOW_PAL_NTSC
// Debug options
// #define CONFIG_DBG_STUBS_BRK
// #define CONFIG_DBG_PRINTF
+1 -6
View File
@@ -1,5 +1,5 @@
.const CONFIG_ID = $00 // should be 1 byte, different for each config file!
.const CONFIG_ID = $01 // should be 1 byte, different for each config file!
.encoding "petscii_upper"
//
@@ -42,15 +42,10 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
// #define CONFIG_IEC_DOLPHINDOS // please keep disabled for now
#define CONFIG_IEC_JIFFYDOS
#define CONFIG_TAPE_NORMAL // not finished yet!
#define CONFIG_TAPE_TURBO
// #define CONFIG_RS232_UP2400 // please keep disabled for now
// #define CONFIG_RS232_UP9600 // please keep disabled for now
// Multiple SID support
+3 -10
View File
@@ -1,5 +1,5 @@
.const CONFIG_ID = $01 // should be 1 byte, different for each config file!
.const CONFIG_ID = $02 // should be 1 byte, different for each config file!
.encoding "petscii_upper"
//
@@ -9,8 +9,6 @@
// Idea:
// - sane defaults for the Mega 65 FPGA computer
// - do not enable features which are a significant compatibility risk
// - unless VICE gains Commodore 65 (or at least Flash8 cartridge) emulation support,
// do not enable CPU-specific optimizations; ROMs would be hard to test
// Hardware platform and brand
@@ -28,9 +26,9 @@
// Processor instruction set
#define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_WDC_65C02
// #define CONFIG_CPU_CSG_65CE02
#define CONFIG_CPU_CSG_65CE02
// #define CONFIG_CPU_WDC_65816
@@ -44,15 +42,10 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
// #define CONFIG_IEC_DOLPHINDOS // please keep disabled for now
#define CONFIG_IEC_JIFFYDOS
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
// #define CONFIG_TAPE_TURBO
// #define CONFIG_RS232_UP2400 // please keep disabled for now
// #define CONFIG_RS232_UP9600 // please keep disabled for now
// Multiple SID support
+1 -5
View File
@@ -1,5 +1,5 @@
.const CONFIG_ID = $02 // should be 1 byte, different for each config file!
.const CONFIG_ID = $03 // should be 1 byte, different for each config file!
.encoding "petscii_upper"
//
@@ -42,14 +42,10 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
// #define CONFIG_IEC_DOLPHINDOS // please keep disabled for now
#define CONFIG_IEC_JIFFYDOS
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
#define CONFIG_TAPE_TURBO
// #define CONFIG_RS232_UP2400 // please keep disabled for now
// #define CONFIG_RS232_UP9600 // please keep disabled for now
// Multiple SID support
+7 -4
View File
@@ -47,6 +47,9 @@
{
.var selected = 0;
#if CONFIG_BRAND_CUSTOM_BUILD
.eval selected++
#endif
#if CONFIG_BRAND_GENERIC
.eval selected++
#endif
@@ -62,11 +65,11 @@
.if (selected != 1) .error "Please select exactly one CONFIG_BRAND_* option"
#if CONFIG_MB_MEGA_65 && !(CONFIG_BRAND_MEGA_65 || CONFIG_BRAND_TESTING)
.error "Please select brand either matching the CONFIG_MB_*, or a testing one"
#if CONFIG_MB_MEGA_65 && !(CONFIG_BRAND_MEGA_65 || CONFIG_BRAND_TESTING || CONFIG_BRAND_CUSTOM_BUILD)
.error "Please select brand either matching the CONFIG_MB_*, or a testing/custom one"
#endif
#if CONFIG_MB_ULTIMATE_64 && !(CONFIG_BRAND_ULTIMATE_64 || CONFIG_BRAND_TESTING)
.error "Please select brand either matching the CONFIG_MB_*, or a testing one"
#if CONFIG_MB_ULTIMATE_64 && !(CONFIG_BRAND_ULTIMATE_64 || CONFIG_BRAND_TESTING || CONFIG_BRAND_CUSTOM_BUILD)
.error "Please select brand either matching the CONFIG_MB_*, or a testing/custom one"
#endif
}
+24
View File
@@ -10,6 +10,8 @@ initmsg_real:
ldy #>startup_banner
jsr STROUT
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$01
ldy #$04
jsr plot_set
@@ -18,13 +20,23 @@ initmsg_real:
ldy #>rom_revision_basic_string
jsr STROUT
#endif // no CONFIG_BRAND_CUSTOM_BUILD
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$03
#else
ldx #$02
#endif
ldy #$04
jsr plot_set
jsr initmsg_bytes_free
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$06
#else
ldx #$05
#endif
ldy #$00
#if CONFIG_SHOW_PAL_NTSC && CONFIG_SHOW_FEATURES
jsr plot_set
@@ -54,6 +66,8 @@ initmsg_real:
ldy #>startup_banner
jsr STROUT
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$01
ldy #$0A
jsr plot_set
@@ -66,13 +80,23 @@ initmsg_real:
ldy #>rom_revision_basic_string
jsr STROUT
#endif // no CONFIG_BRAND_CUSTOM_BUILD
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$03
#else
ldx #$02
#endif
ldy #$0A
jsr plot_set
jsr initmsg_bytes_free
#if !CONFIG_BRAND_CUSTOM_BUILD
ldx #$06
#else
ldx #$05
#endif
ldy #$00
#if CONFIG_SHOW_PAL_NTSC && CONFIG_SHOW_FEATURES
jsr plot_set
+8 -1
View File
@@ -8,7 +8,10 @@
.macro BANNER_TEXT() {
#if CONFIG_BRAND_GENERIC
#if CONFIG_BRAND_CUSTOM_BUILD
.text "OPEN ROMS "
.text CONFIG_CUSTOM_BRAND
#elif CONFIG_BRAND_GENERIC
.text "OPEN ROMS GENERIC BUILD"
#elif CONFIG_BRAND_TESTING
.text "OPEN ROMS TESTING BUILD"
@@ -61,11 +64,15 @@ rainbow_logo:
.byte SET_COLOR_0, $00
}
#if !CONFIG_BRAND_CUSTOM_BUILD
pre_revision_string:
.text "RELEASE "
.byte $00
#endif // no CONFIG_BRAND_CUSTOM_BUILD
#elif CONFIG_BANNER_BRAND && CONFIG_BRAND_MEGA_65
// Fancy Mega65 banner - from Retrofan
@@ -21,7 +21,12 @@ rom_revision_basic_string:
// $BF55
#if !CONFIG_BRAND_CUSTOM_BUILD
.text "(DEVEL SNAPSHOT)" // actual ROM revision string; up to 16 characters
#else
.text "(CUSTOM BUILD)"
#endif
.byte $00 // marks the end of string
__rom_revision_basic_end:
@@ -35,7 +35,12 @@ rom_revision_kernal_string:
// $E4BC
#if !CONFIG_BRAND_CUSTOM_BUILD
.text "(DEVEL SNAPSHOT)" // actual ROM revision string; up to 16 characters
#else
.text "(CUSTOM BUILD)"
#endif
.byte $00 // marks the end of string
__rom_revision_kernal_end: