//
// RMAC - Reboot's Macro Assembler for all Atari computers
// TOKEN.C - Token Handling
-// Copyright (C) 199x Landon Dyer, 2011-2018 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2020 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
// Source utilised with the kind permission of Landon Dyer
//
// to choke on legitimate code... Need to investigate this further
// before changing anything else here!
case CONST:
- sprintf(numbuf, "$%lx", (uint64_t)*tk++);
+// sprintf(numbuf, "$%lx", (uint64_t)*tk++);
+ sprintf(numbuf, "$%" PRIX64, (uint64_t)*tk++);
tk++;
d = numbuf;
break;
}
// Make j = -1 if user tries to use a RISC register while in 68K mode
- if (!(rgpu || rdsp) && ((TOKEN)j >= KW_R0 && (TOKEN)j <= KW_R31))
+ if (!(rgpu || rdsp || dsp56001) && ((TOKEN)j >= KW_R0 && (TOKEN)j <= KW_R31))
{
j = -1;
}
case '\\':
c = '\\';
break;
+ case '{':
+ // If we're evaluating a macro
+ // this is valid because it's
+ // a parameter expansion
case '!':
// If we're evaluating a macro
// this is valid and expands to
while (hextab[*ln] >= 0)
v = (v << 4) + (int)hextab[*ln++];
- if (*ln == '.')
- {
- if (obj_format == BSD)
- {
- if ((*(ln + 1) & 0xDF) == 'B')
- {
- v &= 0x000000FF;
- ln += 2;
- }
- else if ((*(ln + 1) & 0xDF) == 'W')
- {
- v &= 0x0000FFFF;
- ln += 2;
- }
- else if ((*(ln + 1) & 0xDF) == 'L')
- {
- v &= 0xFFFFFFFF;
- ln += 2;
- }
- }
- }
-
*tk.u32++ = CONST;
*tk.u64++ = v;
- if (obj_format == ALCYON)
+ if (*ln == '.')
{
- if (*ln == '.')
+ if ((*(ln + 1) == 'w') || (*(ln + 1) == 'W'))
{
- if ((*(ln + 1) == 'w') || (*(ln + 1) == 'W'))
- {
- *tk.u32++ = DOTW;
- ln += 2;
- }
- else if ((*(ln + 1) == 'l') || (*(ln + 1) == 'L'))
- {
- *tk.u32++ = DOTL;
- ln += 2;
- }
+ *tk.u32++ = DOTW;
+ ln += 2;
+ }
+ else if ((*(ln + 1) == 'l') || (*(ln + 1) == 'L'))
+ {
+ *tk.u32++ = DOTL;
+ ln += 2;
}
}
}