diff --git a/src/,,config_custom.s b/src/,,config_custom.s index 4ec8112f..b01cae6c 100644 --- a/src/,,config_custom.s +++ b/src/,,config_custom.s @@ -88,11 +88,7 @@ ;; #CONFIG# PROGRAMMABLE_KEYS YES -;; #CONFIG# KEYCMD_RUN YES -!macro CONFIG_KEYCMD_RUN { - !byte $5F - !pet "l" -} +;; #CONFIG# KEYCMD_RUN "\5FL" ;; #CONFIG# KEYCMD_F1 "@8$" ;; #CONFIG# KEYCMD_F2 "LOAD" diff --git a/src/,,config_generic.s b/src/,,config_generic.s index 97644990..970f7cde 100644 --- a/src/,,config_generic.s +++ b/src/,,config_generic.s @@ -76,11 +76,7 @@ ;; #CONFIG# PROGRAMMABLE_KEYS YES -;; #CONFIG# KEYCMD_RUN YES -!macro CONFIG_KEYCMD_RUN { - !byte $5F - !pet "l" -} +;; #CONFIG# KEYCMD_RUN "\5FL" ;; #CONFIG# KEYCMD_F1 "@8$" ;; #CONFIG# KEYCMD_F2 "LOAD" diff --git a/src/,,config_mega65.s b/src/,,config_mega65.s index 26c4586c..54431853 100644 --- a/src/,,config_mega65.s +++ b/src/,,config_mega65.s @@ -56,10 +56,7 @@ ;; #CONFIG# PROGRAMMABLE_KEYS YES -;; #CONFIG# KEYCMD_RUN YES -!macro CONFIG_KEYCMD_RUN { - !byte $5F - !pet "l" } +;; #CONFIG# KEYCMD_RUN "RUN" ;; #CONFIG# KEYCMD_F1 "@8$" ;; #CONFIG# KEYCMD_F2 "LOAD" @@ -72,9 +69,9 @@ ;; #CONFIG# KEYCMD_HELP "LIST" -;; #CONFIG# KEYCMD_F9 "REM F9" +;; #CONFIG# KEYCMD_F9 "\5FL" ;; #CONFIG# KEYCMD_F10 "REM F10" -;; #CONFIG# KEYCMD_F11 "REM F11" +;; #CONFIG# KEYCMD_F11 "\5FH" ;; #CONFIG# KEYCMD_F12 "REM F12" ;; #CONFIG# KEYCMD_F13 "REM F13" ;; #CONFIG# KEYCMD_F14 "REM F14" diff --git a/src/,,config_testing.s b/src/,,config_testing.s index 4deed9b5..fb714a01 100644 --- a/src/,,config_testing.s +++ b/src/,,config_testing.s @@ -76,11 +76,7 @@ ;; #CONFIG# PROGRAMMABLE_KEYS YES -;; #CONFIG# KEYCMD_RUN YES -!macro CONFIG_KEYCMD_RUN { - !byte $5F - !pet "l" -} +;; #CONFIG# KEYCMD_RUN "\5FL" ;; #CONFIG# KEYCMD_F1 "@8$" ;; #CONFIG# KEYCMD_F2 "LOAD" diff --git a/src/,,config_ultimate64.s b/src/,,config_ultimate64.s index 290a927d..edd352c7 100644 --- a/src/,,config_ultimate64.s +++ b/src/,,config_ultimate64.s @@ -66,11 +66,7 @@ ;; #CONFIG# PROGRAMMABLE_KEYS YES -;; #CONFIG# KEYCMD_RUN YES -!macro CONFIG_KEYCMD_RUN { - !byte $5F - !pet "l" -} +;; #CONFIG# KEYCMD_RUN "\5FL" ;; #CONFIG# KEYCMD_F1 "@8$" ;; #CONFIG# KEYCMD_F2 "LOAD" diff --git a/tools/build_segment.cc b/tools/build_segment.cc index beebbe35..c49cc383 100644 --- a/tools/build_segment.cc +++ b/tools/build_segment.cc @@ -849,9 +849,18 @@ void SourceFile::preprocessLine_Config(const std::list &tokens, std if ((line.size() <= ++pos) || (line[pos] == '\n')) ERROR("syntax error, unfinished string in '#CONFIG#'"); byte = line[pos]; }; + auto byteToNibble = [&byte]() -> uint8_t + { + if (byte >= '0' && byte <= '9') return byte - '0'; + if (byte >= 'a' && byte <= 'f') return byte - 'a' + 10; + if (byte >= 'A' && byte <= 'F') return byte - 'A' + 10; + + ERROR("syntax error, improper 2-digit hex value in '#CONFIG#'"); + return 0; + }; advance(); - + // Convert string from ASCII to PETSCII if (byte == '"') break; @@ -862,10 +871,15 @@ void SourceFile::preprocessLine_Config(const std::list &tokens, std if (byte == '"') { configEntries[lineNum].valBlob.push_back(byte); - continue; } + else + { + uint8_t val = byteToNibble() * 16; + advance(); + val += byteToNibble(); - // XXX handle hex values + configEntries[lineNum].valBlob.push_back(val); + } } else if ((byte >= 0x20 && byte <= 0x5B) || byte == 0x5D) configEntries[lineNum].valBlob.push_back(byte); else ERROR("syntax error, invalid character in string in '#CONFIG#'");