]> Shamusworld >> Repos - rmac/blobdiff - procln.c
Minor changes and version bump for prior commit; now at v2.0.5.
[rmac] / procln.c
index 8917004b258d4cc6e74b7f2f6ecb751723486222..86b0e6fc8755510ed11932933e9fdf3096f1df9a 100644 (file)
--- a/procln.c
+++ b/procln.c
@@ -53,6 +53,7 @@ int disabled;                                 // Assembly conditionally disabled
 int just_bss;                                  // 1, ds.b in microprocessor mode
 uint32_t pcloc;                                        // Value of "PC" at beginning of line
 SYM * lab_sym;                                 // Label on line (or NULL)
+char * label_defined;                  // The name of the last label defined in current line (if any)
 
 const char extra_stuff[] = "extra (unexpected) text found after addressing mode";
 const char comma_error[] = "missing comma";
@@ -186,6 +187,7 @@ DEBUG { printf("Assemble: Found TKEOF flag...\n"); }
 
        state = -3;                                                             // No keyword (just EOL)
        label = NULL;                                                   // No label
+       label_defined = NULL;                                   // No label defined yet
        lab_sym = NULL;                                                 // No (exported) label
        equate = NULL;                                                  // No equate
        tk = tok;                                                               // Save first token in line
@@ -233,6 +235,8 @@ as68label:
                        if (HandleLabel(label, labtyp) != 0)
                                goto loop;
 
+                       label_defined = label;
+
                        goto as68label;
                }
        }
@@ -363,6 +367,8 @@ as68label:
                                {
                                        if (HandleLabel(label, labtyp) != 0)
                                                goto loop;
+
+                                       label_defined = label;
                                }
 
                                HandleRept();
@@ -597,6 +603,8 @@ When checking to see if it's already been equated, issue a warning.
                // Non-zero == error occurred
                if (HandleLabel(label, labtyp) != 0)
                        goto loop;
+
+               label_defined = label;
        }
 
        // Punt on EOL
@@ -782,24 +790,11 @@ When checking to see if it's already been equated, issue a warning.
                                parcode = 0;
                        }
 
-#if 1
                        while ((dsp_am0 & md->mn0) == 0 || (dsp_am1 & md->mn1) == 0)
                                md = &dsp56k_machtab[md->mncont];
 
                        (*md->mnfunc)(md->mninst | (parcode << 8));
                        goto loop;
-#else
-                       for(;;)
-                       {
-                               if ((dsp_am0 & md->mn0) != 0 && (dsp_am1 & md->mn1) != 0)
-                               {
-                                       (*md->mnfunc)(md->mninst|(parcode << 8));
-                                       goto loop;
-                               }
-
-                               md = &dsp56k_machtab[md->mncont];
-                       }
-#endif
                }
        }