- p = (char *)tok[1];
- j = 0;
-
- if (*p == '.')
- j = curenv;
-
- sy = lookup(p, LABEL, j);
-
- if (sy == NULL)
- sy = newsym(p, LABEL, j);
-
- sy->sattr |= REFERENCED;
+ p = string[tok[1]];
+ j = (*p == '.' ? curenv : 0);
+ symbol = lookup(p, LABEL, j);
+#if 0
+printf("eval: Looking up symbol (%s) [=%08X]\n", p, symbol);
+if (symbol)
+ printf(" attr=%04X, attre=%08X, val=%i, name=%s\n", symbol->sattr, symbol->sattre, symbol->svalue, symbol->sname);
+#endif
+
+ if (symbol == NULL)
+ symbol = NewSymbol(p, LABEL, j);
+
+ symbol->sattr |= REFERENCED;
+
+ // Check for undefined register equates, but only if it's not part
+ // of a #<SYMBOL> construct, as it could be that the label that's
+ // been undefined may later be used as an address label--which
+ // means it will be fixed up later, and thus, not an error.
+ if ((symbol->sattre & UNDEF_EQUR) && !riscImmTokenSeen)
+ {
+ error("undefined register equate '%s'", symbol->sname);
+//if we return right away, it returns some spurious errors...
+// return ERROR;
+ }