X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=debug.c;h=6359cfbc2bddf5909807c3d65d20262d876fa9fe;hp=6ce006501c94f294512ce5d375ca59ce20401a07;hb=60f204cb9e3905100da0d89f14bb40db764acd9e;hpb=d16b8ea0ee65b2ad901ca6b0624c07e6e4930cc4 diff --git a/debug.c b/debug.c index 6ce0065..6359cfb 100644 --- a/debug.c +++ b/debug.c @@ -1,9 +1,9 @@ // // RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System // DEBUG.C - Debugging Messages -// Copyright (C) 199x Landon Dyer, 2011-2012 Reboot and Friends +// Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986 -// Source Utilised with the Kind Permission of Landon Dyer +// Source utilised with the kind permission of Landon Dyer // #include "debug.h" @@ -18,7 +18,7 @@ static int siztab[4] = { 3, 5, 9, 9 }; // -// Print 'c' Visibly +// Print 'c' visibly // int visprt(char c) { @@ -43,15 +43,14 @@ TOKEN * printexpr(TOKEN * tp) switch ((int)*tp++) { case SYMBOL: -// printf("`%s' ", ((SYM *)*tp)->sname); - printf("`%s' ", symbolPtr[*tp]->sname); + printf("'%s' ", symbolPtr[*tp]->sname); tp++; break; case CONST: - printf("$%ux ", *tp++); + printf("$%X ", *tp++); break; case ACONST: - printf("ACONST=($%ux,$%ux) ", *tp, tp[1]); + printf("ACONST=($%X,$%X) ", *tp, tp[1]); tp += 2; break; default: @@ -61,7 +60,6 @@ TOKEN * printexpr(TOKEN * tp) } } - printf(";\n"); return tp + 1; } @@ -73,7 +71,7 @@ int chdump(CHUNK * ch, int format) { while (ch != NULL) { - printf("chloc=$%08ux, chsize=$%ux\n", ch->chloc, ch->ch_size); + printf("chloc=$%08X, chsize=$%X\n", ch->chloc, ch->ch_size); mdump(ch->chptr, ch->ch_size, format, ch->chloc); ch = ch->chnext; } @@ -88,36 +86,40 @@ int chdump(CHUNK * ch, int format) int fudump(CHUNK * ch) { PTR p; - char * ep; - WORD attr, esiz; - WORD line, file; - LONG loc; for(; ch!=NULL;) { p.cp = ch->chptr; - ep = ch->chptr + ch->ch_size; + uint8_t * ep = ch->chptr + ch->ch_size; while (p.cp < ep) { - attr = *p.wp++; - loc = *p.lp++; - file = *p.wp++; - line = *p.wp++; + uint16_t attr = *p.wp++; + uint32_t loc = *p.lp++; + uint16_t file = *p.wp++; + uint16_t line = *p.wp++; - printf("$%04x $%08ux %d.%d: ", (int)attr, loc, (int)file, (int)line); + printf("$%04X $%08X %d.%d: ", (int)attr, loc, (int)file, (int)line); if (attr & FU_EXPR) { - esiz = *p.wp++; + uint16_t esiz = *p.wp++; printf("(%d long) ", (int)esiz); p.tk = printexpr(p.tk); } else { - printf("`%s' ;\n", (*p.sy)->sname); + printf("`%s' ;", (*p.sy)->sname); p.sy++; } + + if ((attr & 0x0F00) == FU_JR) + { + printf(" *=$%X", *p.lp); + p.lp++; + } + + printf("\n"); } ch = ch->chnext; @@ -143,14 +145,11 @@ int mudump(void) for(mch=firstmch; mch!=NULL; mch=mch->mcnext) { - printf("mch=$%08ux mcptr=$%08ux mcalloc=$%ux mcused=$%x\n", - (uint32_t)mch, - (mch->mcptr.lw), - mch->mcalloc, - (mch->mcused)); + printf("mch=$%p mcptr=$%08X mcalloc=$%X mcused=$%X\n", + mch, (mch->mcptr.lw), mch->mcalloc, (mch->mcused)); p = mch->mcptr; - + for(;;) { w = *p.wp++; @@ -167,8 +166,8 @@ int mudump(void) if (w & MSYMBOL) symbol = *p.sy++; - printf("m=$%04x to=%d loc=$%ux from=%d siz=%s", - w, w & 0x00ff, loc, from, (w & MLONG) ? "long" : "word"); + printf("m=$%04X to=%d loc=$%X from=%d siz=%s", + w, w & 0x00FF, loc, from, (w & MLONG) ? "long" : "word"); if (symbol != NULL) printf(" sym=`%s'", symbol->sname); @@ -182,12 +181,14 @@ int mudump(void) // -// Dump memory from 'start' for 'count' bytes; `flg' is the following ORed together: +// Dump memory from 'start' for 'count' bytes; `flg' is the following ORed +// together: // 0 - bytes // 1 - words // 2 - longwords -// -// if `base' is not -1, then print it at the start of each line, incremented accordingly. +// +// if `base' is not -1, then print it at the start of each line, incremented +// accordingly. // int mdump(char * start, LONG count, int flg, LONG base) { @@ -202,7 +203,7 @@ int mdump(char * start, LONG count, int flg, LONG base) { printf(" "); - while(j < i) + while (j < i) visprt(start[j++]); putchar('\n'); @@ -211,21 +212,21 @@ int mdump(char * start, LONG count, int flg, LONG base) j = i; if (base != -1) - printf("%08ux ", base); + printf("%08X ", base); } switch (flg & 3) { case 0: - printf("%02x ", start[i] & 0xff); - ++i; + 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, + printf("%02X%02X%02X%02X ", start[i] & 0xff, start[i+1] & 0xff, start[i+2] & 0xff, start[i+3] & 0xff); i += 4; break; @@ -237,18 +238,18 @@ int mdump(char * start, LONG count, int flg, LONG base) base += 1 << (flg & 3); } - // Print remaining bit of ascii; the hairy expression computes the number of - // spaces to print to make the ascii line up nicely. + // Print remaining bit of ASCII; the hairy expression computes the number + // of spaces to print to make the ASCII line up nicely. if (j != i) { k = ((16 - (i - j)) / (1 << (flg & 3))) * siztab[flg & 3]; - while(k--) + while (k--) putchar(' '); printf(" "); - while(j < i) + while (j < i) visprt(start[j++]); putchar('\n'); @@ -272,48 +273,46 @@ int dumptok(TOKEN * tk) if (*tk >= 128) { - printf("REG=%ud", *tk++ - 128); + printf("REG=%u", *tk++ - 128); continue; } switch ((int)*tk++) { case CONST: // CONST - printf("CONST=%ud", *tk++); + printf("CONST=%u", *tk++); break; case STRING: // STRING
-// printf("STRING='%s'", (char *)*tk++); printf("STRING='%s'", string[*tk++]); break; - case SYMBOL: // SYMBOL
-// printf("SYMBOL='%s'", (char *)*tk++); + case SYMBOL: // SYMBOL
printf("SYMBOL='%s'", string[*tk++]); break; - case EOL: // End of line + case EOL: // End of line printf("EOL"); break; case TKEOF: // End of file (or macro) printf("TKEOF"); break; - case DEQUALS: // == + case DEQUALS: // == printf("DEQUALS"); break; - case DCOLON: // :: + case DCOLON: // :: printf("DCOLON"); break; - case GE: // >= + case GE: // >= printf("GE"); break; - case LE: // <= + case LE: // <= printf("LE"); break; - case NE: // <> or != + case NE: // <> or != printf("NE"); break; - case SHR: // >> + case SHR: // >> printf("SHR"); break; - case SHL: // << + case SHL: // << printf("SHL"); break; default: @@ -329,17 +328,15 @@ int dumptok(TOKEN * tk) // -// Dump Everything +// Dump everything // int dump_everything(void) { - int i; - - for(i=1; i