psymbol->flags |= pdot->flags;
psymbol->value = pdot->value;
+#if TRANSLATE
+ // reset locals
+ xlabnext = 0;
+ memset(xlabb, 0xff, 10 * sizeof(int));
+ memset(xlabf, 0xff, 10 * sizeof(int));
+#endif
continue;
/* 3: */
xlabf[label] = -1;
}
xlabb[label] = xlab;
- if (xstartp >= xbuf + 0xff0)
+ if (xstartpsave >= xbuf + 0xff0)
abort();
- xbufp = xstartpsave + sprintf(xstartpsave, "_%d:", xlab);
+ xbufp = xstartpsave + sprintf(xstartpsave, "%d$:", xlab);
#endif
/* cmp fbfree,$4 / room for another fb entry? */
/* add r0,r1 */
/* br 1b */
+#ifdef TRANSLATE
+ xstartp = xbufp;
+#endif
while (1) {
c = rch();
if (c < '0' || c > '9')
if (c == 'b' || c == 'f')
goto label;
if (c == '.') {
+#ifdef TRANSLATE
+ if (xstartp >= xbuf + 0xff0)
+ abort();
+ xbufp = xstartp + sprintf(xstartp, "%d", decimal);
+#endif
octal = decimal;
c = 0;
}
+#ifdef TRANSLATE
+ else {
+ if (xstartp >= xbuf + 0xff0)
+ abort();
+ xbufp = xstartp + sprintf(xstartp, "%s%o", (octal & ~7) ? "0o" : "", octal);
+ }
+#endif
/* movb r0,ch */
/* mov r1,r0 */
ch = c;
-#ifdef TRANSLATE
- if (xbufp <= xbuf)
- abort();
- --xbufp;
+#if 0 //def TRANSLATE
+ if (c) {
+ if (xbufp <= xbuf)
+ abort();
+ --xbufp;
+ }
#endif
/* if (ch) printf("b push 0x%02x\n", ch); */
numbervalue = octal;
abort();
switch (flags) {
case FDOTTEXT:
- xbufp = xstartp + sprintf(xstartp, ".area TEXT");
+ xbufp = xstartp + sprintf(xstartp, ".area text");
break;
case FDOTDATA:
- xbufp = xstartp + sprintf(xstartp, ".area DATA");
+ xbufp = xstartp + sprintf(xstartp, ".area data");
break;
case FDOTBSS:
- xbufp = xstartp + sprintf(xstartp, ".area BSS");
+ xbufp = xstartp + sprintf(xstartp, ".area bss");
break;
}
#endif
#ifdef TRANSLATE
if (xstartp >= xbuf + 0xff0)
abort();
- xbufp = xstartp + sprintf(xstartp, "_%d", xlabb[token - TLABEL]);
+ xbufp = xstartp + sprintf(xstartp, "%d$", xlabb[token - TLABEL]);
#endif
rightflags = curfbr[token - TLABEL];
/* bug!! should be rightvalue / rightflags below: */
xlabf[xlab] = xlabnext++;
if (xstartp >= xbuf + 0xff0)
abort();
- xbufp = xstartp + sprintf(xstartp, "_%d", xlabf[xlab]);
+ xbufp = xstartp + sprintf(xstartp, "%d$", xlabf[xlab]);
}
#endif
leftflags = 0;