]> Shamusworld >> Repos - rmac/blobdiff - rmac.c
Added more things to .gitignore. \o/
[rmac] / rmac.c
diff --git a/rmac.c b/rmac.c
index a1ae0bdd5ec4f727a2a0d0b666f0f7b66bfee609..0ae0f6201b9b33c8f3d4f02a4cfd6918da1c9abc 100644 (file)
--- a/rmac.c
+++ b/rmac.c
@@ -43,9 +43,12 @@ int rgpu, rdsp;                                      // Assembling Jaguar GPU or DSP code
 int robjproc;                                  // Assembling Jaguar Object Processor code
 int dsp56001;                                  // Assembling DSP 56001 code
 int list_fd;                                   // File to write listing to
-int regbank;                                   // RISC register bank
 int segpadsize;                                        // Segment padding size
 int endian;                                            // Host processor endianess (0 = LE, 1 = BE)
+int *regbase;                                  // Points to current DFA register table (base)
+int *regtab;                                   // Points to current DFA register table (tab)
+int *regcheck;                                 // Points to current DFA register table (check)
+int *regaccept;                                        // Points to current DFA register table (accept)
 char * objfname;                               // Object filename pointer
 char * firstfname;                             // First source filename
 char * cmdlnexec;                              // Executable name, pointer to ARGV[0]
@@ -285,6 +288,11 @@ int ParseOptimization(char * optstring)
        return OK;
 }
 
+extern int reg68base[53];
+extern int reg68tab[222];
+extern int reg68check[222];
+extern int reg68accept[222];
+
 //
 // Process command line arguments and do an assembly
 //
@@ -316,13 +324,16 @@ int Process(int argc, char ** argv)
        rdsp = 0;                                               // Initialize DSP assembly flag
        robjproc = 0;                                   // Initialize OP assembly flag
        lsym_flag = 1;                                  // Include local symbols in object file
-       regbank = BANK_N;                               // No RISC register bank specified
        orgactive = 0;                                  // Not in RISC org section
        orgwarning = 0;                                 // No ORG warning issued
        segpadsize = 2;                                 // Initialize segment padding size
     dsp_orgmap[0].start = 0;           // Initialize 56001 org initial address
     dsp_orgmap[0].memtype = ORG_P;     // Initialize 56001 org start segment
        m6502 = 0;                                              // 6502 mode off by default
+       regbase = reg68base;                    // Initialise DFA register tables
+       regtab = reg68tab;                              // Idem
+       regcheck = reg68check;                  // Idem
+       regaccept = reg68accept;                // Idem
 
        // Initialize modules
        InitSymbolTable();                              // Symbol table
@@ -776,6 +787,7 @@ int main(int argc, char ** argv)
 {
        perm_verb_flag = 0;                             // Clobber "permanent" verbose flag
        legacy_flag = 1;                                // Default is legacy mode on (:-P)
+       optim_flags[OPT_56K_SHORT] = 1; // This ensures compatibilty with Motorola's 56k assembler
 
        cmdlnexec = argv[0];                    // Obtain executable name
        endian = GetEndianess();                // Get processor endianess