diff --git a/CONFIG.md b/CONFIG.md index 9bf8544b..26c426da 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -82,12 +82,18 @@ Each of them needs a couple of bytes in KERNAL segment - but they can share some ## Miscelaneous features -### `CONFIG_FANCY_BANNER` +### `CONFIG_BANNER_FANCY` If enabled, prints more colorful startup banner. Eye candy only. Needs some space in BASIC segment, varies between targets. +### `CONFIG_BANNER_PAL_NTSC` + +If enabled, prints video system on startup banner. Eye candy only. + +Feature needs 3 bytes in BASIC and 23 bytes in KERNAL segment. + ### `CONFIG_DOS_WEDGE` If enabled, a simple DOS wedge is available from the direct mode - supports `@`, `@`, `@$`, `@$` and `@` commands. diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index 7b4de20f..11c29f43 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -20,7 +20,8 @@ // #define CONFIG_SID_D4XX // #define CONFIG_SID_D5XX -#define CONFIG_FANCY_BANNER +#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 diff --git a/c64/,,config_mega65.s b/c64/,,config_mega65.s index 8a693b68..8466b5ff 100644 --- a/c64/,,config_mega65.s +++ b/c64/,,config_mega65.s @@ -20,7 +20,8 @@ // #define CONFIG_SID_D4XX // #define CONFIG_SID_D5XX -#define CONFIG_FANCY_BANNER +#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 diff --git a/c64/,,config_ultimate64.s b/c64/,,config_ultimate64.s index a29773e3..3e63e6a1 100644 --- a/c64/,,config_ultimate64.s +++ b/c64/,,config_ultimate64.s @@ -20,7 +20,8 @@ #define CONFIG_SID_D4XX #define CONFIG_SID_D5XX -#define CONFIG_FANCY_BANNER +#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 diff --git a/c64/basic/,imports.s b/c64/basic/,imports.s index b195dcac..2f230d67 100644 --- a/c64/basic/,imports.s +++ b/c64/basic/,imports.s @@ -11,3 +11,7 @@ .label print_hex_byte = KERNAL.print_hex_byte .label print_return = KERNAL.print_return .label print_space = KERNAL.print_space + +#if CONFIG_BANNER_PAL_NTSC +.label print_pal_ntsc = KERNAL.print_pal_ntsc +#endif diff --git a/c64/basic/,target_generic/,hooks_generic.s b/c64/basic/,target_generic/,hooks_generic.s index 3224bfb8..76f0744d 100644 --- a/c64/basic/,target_generic/,hooks_generic.s +++ b/c64/basic/,target_generic/,hooks_generic.s @@ -4,7 +4,7 @@ .macro TARGET_HOOK_BANNER() { -#if CONFIG_FANCY_BANNER +#if CONFIG_BANNER_FANCY .byte $1C, $12, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $92, $0D .byte $9E, $12, $A3, $A3, $A3, $A3, $A3, $A3, $92, $05, $20 diff --git a/c64/basic/,target_mega65/,hooks_mega65.s b/c64/basic/,target_mega65/,hooks_mega65.s index 0ffad48e..4bb36fc2 100644 --- a/c64/basic/,target_mega65/,hooks_mega65.s +++ b/c64/basic/,target_mega65/,hooks_mega65.s @@ -4,7 +4,7 @@ .macro TARGET_HOOK_BANNER() { -#if CONFIG_FANCY_BANNER +#if CONFIG_BANNER_FANCY // New banner from Retrofan .byte $9a, $12, $20, $20, $7f, $a9, $20, $20, $1f, $20, $9a, $20, $20, $20 diff --git a/c64/basic/,target_ultimate64/,hooks_ultimate64.s b/c64/basic/,target_ultimate64/,hooks_ultimate64.s index 5d6ea6c6..e752ed01 100644 --- a/c64/basic/,target_ultimate64/,hooks_ultimate64.s +++ b/c64/basic/,target_ultimate64/,hooks_ultimate64.s @@ -4,7 +4,7 @@ .macro TARGET_HOOK_BANNER() { -#if CONFIG_FANCY_BANNER +#if CONFIG_BANNER_FANCY .byte $1C, $12, $A3, $A3, $A3, $A3, $A3, $A3, $A3, $92, $0D .byte $9E, $12, $A3, $A3, $A3, $A3, $A3, $A3, $92, $05, $20 diff --git a/c64/basic/cmd_break.s b/c64/basic/cmd_break.s index d3aa3cd3..82909193 100644 --- a/c64/basic/cmd_break.s +++ b/c64/basic/cmd_break.s @@ -1,5 +1,5 @@ cmd_stop: - ldx #38 // "BREAK" + ldx #30 // "BREAK" jsr print_packed_message // Are we in direct mode @@ -8,7 +8,7 @@ cmd_stop: beq !+ // Not direct mode - ldx #37 + ldx #31 jsr print_packed_message lda CURLIN+1 diff --git a/c64/basic/do_basic_error.s b/c64/basic/do_basic_error.s index 31bd947f..1135e102 100644 --- a/c64/basic/do_basic_error.s +++ b/c64/basic/do_basic_error.s @@ -150,7 +150,7 @@ do_basic_error: beq !+ // We were in a program, so show IN - ldx #37 + ldx #31 jsr print_packed_message lda CURLIN+1 diff --git a/c64/basic/e422.initmsg.s b/c64/basic/e422.initmsg.s index 2520c5bd..6c2cd302 100644 --- a/c64/basic/e422.initmsg.s +++ b/c64/basic/e422.initmsg.s @@ -19,13 +19,12 @@ INITMSG: bne !- !: - // Print PAL/NTSC - ldx #30 // NTSC - lda TVSFLG - beq !+ - ldx #31 // PAL -!: - jsr print_packed_message + + // Print PAL/NTSC, if configured + +#if CONFIG_BANNER_PAL_NTSC + jsr print_pal_ntsc +#endif // Work out free bytes, display them jsr basic_do_new @@ -37,8 +36,11 @@ INITMSG: sbc TXTTAB+1 jsr print_integer - jsr print_space // Print rest of the start up message ldx #34 - jmp print_packed_message + jsr print_packed_message + + // XXX put them into packed message + jsr print_return + jmp print_return diff --git a/c64/kernal/assets/kernal_messages.s b/c64/kernal/assets/kernal_messages.s index b87bce48..8827bf91 100644 --- a/c64/kernal/assets/kernal_messages.s +++ b/c64/kernal/assets/kernal_messages.s @@ -12,6 +12,11 @@ .label __MSG_KERNAL_FROM_HEX = __kernal_message_from_hex - __kernal_messages_start .label __MSG_KERNAL_TO_HEX = __kernal_message_to_hex - __kernal_messages_start +#if CONFIG_BANNER_PAL_NTSC +.label __MSG_KERNAL_PAL = __kernal_message_pal - __kernal_messages_start +.label __MSG_KERNAL_NTSC = __kernal_message_ntsc - __kernal_messages_start +#endif + __kernal_messages_start: @@ -42,3 +47,15 @@ __kernal_message_from_hex: __kernal_message_to_hex: .text " TO " .byte $80 + $24 // end of string mark + '$' + +#if CONFIG_BANNER_PAL_NTSC + +__kernal_message_pal: + .text "PAL," + .byte $80 + $20 // end of string mark + space + +__kernal_message_ntsc: + .text "NTSC," + .byte $80 + $20 // end of string mark + space + +#endif // CONFIG_BANNER_PAL_NTSC diff --git a/c64/kernal/print/print_pal_ntsc.s b/c64/kernal/print/print_pal_ntsc.s new file mode 100644 index 00000000..3cccd080 --- /dev/null +++ b/c64/kernal/print/print_pal_ntsc.s @@ -0,0 +1,17 @@ + +// +// Print video system on startup banner +// + +#if CONFIG_BANNER_PAL_NTSC + +print_pal_ntsc: + + ldx #__MSG_KERNAL_NTSC + lda TVSFLG + beq !+ + ldx #__MSG_KERNAL_PAL +!: + jmp print_kernal_message + +#endif // CONFIG_BANNER_PAL_NTSC \ No newline at end of file diff --git a/src/compress_text.c b/src/compress_text.c index 85a62d06..fcfc7dca 100644 --- a/src/compress_text.c +++ b/src/compress_text.c @@ -159,15 +159,13 @@ char *error_list[]={ "LOAD", // https://www.discogs.com/Gimmik-Load-Error/release/482462 // Non-error messages "READY.\r", // #29 // https://www.ibm.com/support/knowledgecenter/zosbasics/com.ibm.zos.zconcepts/zconc_whatistsonative.htm https://github.com/stefanhaustein/expressionparser - "NTSC, ", // #30 - "PAL, ", // #31 - "BREAK AT $", // #32 + "BREAK", // #30 + " IN ", // #31 + "BRK AT $", // #32 "ERROR", // #33 // Simply the word error that is attached to the other parts of messages https://fjkraan.home.xs4all.nl/comp/apple2faq/app2asoftfaq.html - "BYTES FREE\r\r", // #34 // https://github.com/stefanhaustein/expressionparser + " BASIC BYTES FREE", // #34 // https://github.com/stefanhaustein/expressionparser "MEMORY CORRUPT", // #35 "NOT IMPLEMENTED", // #36 - " IN ", // #37 - "BREAK", // #38 NULL}; // XXX: create separate list for Kernal