shithub: rgbds

Download patch

ref: 23584a584f44af28aea5943341e5344f45d88b8a
parent: 53fa60816196380c1a9e7d3e13d2d9bee4bee794
author: Antonio Niño Díaz <[email protected]>
date: Sun Apr 9 11:40:06 EDT 2017

Fix __FILE__, __TIME__ and __DATE__

If they don't have quotes when passed to sym_AddString() they can't be
used at all by the assembler. I suppose nobody actually used them, they
seem to have been broken forever.

Added a comment to the function to say how to use it correctly for
strings.

Signed-off-by: Antonio Niño Díaz <[email protected]>

--- a/src/asm/fstack.c
+++ b/src/asm/fstack.c
@@ -346,7 +346,9 @@
 {
 	char tzFileName[_MAX_PATH + 1];
 
-	sym_AddString("__FILE__", s);
+	char tzSymFileName[_MAX_PATH + 1 + 2];
+	snprintf(tzSymFileName, sizeof(tzSymFileName), "\"%s\"", s);
+	sym_AddString("__FILE__", tzSymFileName);
 
 	strcpy(tzFileName, s);
 	pFileStack = NULL;
--- a/src/asm/symbol.c
+++ b/src/asm/symbol.c
@@ -495,7 +495,16 @@
 }
 
 /*
- * Add a string equated symbol
+ * Add a string equated symbol.
+ *
+ * If the desired symbol is a string it needs to be passed to this function with
+ * quotes inside the string, like sym_AddString("name", "\"test\"), or the
+ * assembler won't be able to use it with DB and similar. This is equivalent as
+ * ``` name EQUS "\"test\"" ```
+ *
+ * If the desired symbol is a register or a number, just the terminator quotes
+ * of the string are enough: sym_AddString("M_PI", "3.1415"). This is the same
+ * as ``` M_PI EQUS "3.1415" ```
  */
 void
 sym_AddString(char *tzSym, char *tzValue)
@@ -824,8 +833,8 @@
 		struct tm *tptr;
 
 		tptr = localtime(&tod);
-		strftime(SavedTIME, sizeof(SavedTIME), "%H:%M:%S", tptr);
-		strftime(SavedDATE, sizeof(SavedDATE), "%d %B %Y", tptr);
+		strftime(SavedTIME, sizeof(SavedTIME), "\"%H:%M:%S\"", tptr);
+		strftime(SavedDATE, sizeof(SavedDATE), "\"%d %B %Y\"", tptr);
 		sym_AddString("__TIME__", SavedTIME);
 		sym_AddString("__DATE__", SavedDATE);
 	}