//
-// RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
+// RMAC - Reboot's Macro Assembler for all Atari computers
// DEBUG.C - Debugging Messages
// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends
// RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
static int siztab[4] = { 3, 5, 9, 9 };
+static PTR tp;
//
//
// Print expression, return ptr to just past the ENDEXPR
//
-TOKEN * printexpr(TOKEN * tp)
+TOKEN * printexpr(TOKEN * tokenptr)
{
- if (tp != NULL)
+ if (tokenptr != NULL)
{
- while (*tp != ENDEXPR)
+ while (*tokenptr != ENDEXPR)
{
- switch ((int)*tp++)
+ switch ((int)*tokenptr++)
{
case SYMBOL:
- printf("'%s' ", symbolPtr[*tp]->sname);
- tp++;
+ printf("'%s' ", symbolPtr[*tokenptr]->sname);
+ tokenptr++;
break;
case CONST:
- printf("$%X ", *tp++);
+ tp.u32 = tokenptr;
+ printf("$%lX ", *tp.u64++);
+ tokenptr = tp.u32;
break;
case ACONST:
- printf("ACONST=($%X,$%X) ", *tp, tp[1]);
- tp += 2;
+ printf("ACONST=($%X,$%X) ", *tokenptr, tokenptr[1]);
+ tokenptr += 2;
break;
default:
- printf("%c ", (char)tp[-1]);
+ printf("%c ", (char)tokenptr[-1]);
break;
}
}
}
- return tp + 1;
+ return tokenptr + 1;
}
switch (flg & 3)
{
case 0:
- printf("%02X ", start[i] & 0xff);
+ printf("%02X ", start[i] & 0xFF);
i++;
break;
case 1:
- printf("%02X%02X ", start[i] & 0xff, start[i+1] & 0xff);
+ printf("%02X%02X ", start[i] & 0xFF, start[i+1] & 0xFF);
i += 2;
break;
case 2:
- printf("%02X%02X%02X%02X ", start[i] & 0xff, start[i+1] & 0xff,
- start[i+2] & 0xff, start[i+3] & 0xff);
+ printf("%02X%02X%02X%02X ", start[i] & 0xFF, start[i+1] & 0xFF,
+ start[i+2] & 0xFF, start[i+3] & 0xFF);
i += 4;
break;
case 3:
switch ((int)*tk++)
{
case CONST: // CONST <value>
- printf("CONST=%u", *tk++);
+ tp.u32 = tk;
+ printf("CONST=%lu", *tp.u64++);
+ tk = tp.u32;
break;
case STRING: // STRING <address>
printf("STRING='%s'", string[*tk++]);
}
+void DumpTokens(TOKEN * tokenBuffer)
+{
+// printf("Tokens [%X]: ", sloc);
+
+ for(TOKEN * t=tokenBuffer; *t!=EOL; t++)
+ {
+ if (*t == COLON)
+ printf("[COLON]");
+ else if (*t == CONST)
+ {
+ tp.u32 = t + 1;
+ printf("[CONST: $%lX]", *tp.u64);
+ t += 2;
+ }
+ else if (*t == ACONST)
+ {
+ printf("[ACONST: $%X, $%X]", (uint32_t)t[1], (uint32_t)t[2]);
+ t += 2;
+ }
+ else if (*t == STRING)
+ {
+ t++;
+ printf("[STRING:\"%s\"]", string[*t]);
+ }
+ else if (*t == SYMBOL)
+ {
+ t++;
+ printf("[SYMBOL:\"%s\"]", string[*t]);
+ }
+ else if (*t == EOS)
+ printf("[EOS]");
+ else if (*t == TKEOF)
+ printf("[TKEOF]");
+ else if (*t == DEQUALS)
+ printf("[DEQUALS]");
+ else if (*t == SET)
+ printf("[SET]");
+ else if (*t == REG)
+ printf("[REG]");
+ else if (*t == DCOLON)
+ printf("[DCOLON]");
+ else if (*t == GE)
+ printf("[GE]");
+ else if (*t == LE)
+ printf("[LE]");
+ else if (*t == NE)
+ printf("[NE]");
+ else if (*t == SHR)
+ printf("[SHR]");
+ else if (*t == SHL)
+ printf("[SHL]");
+ else if (*t == UNMINUS)
+ printf("[UNMINUS]");
+ else if (*t == DOTB)
+ printf("[DOTB]");
+ else if (*t == DOTW)
+ printf("[DOTW]");
+ else if (*t == DOTL)
+ printf("[DOTL]");
+ else if (*t == DOTI)
+ printf("[DOTI]");
+ else if (*t == ENDEXPR)
+ printf("[ENDEXPR]");
+ else if (*t == CR_ABSCOUNT)
+ printf("[CR_ABSCOUNT]");
+ else if (*t == CR_DEFINED)
+ printf("[CR_DEFINED]");
+ else if (*t == CR_REFERENCED)
+ printf("[CR_REFERENCED]");
+ else if (*t == CR_STREQ)
+ printf("[CR_STREQ]");
+ else if (*t == CR_MACDEF)
+ printf("[CR_MACDEF]");
+ else if (*t == CR_TIME)
+ printf("[CR_TIME]");
+ else if (*t == CR_DATE)
+ printf("[CR_DATE]");
+ else if (*t >= 0x20 && *t <= 0x2F)
+ printf("[%c]", (char)*t);
+ else if (*t >= 0x3A && *t <= 0x3F)
+ printf("[%c]", (char)*t);
+ else if (*t >= 0x80 && *t <= 0x87)
+ printf("[D%u]", ((uint32_t)*t) - 0x80);
+ else if (*t >= 0x88 && *t <= 0x8F)
+ printf("[A%u]", ((uint32_t)*t) - 0x88);
+ else
+ printf("[%X:%c]", (uint32_t)*t, (char)*t);
+ }
+
+ printf("[EOL]\n");
+}
+
+
//
// Dump everything
//