]> Shamusworld >> Repos - rmac/blobdiff - rmac.c
The deed has been accomplished.
[rmac] / rmac.c
diff --git a/rmac.c b/rmac.c
index 199cff759e18ba3aea3c64aa25eb39fce21051a5..3f021e7c495713f187d4193fd25a18bc5d191d7d 100644 (file)
--- a/rmac.c
+++ b/rmac.c
@@ -1,7 +1,7 @@
 //
 // RMAC - Reboot's Macro Assembler for all Atari computers
 // RMAC.C - Main Application Code
-// Copyright (C) 199x Landon Dyer, 2011-2018 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2019 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
@@ -10,6 +10,7 @@
 #include "6502.h"
 #include "debug.h"
 #include "direct.h"
+#include "dsp56k.h"
 #include "error.h"
 #include "expr.h"
 #include "listing.h"
@@ -148,6 +149,8 @@ void DisplayHelp(void)
                "                    a: ALCYON (use this for ST)\n"
                "                    b: BSD (use this for Jaguar)\n"
                "                    e: ELF\n"
+               "                    p: P56 (use this for DSP56001 only)\n"
+               "                    l: LOD (use this for DSP56001 only)\n"
                "                    x: com/exe/xex (Atari 800)\n"
                "  -i[path]          Directory to search for include files\n"
                "  -l[filename]      Create an output listing file\n"
@@ -161,6 +164,7 @@ void DisplayHelp(void)
                "                    6502\n"
                "                    tom\n"
                "                    jerry\n"
+               "                    56001\n"
                "  -n                Don't do things behind your back in RISC assembler\n"
                "  -o file           Output file name\n"
                "  +o[value]         Turn a specific optimisation on\n"
@@ -209,7 +213,7 @@ void DisplayVersion(void)
                "| |  | | | | | | (_| | (__ \n"
                "|_|  |_| |_| |_|\\__,_|\\___|\n"
                "\nReboot's Macro Assembler\n"
-               "Copyright (C) 199x Landon Dyer, 2011-2017 Reboot\n"
+               "Copyright (C) 199x Landon Dyer, 2011-2018 Reboot\n"
                "V%01i.%01i.%01i %s (%s)\n\n", MAJOR, MINOR, PATCH, __DATE__, PLATFORM);
 }
 
@@ -358,6 +362,14 @@ int Process(int argc, char ** argv)
                                case 'E':
                                        obj_format = ELF;
                                        break;
+                case 'l':           // -fl = LOD
+                case 'L':
+                    obj_format = LOD;
+                    break;
+                case 'p':           // -fp = P56
+                case 'P':
+                    obj_format = P56;
+                                       break;
                                case 'x':                       // -fx = COM/EXE/XEX
                                case 'X':
                                        obj_format = XEX;
@@ -588,6 +600,7 @@ int Process(int argc, char ** argv)
        //    -  "foo.o" for linkable output;
        //    -  "foo.prg" for GEMDOS executable (-p flag).
        SaveSection();
+       int temp_section = cursect;
 
        for(i=TEXT; i<=BSS; i<<=1)
        {
@@ -613,6 +626,20 @@ int Process(int argc, char ** argv)
                currentorg += 2;
        }
 
+       // This looks like an awful kludge...  !!! FIX !!!
+       if (temp_section & (M56001P | M56001X | M56001Y))
+       {
+               SwitchSection(temp_section);
+
+               if (chptr != dsp_currentorg->start)
+               {
+                       dsp_currentorg->end = chptr;
+                       dsp_currentorg++;
+               }
+       }
+
+       SwitchSection(TEXT);
+
        if (objfname == NULL)
        {
                if (firstfname == NULL)
@@ -635,7 +662,7 @@ int Process(int argc, char ** argv)
        if (errcnt == 0)
        {
                if ((fd = open(objfname, _OPEN_FLAGS, _PERM_MODE)) < 0)
-                       cantcreat(objfname);
+                       CantCreateFile(objfname);
 
                if (verb_flag)
                {