SYM * symbolPtr[1000000]; // Symbol pointers table
static long unused; // For supressing 'write' warnings
char buffer[256]; // Scratch buffer for messages
-int stringtype; // Non-zero if we need any special string conversions
// Function prototypes
int d_unimpl(void);
for(;; tok++)
{
// dc.b 'string' [,] ...
- if (siz == SIZB && *tok == STRING && (tok[2] == ',' || tok[2] == EOL))
+ if (siz == SIZB && (*tok == STRING || *tok == STRINGA8) && (tok[2] == ',' || tok[2] == EOL))
{
uint32_t i = strlen(string[tok[1]]);
if ((challoc - ch_size) < i)
chcheck(i);
- if (stringtype == NORMAL)
+ if (*tok == STRING)
{
for(p=string[tok[1]]; *p!=EOS; p++)
D_byte(*p);
}
- else if(stringtype == A8INT)
+ else if(*tok == STRINGA8)
{
for(p=string[tok[1]]; *p!=EOS; p++)
D_byte(strtoa8[*p]);
org 0
.even 1
even 1
+.6502 2
.68000 3
.bss 4
bss 4
#define CONST 'a' // CONST <value>
#define ACONST 'A' // ACONST <value> <attrib>
#define STRING 'b' // STRING <address>
+#define STRINGA8 'S' // Atari 800 internal STRING <address>
#define SYMBOL 'c' // SYMBOL <address>
#define EOL 'e' // End of line
#define TKEOF 'f' // End of file (or macro)
// Handle multiple-character tokens
if (c & MULTX)
{
- stringtype = 0;
switch (*ln++)
{
continue;
case '\'': // 'string'
if (m6502)
- stringtype = A8INT; // hardcoded for now, maybe this will change in the future
-
+ {
+ *tk++ = STRINGA8; // hardcoded for now, maybe this will change in the future
+ goto dostring;
+ }
// Fall through
case '\"': // "string"
- c1 = ln[-1];
*tk++ = STRING;
+dostring:
+ c1 = ln[-1];
//#warning
// More char * stuffing (8 bytes) into the space of 4 (TOKEN).
// Need to figure out how to fix this crap.
#define MULTX 64 // Multiple-character tokens
#define DOT 128 // [bwlsBWSL] for what follows a `.'
-// "special" string types
-#define NORMAL 0 // Standard for PC/ST/whatever
-#define A8INT 1 // Atari 800 ATASCII translation
-#define PETSCII 2 // lol
-#define ORICSCII 3 // lolol
-
// Conditional assembly structures
IFENT {
IFENT * if_prev; // Ptr prev .if state block (or NULL)