simplified directory structure, updated configuration system

This commit is contained in:
FeralChild64 committed 2019-10-09 20:06:53 +02:00
1 parent 2cc6587b5c
commit 20899a49d9
19 files changed
+281 -177

No files matched your search

+24 -1
View File
@@ -4,13 +4,30 @@
//
// Hardware platform and variant
#define CONFIG_PLATFORM_COMMODORE_64
#define CONFIG_VARIANT_GENERIC
// #define CONFIG_VARIANT_MEGA_65
// #define CONFIG_VARIANT_ULTIMATE_64
// Processor instruction set
#define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_WDC_65C02
// #define CONFIG_CPU_WDC_65816
// Memory model
#define CONFIG_MEMORY_MODEL_38K
// #define CONFIG_MEMORY_MODEL_60K
// Multiple SID support
// #define CONFIG_SID_2ND
.const CONFIG_SID_2ND_ADDRESS = $D420
@@ -20,11 +37,17 @@
// #define CONFIG_SID_D4XX
// #define CONFIG_SID_D5XX
// Software features
#define CONFIG_BANNER_FANCY
#define CONFIG_BANNER_PAL_NTSC
#define CONFIG_DOS_WEDGE
#define CONFIG_BCD_SAFE_INTERRUPTS
#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled
#define CONFIG_SCNKEY_TWW_CTR // for now has to be enabled
// Debug options
// #define CONFIG_DBG_STUBS_BRK
// #define CONFIG_DBG_PRINTF
+24 -1
View File
@@ -4,13 +4,30 @@
//
// Hardware platform and variant
#define CONFIG_PLATFORM_COMMODORE_64
// #define CONFIG_VARIANT_GENERIC
#define CONFIG_VARIANT_MEGA_65
// #define CONFIG_VARIANT_ULTIMATE_64
// Processor instruction set
#define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_WDC_65C02
// #define CONFIG_CPU_WDC_65816
// Memory model configuration
// #define CONFIG_MEMORY_MODEL_38K
#define CONFIG_MEMORY_MODEL_60K
// Multiple SID support
#define CONFIG_SID_2ND
.const CONFIG_SID_2ND_ADDRESS = $D420
@@ -20,11 +37,17 @@
// #define CONFIG_SID_D4XX
// #define CONFIG_SID_D5XX
// Software features
#define CONFIG_BANNER_FANCY
#define CONFIG_BANNER_PAL_NTSC
#define CONFIG_DOS_WEDGE
#define CONFIG_BCD_SAFE_INTERRUPTS
#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled
#define CONFIG_SCNKEY_TWW_CTR // for now has to be enabled
// Debug options
// #define CONFIG_DBG_STUBS_BRK
// #define CONFIG_DBG_PRINTF
+24 -1
View File
@@ -4,13 +4,30 @@
//
// Hardware platform and variant
#define CONFIG_PLATFORM_COMMODORE_64
// #define CONFIG_VARIANT_GENERIC
// #define CONFIG_VARIANT_MEGA_65
#define CONFIG_VARIANT_ULTIMATE_64
// Processor instruction set
#define CONFIG_CPU_MOS_6502
// #define CONFIG_CPU_WDC_65C02
// #define CONFIG_CPU_WDC_65816
// Memory model configuration
#define CONFIG_MEMORY_MODEL_38K
// #define CONFIG_MEMORY_MODEL_60K
// Multiple SID support
// #define CONFIG_SID_2ND
.const CONFIG_SID_2ND_ADDRESS = $D420
@@ -20,11 +37,17 @@
#define CONFIG_SID_D4XX
#define CONFIG_SID_D5XX
// Software features
#define CONFIG_BANNER_FANCY
#define CONFIG_BANNER_PAL_NTSC
#define CONFIG_DOS_WEDGE
#define CONFIG_BCD_SAFE_INTERRUPTS
#define CONFIG_EXTENDED_SCNKEY // for now has to be enabled
#define CONFIG_SCNKEY_TWW_CTR // for now has to be enabled
// Debug options
// #define CONFIG_DBG_STUBS_BRK
// #define CONFIG_DBG_PRINTF
+58 -11
View File
@@ -1,26 +1,52 @@
// Various configuration dependent aliases/macros/checks
//
// Various configuration dependent aliases/macros/checks
//
// Check that memory model configuration is correct
// Check that platform configuration is correct
{
.var selected = 0;
#if CONFIG_MEMORY_MODEL_38K
.eval selected++
#endif
#if CONFIG_MEMORY_MODEL_60K
#if CONFIG_PLATFORM_COMMODORE_64
.eval selected++
#endif
.if (selected != 1) .error "Please select exactly one CONFIG_MEMORY_MODEL_* option"
.if (selected != 1) .error "Please select exactly one CONFIG_PLATFORM_* option"
}
// Check that processor configuration is correct
// Check that platform variant configuration is correct
{
.var selected = 0;
#if CONFIG_VARIANT_GENERIC
.eval selected++
#endif
#if CONFIG_VARIANT_MEGA_65
.eval selected++
#endif
#if CONFIG_VARIANT_ULTIMATE_64
.eval selected++
#endif
.if (selected != 1) .error "Please select exactly one CONFIG_VARIANT_* option"
#if !CONFIG_PLATFORM_COMMODORE_64 && CONFIG_VARIANT_MEGA_65 &&
.error "CONFIG_VARIANT_MEGA_65 can only be used with CONFIG_PLATFORM_COMMODORE_64"
#endif
#if !CONFIG_PLATFORM_COMMODORE_64 && CONFIG_VARIANT_ULTIMATE_64 &&
.error "CONFIG_VARIANT_ULTIMATE_64 can only be used with CONFIG_PLATFORM_COMMODORE_64"
#endif
}
// Check that processor configuration is correct
{
.var selected = 0;
@@ -40,7 +66,24 @@
// Handle processor configuration
// Check that memory model configuration is correct
{
.var selected = 0;
#if CONFIG_MEMORY_MODEL_38K
.eval selected++
#endif
#if CONFIG_MEMORY_MODEL_60K
.eval selected++
#endif
.if (selected != 1) .error "Please select exactly one CONFIG_MEMORY_MODEL_* option"
}
// Handle processor configuration
#if CONFIG_CPU_WDC_65C02 || CONFIG_CPU_WDC_65816
@@ -54,13 +97,17 @@
#endif
// Handle misc configuration entrues
// Handle configuration of various features
#if CONFIG_BCD_SAFE_INTERRUPTS
#define HAS_BCD_SAFE_INTERRUPTS
#endif
// Stub configuration
// Handle configuration of debug infrastructure
.macro STUB_IMPLEMENTATION_RTS() {
rts
+6 -1
View File
@@ -1,8 +1,11 @@
//
// Names of hardware registers - slightly modified names from C64 Programmer's Reference Guide
// Names of hardware registers - names from C64 Programmer's Reference Guide, sometimes slightly modified
//
#if CONFIG_PLATFORM_COMMODORE_64
// CPU memory registers
.label CPU_D6510 = $00
@@ -154,3 +157,5 @@
.const BIT_CIA2_PRA_DAT_OUT = $20 // 1 - low (pulled), 0 - high (released)
.const BIT_CIA2_PRA_CLK_IN = $40 // 0 - low (pulled), 1 - high (released)
.const BIT_CIA2_PRA_DAT_IN = $80 // 0 - low (pulled), 1 - high (released)
#endif
+5 -5
View File
@@ -105,7 +105,7 @@
.label BUFPNT = $A6 // -- NOT IMPLEMENTED --
.label INBIT = $A7 // -- NOT IMPLEMENTED --
#if CONFIG_EXTENDED_SCNKEY
#if CONFIG_SCNKEY_TWW_CTR
// Reuse RS232 variables, since they should not be used by other things.
// Carefully avoid $A7 which is used by 64NET
@@ -125,7 +125,7 @@
.label CMP0 = $B0 // $B0-$B1 temporary tape storage, [!] here used for BRK instruction address
.label TAPE1 = $B2 // $B2-$B3 tape buffer pointer
#if CONFIG_EXTENDED_SCNKEY
#if CONFIG_SCNKEY_TWW_CTR
// Reuse RS232 variables, since they should not be used by other things.
// This one should be initialized in cinit to $FF
@@ -139,7 +139,7 @@
.label NXTBIT = $B5 // -- NOT IMPLEMENTED --
#if CONFIG_EXTENDED_SCNKEY
#if CONFIG_SCNKEY_TWW_CTR
// Reuse RS232 variables, since they should not be used by other things.
// Carefully avoiding $A7 which is used by 64NET
@@ -200,7 +200,7 @@
.label BUF = $200 // $200-$250, BASIC line editor input buffer (81 bytes)
#if CONFIG_EXTENDED_SCNKEY
#if CONFIG_SCNKEY_TWW_CTR
// $250-$258 is the 81st - 88th characters in BASIC input, a carry over from VIC-20
// and not used on C64, so safe for us to use, probably.
@@ -229,7 +229,7 @@
.label MODE = $291 // flag, is case switch allowed
.label AUTODN = $292 // -- NOT IMPLEMENTED -- screen scroll disable
#if CONFIG_EXTENDED_SCNKEY
#if CONFIG_SCNKEY_TWW_CTR
// Reuse RS232 variables, since they should not be used by other things.
// This one should be initialized in cinit to $FF
@@ -1,26 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_BANNER() {
#if CONFIG_BANNER_FANCY
.byte $1C, $12, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9E, $12, $A4, $A4, $A4, $A4, $A4, $A4, $92, $05, $20
.text " OPEN ROMS GENERIC BUILD"
.byte $0D
.byte $1E, $12, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9F, $12, $A4, $A4, $A4, $A4, $92, $20, $05, $20, $20
.text " "
#else
.text " OPEN ROMS GENERIC BUILD"
.byte $0D, $0D
.text " "
#endif
.byte $00 // end of banner
}
-52
View File
@@ -1,52 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_BANNER() {
#if CONFIG_BANNER_FANCY
// New banner from Retrofan
.byte $9a, $12, $20, $20, $7f, $a9, $20, $20, $1f, $20, $9a, $20, $20, $20
.byte $20, $1f, $20, $9a, $a9, $20, $20, $20, $92, $a1, $1f, $12, $20, $9a, $a9, $20
.byte $20, $20, $7f, $1f, $20, $20, $9a, $a3, $a3, $a3, $a3, $a3, $a3, $a3, $1f, $20
.byte $20, $20, $20, $05, $92, $4d, $45, $47, $41, $9a, $12, $20, $20, $20, $20, $20
.byte $20, $1f, $20, $9a, $20, $20, $92, $a2, $bb, $1f, $12, $20, $9a, $20, $20, $92
.byte $ac, $a2, $a2, $1f, $12, $20, $9a, $20, $20, $1f, $20, $9a, $20, $20, $1f, $20
.byte $20, $1e, $a3, $a3, $a3, $a3, $a3, $a3, $1f, $20, $20, $20, $20, $05, $92, $42
.byte $41, $53, $49, $43, $9a, $12, $20, $20, $92, $7f, $a9, $12, $20, $20, $1f, $20
.byte $9a, $20, $20, $a2, $92, $be, $1f, $12, $20, $9a, $20, $20, $92, $bc, $12, $20
.byte $20, $1f, $20, $9a, $20, $20, $20, $20, $20, $1f, $20, $20, $9e, $a3, $a3, $a3
.byte $a3, $a3, $1f, $20, $20, $20, $20, $05, $92, $2d, $2d, $2d, $2d, $2d, $2d, $9a
.byte $12, $20, $20, $1f, $20, $20, $9a, $20, $20, $1f, $20, $9a, $20, $20, $20, $20
.byte $1f, $20, $9a, $20, $20, $20, $20, $20, $1f, $20, $9a, $20, $20, $1f, $20, $9a
.byte $20, $20, $1f, $20, $20, $96, $a3, $a3, $a3, $a3, $1f
.byte $92, $0D, $0D, $05
// Original Deft-supplied banner
// .byte $9A,$12,$A3,$A3,$A3,$A3,$A3,$A3,$DF,$9B,$92,$20,$05,$12,$A0,$A0
// .byte $DF,$9B,$92,$20,$05,$12,$A0,$A0,$DF,$9B,$92,$20,$05,$12,$A0,$A0
// .byte $DF,$9B,$92,$20,$05,$12,$A0,$A0,$DF,$9A,$92,$20,$05,$20,$20,$20
// .byte $4D,$20,$45,$20,$47,$20,$41,$0D,$99,$12,$A3,$A3,$A3,$A3,$A3,$A3
// .byte $A3,$DF,$92,$7F,$12,$CD,$CD,$DF,$92,$7F,$12,$DF,$05,$92,$20,$20
// .byte $99,$7F,$12,$DF,$05,$92,$20,$20,$99,$7F,$12,$DF,$92,$7F,$12,$DF
// .byte $05,$92,$20,$20,$99,$42,$20,$41,$20,$53,$20,$49,$20,$43,$0D,$9E
// .byte $12,$A3,$A3,$A3,$A3,$A3,$A3,$A3,$A3,$DF,$9B,$92,$7F,$12,$DF,$92
// .byte $7F,$12,$DF,$92,$7F,$12,$CD,$05,$92,$20,$20,$9B,$7F,$12,$CD,$92
// .byte $7F,$12,$DF,$92,$7F,$12,$CD,$92,$7F,$12,$DF,$9A,$92,$20,$05,$20
// .byte $9A,$2D,$2D,$2D,$2D,$2D,$2D,$2D,$0D,$96,$12,$A3,$A3,$A3,$A3,$A3
// .byte $A3,$A3,$A3,$A3,$DF,$9A,$92,$7F,$12,$DF,$92,$7F,$9B,$20,$9A,$7F
// .byte $12,$A0,$A0,$9B,$92,$20,$9A,$7F,$12,$A0,$A0,$9B,$92,$20,$9A,$7F
// .byte $12,$DF,$92,$7F,$9B,$20,$9A,$20,$9B,"0.2.0.0",$0D
// .byte $0D,$05,$92
#else
.text " OPEN ROMS FOR MEGA65"
.byte $0D, $0D
.text " "
#endif
.byte $00 // end of banner
}
@@ -1,26 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_BANNER() {
#if CONFIG_BANNER_FANCY
.byte $1C, $12, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9E, $12, $A4, $A4, $A4, $A4, $A4, $A4, $92, $05, $20
.text " OPEN ROMS FOR ULTIMATE 64"
.byte $0D
.byte $1E, $12, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9F, $12, $A4, $A4, $A4, $A4, $92, $20, $05, $20, $20
.text " "
#else
.text " OPEN ROMS FOR ULTIMATE 64"
.byte $0D, $0D
.text " "
#endif
.byte $00 // end of banner
}
+86 -2
View File
@@ -1,7 +1,91 @@
//
// Startup banner, to be displayed durin cold start
// Startup banner, to be displayed during cold start
//
.macro BANNER_TEXT() {
#if CONFIG_VARIANT_GENERIC
.text "OPEN ROMS GENERIC BUILD"
#elif CONFIG_VARIANT_MEGA_65
.text "OPEN ROMS FOR MEGA65"
#elif CONFIG_VARIANT_ULTIMATE_64
.text "OPEN ROMS FOR ULTIMATE 64"
#endif
}
startup_banner:
TARGET_HOOK_BANNER()
#if !CONFIG_BANNER_FANCY
// Simple banner
.text " "
BANNER_TEXT()
.byte $0D, $0D
.text " "
#endif
#if CONFIG_BANNER_FANCY && !CONFIG_VARIANT_MEGA_65
// Fancy banner
.byte $1C, $12, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9E, $12, $A4, $A4, $A4, $A4, $A4, $A4, $92, $05, $20
.text " "
BANNER_TEXT()
.byte $0D
.byte $1E, $12, $A4, $A4, $A4, $A4, $A4, $92, $0D
.byte $9F, $12, $A4, $A4, $A4, $A4, $92, $20, $05, $20, $20
.text " "
#endif
#if CONFIG_BANNER_FANCY && CONFIG_VARIANT_MEGA_65
// Fancy Mega65 banner - from Retrofan
.byte $9a, $12, $20, $20, $7f, $a9, $20, $20, $1f, $20, $9a, $20, $20, $20
.byte $20, $1f, $20, $9a, $a9, $20, $20, $20, $92, $a1, $1f, $12, $20, $9a, $a9, $20
.byte $20, $20, $7f, $1f, $20, $20, $9a, $a3, $a3, $a3, $a3, $a3, $a3, $a3, $1f, $20
.byte $20, $20, $20, $05, $92, $4d, $45, $47, $41, $9a, $12, $20, $20, $20, $20, $20
.byte $20, $1f, $20, $9a, $20, $20, $92, $a2, $bb, $1f, $12, $20, $9a, $20, $20, $92
.byte $ac, $a2, $a2, $1f, $12, $20, $9a, $20, $20, $1f, $20, $9a, $20, $20, $1f, $20
.byte $20, $1e, $a3, $a3, $a3, $a3, $a3, $a3, $1f, $20, $20, $20, $20, $05, $92, $42
.byte $41, $53, $49, $43, $9a, $12, $20, $20, $92, $7f, $a9, $12, $20, $20, $1f, $20
.byte $9a, $20, $20, $a2, $92, $be, $1f, $12, $20, $9a, $20, $20, $92, $bc, $12, $20
.byte $20, $1f, $20, $9a, $20, $20, $20, $20, $20, $1f, $20, $20, $9e, $a3, $a3, $a3
.byte $a3, $a3, $1f, $20, $20, $20, $20, $05, $92, $2d, $2d, $2d, $2d, $2d, $2d, $9a
.byte $12, $20, $20, $1f, $20, $20, $9a, $20, $20, $1f, $20, $9a, $20, $20, $20, $20
.byte $1f, $20, $9a, $20, $20, $20, $20, $20, $1f, $20, $9a, $20, $20, $1f, $20, $9a
.byte $20, $20, $1f, $20, $20, $96, $a3, $a3, $a3, $a3, $1f
.byte $92, $0D, $0D, $05
// Original Mega65 banner - supplied by Deft
// .byte $9A,$12,$A3,$A3,$A3,$A3,$A3,$A3,$DF,$9B,$92,$20,$05,$12,$A0,$A0
// .byte $DF,$9B,$92,$20,$05,$12,$A0,$A0,$DF,$9B,$92,$20,$05,$12,$A0,$A0
// .byte $DF,$9B,$92,$20,$05,$12,$A0,$A0,$DF,$9A,$92,$20,$05,$20,$20,$20
// .byte $4D,$20,$45,$20,$47,$20,$41,$0D,$99,$12,$A3,$A3,$A3,$A3,$A3,$A3
// .byte $A3,$DF,$92,$7F,$12,$CD,$CD,$DF,$92,$7F,$12,$DF,$05,$92,$20,$20
// .byte $99,$7F,$12,$DF,$05,$92,$20,$20,$99,$7F,$12,$DF,$92,$7F,$12,$DF
// .byte $05,$92,$20,$20,$99,$42,$20,$41,$20,$53,$20,$49,$20,$43,$0D,$9E
// .byte $12,$A3,$A3,$A3,$A3,$A3,$A3,$A3,$A3,$DF,$9B,$92,$7F,$12,$DF,$92
// .byte $7F,$12,$DF,$92,$7F,$12,$CD,$05,$92,$20,$20,$9B,$7F,$12,$CD,$92
// .byte $7F,$12,$DF,$92,$7F,$12,$CD,$92,$7F,$12,$DF,$9A,$92,$20,$05,$20
// .byte $9A,$2D,$2D,$2D,$2D,$2D,$2D,$2D,$0D,$96,$12,$A3,$A3,$A3,$A3,$A3
// .byte $A3,$A3,$A3,$A3,$DF,$9A,$92,$7F,$12,$DF,$92,$7F,$9B,$20,$9A,$7F
// .byte $12,$A0,$A0,$9B,$92,$20,$9A,$7F,$12,$A0,$A0,$9B,$92,$20,$9A,$7F
// .byte $12,$DF,$92,$7F,$9B,$20,$9A,$20,$9B,"0.2.0.0",$0D
// .byte $0D,$05,$92
#endif
.byte $00 // end of banner
@@ -1,6 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_LOAD() {
}
@@ -1,6 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_LOAD() {
}
@@ -1,9 +0,0 @@
// Target-specific hooks
.macro TARGET_HOOK_LOAD() {
// XXX disabled for now - the current file opening API is not
// really suitable for easy usage from Kernal
// jsr u64_load
}
-3
View File
@@ -36,9 +36,6 @@ LOAD:
jsr install_ram_routines
#endif
// Allow platform-specific routine to takeover the flow
TARGET_HOOK_LOAD()
// Check whether we support the requested device
lda FA
and #$FC
@@ -8,6 +8,10 @@
// CPU registers that has to be preserved (see [RG64]): none
//
#if CONFIG_SCNKEY_TWW_CTR
// Scan the keyboard..
// Here we don't use the horrible buggy original routine,
// not just because of copyright. Instead, we use the
@@ -513,3 +517,6 @@ KeyCanRepeat:
KeyRepeatWait:
pla
jmp ConsiderNextKey
#endif // #if CONFIG_SCNKEY_TWW_CTR