]> Shamusworld >> Repos - rmac/blobdiff - procln.c
Roll back TOKENPTR changes and most of the .u32 changes weren't needed.
[rmac] / procln.c
index 79c0db26f107627ab0826f7dc7b1169e945e6773..2a8c0fdc093eddbdc6bc359f9855413f9bc573bb 100644 (file)
--- a/procln.c
+++ b/procln.c
@@ -39,7 +39,7 @@ static IFENT ifent0;                  // Root ifent
 IFENT * f_ifent;                               // Freelist of ifents
 int disabled;                                  // Assembly conditionally disabled
 int just_bss;                                  // 1, ds.b in microprocessor mode
-VALUE pcloc;                                   // Value of "PC" at beginning of line
+uint32_t pcloc;                                        // Value of "PC" at beginning of line
 SYM * lab_sym;                                 // Label on line (or NULL)
 
 const char extra_stuff[] = "extra (unexpected) text found after addressing mode";
@@ -95,7 +95,7 @@ LONG amsktab[0124] = {
        0L,                             // 0115
        0L,                             // 0116
        0L,                             // 0117
-    M_CACHE40,                                                                     // 0120
+       M_CACHE40,              // 0120
        M_CREG,                 // 0121
        M_FREG,                 // 0122
        M_FPSCR                 // 0123
@@ -131,7 +131,7 @@ void Assemble(void)
        char * equate;                          // Symbol (or NULL)
        int labtyp = 0;                         // Label type (':', DCOLON)
        int equtyp = 0;                         // Equ type ('=', DEQUALS)
-       VALUE eval;                                     // Expression value
+       uint64_t eval;                          // Expression value
        WORD eattr;                                     // Expression attributes
        SYM * esym;                                     // External symbol involved in expr.
        WORD siz = 0;                           // Size suffix to mnem/diretve/macro
@@ -177,7 +177,7 @@ DEBUG { printf("Assemble: Found TKEOF flag...\n"); }
        lab_sym = NULL;                                                 // No (exported) label
        equate = NULL;                                                  // No equate
        tk = tok;                                                               // Save first token in line
-       pcloc = (VALUE)sloc;                                    // Set beginning-of-line PC
+       pcloc = (uint32_t)sloc;                                 // Set beginning-of-line PC
 
 loop1:                                                                         // Internal line processing loop
 
@@ -229,7 +229,7 @@ as68label:
        if (*tok == EOL)
                goto normal;
 
-       // Next token MUST be a symbol
+       // First token MUST be a symbol (if we get here, tok didn't advance)
        if (*tok++ != SYMBOL)
        {
                error("syntax error; expected symbol");
@@ -269,18 +269,17 @@ as68label:
        // Check for ".b" ".w" ".l" after directive, macro or mnemonic.
        siz = SIZN;
 
-    switch (*tok)
-    {
-    case DOTW: siz = SIZW, tok++; break;
-    case DOTL: siz = SIZL, tok++; break;
-    case DOTB: siz = SIZB, tok++; break;
-    case DOTD: siz = SIZD, tok++; break;
-    case DOTP: siz = SIZP, tok++; break;
-    case DOTQ: siz = SIZQ, tok++; break;
-    case DOTS: siz = SIZS, tok++; break;
-    case DOTX: siz = SIZX, tok++; break;
-    }
-
+       switch (*tok)
+       {
+       case DOTW: siz = SIZW, tok++; break;
+       case DOTL: siz = SIZL, tok++; break;
+       case DOTB: siz = SIZB, tok++; break;
+       case DOTD: siz = SIZD, tok++; break;
+       case DOTP: siz = SIZP, tok++; break;
+       case DOTQ: siz = SIZQ, tok++; break;
+       case DOTS: siz = SIZS, tok++; break;
+       case DOTX: siz = SIZX, tok++; break;
+       }
 
        // Do special directives (500..999) (These must be handled in "real time")
        if (state >= 500 && state < 1000)
@@ -467,9 +466,9 @@ When checking to see if it's already been equated, issue a warning.
                                        tok += 3;
 
                                        // Anything other than a 0 or a 1 will result in "No Bank"
-                                       if (*tok == 0)
+                                       if (*(uint64_t *)tok == 0)
                                                registerbank = BANK_0;
-                                       else if (*tok == 1)
+                                       else if (*(uint64_t *)tok == 1)
                                                registerbank = BANK_1;
                                }
 
@@ -521,7 +520,7 @@ When checking to see if it's already been equated, issue a warning.
                        if (reglist(&rmask) < 0)
                                goto loop;
 
-                       eval = (VALUE)rmask;
+                       eval = (uint32_t)rmask;
                        eattr = ABS | DEFINED;
                }
                else if (equtyp == CCDEF)
@@ -576,10 +575,10 @@ When checking to see if it's already been equated, issue a warning.
                }
 
                sy->sattr |= eattr | EQUATED;   // Symbol inherits value and attributes
-               sy->svalue = eval;
+               sy->svalue = (uint32_t)eval;
 
                if (list_flag)                                  // Put value in listing
-                       listvalue(eval);
+                       listvalue((uint32_t)eval);
 
                at_eol();                                               // Must be at EOL now
                goto loop;
@@ -794,4 +793,3 @@ int HandleLabel(char * label, int labelType)
        return 0;
 }
 
-