#include "symtab.h"
#include "toklist.h"
#include "ulabel.h"
+#include "macro.h"
+static ExprNode* FuncDefinedInstr (void)
+/* Handle the .DEFINEDINSTR builtin function */
+{
+ int Instr = 0;
+
+ /* Check for a macro or an instruction depending on UbiquitousIdents */
+
+ if (CurTok.Tok == TOK_IDENT) {
+ if (UbiquitousIdents) {
+ /* Macros CAN be instructions, so check for them first */
+ if (FindMacro(&CurTok.SVal) == 0) {
+ Instr = FindInstruction (&CurTok.SVal);
+ }
+ } else {
+ /* Macros and symbols may NOT use the names of instructions, so just check for the instruction */
+ Instr = FindInstruction(&CurTok.SVal);
+ }
+ NextTok();
+ } else {
+ Error("Idenitifier expected.");
+ }
+
+ return GenLiteralExpr(Instr > 0);
+}
+
+
+
ExprNode* FuncHiByte (void)
/* Handle the .HIBYTE builtin function */
{
N = Function (FuncDefined);
break;
+ case TOK_DEFINEDINSTR:
+ N = Function (FuncDefinedInstr);
+ break;
+
case TOK_HIBYTE:
N = Function (FuncHiByte);
break;