]> Shamusworld >> Repos - rmac/commitdiff
Files missed in the last commit. :-P v2.2.11
authorShamus Hammons <jlhamm@acm.org>
Wed, 21 Dec 2022 22:37:53 +0000 (16:37 -0600)
committerShamus Hammons <jlhamm@acm.org>
Wed, 21 Dec 2022 22:37:53 +0000 (16:37 -0600)
6502.h
direct.c
object.c
rmac.c
rmac.h
version.h

diff --git a/6502.h b/6502.h
index bddf06585c3a1aeabaaecff0f2faa23c752a6977..453c66b4b08dc6a48c87957af143734223b722a9 100644 (file)
--- a/6502.h
+++ b/6502.h
@@ -19,6 +19,8 @@ extern void Init6502();
 extern int d_6502();
 extern void m6502cg(int op);
 extern void m6502obj(int ofd);
+extern void m6502raw(int ofd);
+extern void m6502c64(int ofd);
 
 #endif // __6502_H__
 
index 24c3d93d4f1d029941c600019861fc908ff3cdd7..684607f522ad6456f004032e9fe0c936c4826e33 100644 (file)
--- a/direct.c
+++ b/direct.c
@@ -628,11 +628,13 @@ allright:
        {
                // Parse size and position parameters
                uint64_t requested_size = -1;   // -1 means "not set" for these two
+
                if (*tok++ != ',')
                {
                        close(fd);
                        return error("expected comma after incbin filename");
                }
+
                if (tok != EOL)
                {
                        if (*tok != ',')
@@ -642,12 +644,14 @@ allright:
                                        close(fd);
                                        return ERROR;
                                }
+
                                if ((int64_t)requested_size <= 0 || requested_size > size)
                                {
                                        close(fd);
                                        return error("invalid incbin size requested");
                                }
                        }
+
                        if (*tok != EOL)
                        {
                                if (*tok++ != ',')
@@ -655,6 +659,7 @@ allright:
                                        close(fd);
                                        return error("expected comma after size parameter");
                                }
+
                                if (*tok != EOL)
                                {
                                        if (abs_expr(&pos) != OK)
@@ -662,6 +667,7 @@ allright:
                                                close(fd);
                                                return ERROR;
                                        }
+
                                        if ((int64_t)pos <= 0 || pos > size)
                                        {
                                                close(fd);
@@ -682,7 +688,7 @@ allright:
                {
                        requested_size = size - pos;
                }
-               
+
                // Are we going to read past the end of the file?
                if (pos + requested_size > size)
                {
@@ -1215,7 +1221,7 @@ int d_ds(WORD siz)
 
        if (expr(exprbuf, &eval, &eattr, NULL) < 0)
                return ERROR;
-       
+
        // Check to see if the value being passed in is negative (who the hell does
        // that?--nobody does; it's the code gremlins, or rum, what does it)
        // N.B.: Since 'eval' is of type uint64_t, if it goes negative, it will
index 78c225fdd1e0e23e6f43d96dd961cecae3c497a5..f7ac8a79cda5cfde83d6bbced6cb0c27cbfa9a46 100644 (file)
--- a/object.c
+++ b/object.c
@@ -831,6 +831,11 @@ for(int j=0; j<i; j++)
                // Just write the object file
                m6502obj(fd);
        }
+       else if (obj_format == C64PRG)
+       {
+               // Just write the object file
+               m6502c64(fd);
+       }
        else if (obj_format == P56 || obj_format == LOD)
        {
                // Allocate 6MB object file image memory
diff --git a/rmac.c b/rmac.c
index f88f849a77963ed5ad5b2842dd83b7d1eb2ee2a9..d9158f4c82e63016daa6bd8c4e36655ece011c1d 100644 (file)
--- a/rmac.c
+++ b/rmac.c
@@ -163,6 +163,7 @@ void DisplayHelp(void)
                "  -f[format]        Output object file format\n"
                "                    a: ALCYON\n"
                "                    b: BSD (use this for Jaguar)\n"
+               "                    c: PRG (C64)\n"
                "                    e: ELF\n"
                "                    p: P56 (use this for DSP56001 only)\n"
                "                    l: LOD (use this for DSP56001 only)\n"
@@ -443,6 +444,10 @@ int Process(int argc, char ** argv)
                                case 'B':
                                        obj_format = BSD;
                                        break;
+                               case 'c':
+                               case 'C':
+                                       obj_format = C64PRG;
+                                       break;
                                case 'e':                       // -fe = ELF
                                case 'E':
                                        obj_format = ELF;
diff --git a/rmac.h b/rmac.h
index 5f230909af12860ee90cc3564c634ea737847c71..3f8675c6599216b313261fec1799b548f3979790 100644 (file)
--- a/rmac.h
+++ b/rmac.h
@@ -198,6 +198,7 @@ LOD,                                // DSP 56001 object format
 P56,                           // DSP 56001 object format
 XEX,                           // COM/EXE/XEX/whatever a8 object format
 RAW,                           // Output at absolute address
+C64PRG,                                // C64 .PRG format
 };
 
 // Assembler token
index efe041e1bf4ce738bb480f7e32e7836851b22bcf..c84dae51ebf81349a6a85926f474e98be5507ce3 100644 (file)
--- a/version.h
+++ b/version.h
@@ -15,6 +15,6 @@
 
 #define MAJOR   2              // Major version number
 #define MINOR   2              // Minor version number
-#define PATCH                // Patch release number
+#define PATCH   11             // Patch release number
 
 #endif // __VERSION_H__