string in config files work now

This commit is contained in:
FeralChild64 committed 2020-09-22 19:43:37 +02:00
1 parent 82c5c92959
commit d172a02bce
6 files changed
+24 -29

No files matched your search

+1 -5
View File
@@ -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"
+1 -5
View File
@@ -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"
+3 -6
View File
@@ -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"
+1 -5
View File
@@ -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"
+1 -5
View File
@@ -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"
+17 -3
View File
@@ -849,9 +849,18 @@ void SourceFile::preprocessLine_Config(const std::list<std::string> &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<std::string> &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#'");