]> git.sur5r.net Git - cc65/commitdiff
Remove .FEATURE requirement and add documentation
authorJT <jeremiah.turner@gmail.com>
Tue, 19 May 2015 04:06:12 +0000 (00:06 -0400)
committerJT <jeremiah.turner@gmail.com>
Tue, 19 May 2015 04:06:12 +0000 (00:06 -0400)
doc/ca65.sgml
src/ca65/expr.c
src/ca65/feature.c
src/ca65/feature.h
src/ca65/global.c
src/ca65/global.h
src/ca65/scanner.c

index 03aa72097b7b6d0d842be7c8e69bc18c5724a0ec..52dcccc6b16634dc3ed1a5c240875c482baa5b02 100644 (file)
@@ -2316,6 +2316,24 @@ Here's a list of all control commands and a description, what they do:
   </verb></tscreen>
 
 
+<sect1><tt>.DEFINEDINSTR</tt><label id=".DEFINEDINSTR"><p>
+
+  Builtin function. The function expects an identifier as argument in braces.
+  The argument is evaluated, and the function yields "true" if the identifier
+  is defined as an instruction mnemonic that is recognized by the assembler.
+  Example:
+
+  <tscreen><verb>
+       .if     .not .definedinstr(ina)
+               .macro ina
+                       clc
+                       adc #$01
+               .endmacro
+       .endif
+
+  </verb></tscreen>
+
+
 <sect1><tt>.DESTRUCTOR</tt><label id=".DESTRUCTOR"><p>
 
   Export a symbol and mark it as a module destructor. This may be used
index 969028f10075e495662145f5edffc8789b4f9ac2..9bccc62f2082cbb0797efc3b9a215253202cd6eb 100644 (file)
@@ -421,26 +421,27 @@ static ExprNode* FuncDefined (void)
 static ExprNode* FuncDefinedInstr (void)
 /* Handle the .DEFINEDINSTR builtin function */
 {
-    int           Instr = 0;
+    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) {
+            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);
+            Instr = FindInstruction (&CurTok.SVal);
         }
-        NextTok();
     } else {
-        Error("Idenitifier expected.");
+        Error ("Idenitifier expected.");
     }
+    /* Skip the name */
+    NextTok ();
 
-    return GenLiteralExpr(Instr > 0);
+    return GenLiteralExpr (Instr > 0);
 }
 
 
index 2a29b5e8f151797e113417e42b17ae746fa6354a..3462d5501c30848cf3d29d3f9c2cd45938c87fe5 100644 (file)
@@ -64,7 +64,6 @@ static const char* FeatureKeys[FEAT_COUNT] = {
     "force_range",
     "underline_in_numbers",
     "addrsize",
-    "definedinstr",
 };
 
 
@@ -122,7 +121,6 @@ feature_t SetFeature (const StrBuf* Key)
         case FEAT_FORCE_RANGE:                ForceRange        = 1;    break;
         case FEAT_UNDERLINE_IN_NUMBERS:       UnderlineInNumbers= 1;    break;
         case FEAT_ADDRSIZE:                   AddrSize          = 1;    break;
-        case FEAT_DEFINEDINSTR:               DefinedInstr      = 1;    break;
         default:                         /* Keep gcc silent */          break;
     }
 
index d5d4d9d237386f98329f92d6152fe89c0062a926..3a520a54a3e2ff5eee997eb6214035b7f41490e9 100644 (file)
@@ -66,7 +66,6 @@ typedef enum {
     FEAT_FORCE_RANGE,
     FEAT_UNDERLINE_IN_NUMBERS,
     FEAT_ADDRSIZE,
-    FEAT_DEFINEDINSTR,
 
     /* Special value: Number of features available */
     FEAT_COUNT
index a1f29bc3876920aab96d1c5026924d252e4b1f97..77ed66e7f5306d4fa4d1cb2c9f0ca9fb1d7105ee 100644 (file)
@@ -83,4 +83,3 @@ unsigned char CComments          = 0;   /* Allow C like comments */
 unsigned char ForceRange         = 0;   /* Force values into expected range */
 unsigned char UnderlineInNumbers = 0;   /* Allow underlines in numbers */
 unsigned char AddrSize           = 0;   /* Allow .ADDRSIZE function */
-unsigned char DefinedInstr       = 0;   /* Allow .DEFINEDINSTR function */
index 4939f8edf9d7b528dbd0ff6f62cca9308a662f90..fb254f835342f13a07379c36ab0555395c4c66ec 100644 (file)
@@ -85,7 +85,6 @@ extern unsigned char    CComments;          /* Allow C like comments */
 extern unsigned char    ForceRange;         /* Force values into expected range */
 extern unsigned char    UnderlineInNumbers; /* Allow underlines in numbers */
 extern unsigned char    AddrSize;           /* Allow .ADDRSIZE function */
-extern unsigned char    DefinedInstr;       /* Allow .DEFINEDINSTR function */
 
 
 
index 801790fa0634630ce1db5e00ab2b6072a174192c..4d7927c1c0e8bd4179719341644e72b76e5de922 100644 (file)
@@ -737,13 +737,6 @@ static token_t FindDotKeyword (void)
                 }
                 break;
 
-            case TOK_DEFINEDINSTR:
-                /* Disallow .DEFINEDINSTR function by default */
-                if (DefinedInstr == 0) {
-                    return TOK_NONE;
-                }
-                break;
-
             default:
                 break;
         }