]> Shamusworld >> Repos - rmac/blobdiff - amode.c
Version bump for last commit. :-)
[rmac] / amode.c
diff --git a/amode.c b/amode.c
index 8ac53920d1343d9dc6f3099274a46306c86ded6c..6fd353849b7f7acf287f28aeda2d42763a78cfa9 100644 (file)
--- a/amode.c
+++ b/amode.c
@@ -1,7 +1,7 @@
 //
-// RMAC - Reboot's Macro Assembler for all Atari computers
+// RMAC - Renamed Macro Assembler for all Atari computers
 // AMODE.C - Addressing Modes
-// Copyright (C) 199x Landon Dyer, 2011-2019 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
@@ -15,8 +15,8 @@
 #include "sect.h"
 #include "token.h"
 
-#define DEF_KW
-#include "kwtab.h"
+#define DEF_REG68
+#include "68kregs.h"
 #define DEF_MN
 #include "mntab.h"
 
@@ -31,9 +31,6 @@ uint64_t a0exval;                     // Expression's value
 WORD a0exattr;                         // Expression's attribute
 int a0ixreg;                           // Index register
 int a0ixsiz;                           // Index register size (and scale)
-TOKEN a0oexpr[EXPRSIZE];       // Outer displacement expression
-uint64_t a0oexval;                     // Outer displacement value
-WORD a0oexattr;                                // Outer displacement attribute
 SYM * a0esym;                          // External symbol involved in expr
 TOKEN a0bexpr[EXPRSIZE];       // Base displacement expression
 uint64_t a0bexval;                     // Base displacement value
@@ -49,9 +46,6 @@ uint64_t a1exval;                     // Expression's value
 WORD a1exattr;                         // Expression's attribute
 int a1ixreg;                           // Index register
 int a1ixsiz;                           // Index register size (and scale)
-TOKEN a1oexpr[EXPRSIZE];       // Outer displacement expression
-uint64_t a1oexval;                     // Outer displacement value
-WORD a1oexattr;                                // Outer displacement attribute
 SYM * a1esym;                          // External symbol involved in expr
 TOKEN a1bexpr[EXPRSIZE];       // Base displacement expression
 uint64_t a1bexval;                     // Base displacement value
@@ -83,8 +77,8 @@ int amode(int acount)
        // Initialize global return values
        nmodes = a0reg = a1reg = 0;
        am0 = am1 = AM_NONE;
-       a0expr[0] = a0oexpr[0] = a1expr[0] = a1oexpr[0] = ENDEXPR;
-       a0exattr = a0oexattr = a1exattr = a1oexattr = 0;
+       a0expr[0] = a1expr[0] = ENDEXPR;
+       a0exattr = a1exattr = 0;
        a0esym = a1esym = NULL;
        a0bexpr[0] = a1bexpr[0] = ENDEXPR;
        a0bexval = a1bexval = 0;
@@ -108,9 +102,6 @@ int amode(int acount)
        #define AnEXPR    a0expr
        #define AnEXVAL   a0exval
        #define AnEXATTR  a0exattr
-       #define AnOEXPR   a0oexpr
-       #define AnOEXVAL  a0oexval
-       #define AnOEXATTR a0oexattr
        #define AnESYM    a0esym
        #define AMn_IX0   am0_ix0
        #define AMn_IXN   am0_ixn
@@ -150,9 +141,6 @@ int amode(int acount)
        #define AnEXPR    a1expr
        #define AnEXVAL   a1exval
        #define AnEXATTR  a1exattr
-       #define AnOEXPR   a1oexpr
-       #define AnOEXVAL  a1oexval
-       #define AnOEXATTR a1oexattr
        #define AnESYM    a1esym
        #define AMn_IX0   am1_ix0
        #define AMn_IXN   am1_ixn
@@ -183,9 +171,9 @@ int amode(int acount)
                // TODO: protect this from combinations like Dx:FPx etc :)
                tok++;  //eat the colon
 
-               if ((*tok >= KW_D0) && (*tok <= KW_D7))
+               if ((*tok >= REG68_D0) && (*tok <= REG68_D7))
                        a2reg = (*tok++) & 7;
-               else if ((*tok >= KW_FP0) && (*tok <= KW_FP7))
+               else if ((*tok >= REG68_FP0) && (*tok <= REG68_FP7))
                        a2reg = (*tok++) & 7;
                else
                        return error("a data or FPU register must follow a :");
@@ -223,7 +211,7 @@ int reglist(WORD * a_rmask)
 
        for(;;)
        {
-               if ((*tok >= KW_D0) && (*tok <= KW_A7))
+               if ((*tok >= REG68_D0) && (*tok <= REG68_A7))
                        r = *tok++ & 0x0F;
                else
                        break;
@@ -232,7 +220,7 @@ int reglist(WORD * a_rmask)
                {
                        tok++;
 
-                       if ((*tok >= KW_D0) && (*tok <= KW_A7))
+                       if ((*tok >= REG68_D0) && (*tok <= REG68_A7))
                                cnt = *tok++ & 0x0F;
                        else
                                return error("register list syntax");
@@ -275,7 +263,7 @@ int fpu_reglist_left(WORD * a_rmask)
 
        for(;;)
        {
-               if ((*tok >= KW_FP0) && (*tok <= KW_FP7))
+               if ((*tok >= REG68_FP0) && (*tok <= REG68_FP7))
                        r = *tok++ & 0x07;
                else
                        break;
@@ -284,7 +272,7 @@ int fpu_reglist_left(WORD * a_rmask)
                {
                        tok++;
 
-                       if ((*tok >= KW_FP0) && (*tok <= KW_FP7))
+                       if ((*tok >= REG68_FP0) && (*tok <= REG68_FP7))
                                cnt = *tok++ & 0x07;
                        else
                                return error("register list syntax");
@@ -326,7 +314,7 @@ int fpu_reglist_right(WORD * a_rmask)
 
        for(;;)
        {
-               if ((*tok >= KW_FP0) && (*tok <= KW_FP7))
+               if ((*tok >= REG68_FP0) && (*tok <= REG68_FP7))
                        r = *tok++ & 0x07;
                else
                        break;
@@ -335,7 +323,7 @@ int fpu_reglist_right(WORD * a_rmask)
                {
                        tok++;
 
-                       if ((*tok >= KW_FP0) && (*tok <= KW_FP7))
+                       if ((*tok >= REG68_FP0) && (*tok <= REG68_FP7))
                                cnt = *tok++ & 0x07;
                        else
                                return error("register list syntax");
@@ -397,7 +385,7 @@ int Check030Bitfield(void)
                // Do=0, offset=immediate - shift it to place
                bfparam1 = (0 << 11);
        }
-       else if ((*tok >= KW_D0) && (*tok <= KW_D7))
+       else if ((*tok >= REG68_D0) && (*tok <= REG68_D7))
        {
                // Do=1, offset=data register - shift it to place
                bfparam1 = (1 << 11);
@@ -440,7 +428,7 @@ int Check030Bitfield(void)
                // Do=0, offset=immediate - shift it to place
                bfparam2 = (0 << 5);
        }
-       else if ((*tok >= KW_D0) && (*tok <= KW_D7))
+       else if ((*tok >= REG68_D0) && (*tok <= REG68_D7))
        {
                // Do=1, offset=data register - shift it to place
                bfval2 = (*(int *)tok - 128);