]> Shamusworld >> Repos - rmac/blobdiff - rmac.h
Version bump for last commit. :-)
[rmac] / rmac.h
diff --git a/rmac.h b/rmac.h
index a23acafd77a251bf76c4254c3c01af917c995448..48a6545c6d9ac0849b417d23ecd5a97575675cd2 100644 (file)
--- a/rmac.h
+++ b/rmac.h
@@ -1,7 +1,7 @@
 //
 // RMAC - Renamed Macro Assembler for all Atari computers
 // RMAC.H - Main Application Code
-// Copyright (C) 199x Landon Dyer, 2011-2021 Reboot and Friends
+// Copyright (C) 199x Landon Dyer, 2011-2022 Reboot and Friends
 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
 // Source utilised with the kind permission of Landon Dyer
 //
 #if defined(WIN32) || defined(WIN64)
        #include <io.h>
        #include <fcntl.h>
+       #include "dirent_lose.h"
        // Release platform - windows
        #define PLATFORM        "Win32"
        #define _OPEN_FLAGS     _O_TRUNC|_O_CREAT|_O_BINARY|_O_RDWR
        #define _OPEN_INC       _O_RDONLY|_O_BINARY
        #define _PERM_MODE      _S_IREAD|_S_IWRITE
     #define PATH_SEPS       ";"
+    #define realpath(_fn, _abs) _fullpath((_abs), (_fn), _MAX_PATH)
 
        #ifdef _MSC_VER
                #if _MSC_VER > 1000
 
        #endif
 
+       // Ever since Visual Studio... 2017? 2019? the following constants come
+       // defined in the platform SDK, which leads to endless warnings from the
+       // compiler. So let's just put the pacifier on and undef them, sheesh! (No,
+       // we won't rename the defines, we've been here since 1986, Visual Studio
+       // wasn't even a glimpse in the milkman's eyes, if you catch my drift)
+       #undef CONST
+       #undef ERROR
+       #undef TEXT
+
 #else
 
+       #include <dirent.h>
+
        #ifdef __GCCUNIX__
 
        #include <sys/fcntl.h>
 // Non-target specific stuff
 //
 #include <inttypes.h>
-#include <dirent.h>
 #include "symbol.h"
 
-#if defined(WIN32) || defined(WIN64)
-// Ever since Visual Studio... 2017? 2019? the following constants come defined in the
-// platform SDK, which leads to endless warnings from the compiler. So let's just
-// put the pacifier on and undef them, sheesh! (No, we won't rename the defines,
-// we've been here since 1986, Visual Studio wasn't even a glimpse in the milkman's eyes,
-// if you catch my drift)
-#undef CONST
-#undef ERROR
-#undef TEXT
-#endif
-
 #define BYTE         uint8_t
 #define WORD         uint16_t
 #define LONG         uint32_t
@@ -197,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
@@ -222,6 +224,7 @@ PTR
 #define LABEL        0                 // User-defined symbol
 #define MACRO        1                 // Macro definition
 #define MACARG       2                 // Macro argument
+#define DBGSYM       3                 // stabs debug symbol
 #define SY_UNDEF     -1                        // Undefined (lookup never matches it)
 
 // Symbol and expression attributes
@@ -259,38 +262,12 @@ PTR
 #define SIZP         0x0080            // .p (FPU pakced decimal real)
 #define SIZQ         0x0100            // .q (quad word)
 
-// RISC register bank definitions (used in extended symbol attributes also)
-#define BANK_N       0x0000            // No register bank specified
-#define BANK_0       0x0001            // Register bank zero specified
-#define BANK_1       0x0002            // Register bank one specified
+// Extended attributes
 #define EQUATEDREG   0x0008            // Equated register symbol
 #define UNDEF_EQUR   0x0010
 #define EQUATEDCC    0x0020
 #define UNDEF_CC     0x0040
 
-// Construct binary constants at compile time
-// Code by Tom Torfs
-
-// Helper macros
-#define HEX__(n) 0x##n##LU
-#define B8__(x) \
- ((x&0x0000000FLU)?1:0) \
-+((x&0x000000F0LU)?2:0) \
-+((x&0x00000F00LU)?4:0) \
-+((x&0x0000F000LU)?8:0) \
-+((x&0x000F0000LU)?16:0) \
-+((x&0x00F00000LU)?32:0) \
-+((x&0x0F000000LU)?64:0) \
-+((x&0xF0000000LU)?128:0)
-
-// User macros
-#define B8(d) ((uint8_t)B8__(HEX__(d)))
-#define B16(dmsb,dlsb) (((uint16_t)B8(dmsb)<<8) + B8(dlsb))
-#define B32(dmsb,db2,db3,dlsb) (((uint32_t)B8(dmsb)<<24) \
-+ ((uint32_t)B8(db2)<<16) \
-+ ((uint32_t)B8(db3)<<8) \
-+ B8(dlsb))
-
 // Optimisation defines
 enum
 {
@@ -321,7 +298,6 @@ extern int robjproc;
 extern int dsp56001;
 extern int err_flag;
 extern int err_fd;
-extern int regbank;
 extern char * firstfname;
 extern int list_fd;
 extern int list_pag;
@@ -329,6 +305,7 @@ extern int m6502;
 extern int list_flag;
 extern int glob_flag;
 extern int lsym_flag;
+extern int dsym_flag;
 extern int optim_warn_flag;
 extern int obj_format;
 extern int legacy_flag;
@@ -339,6 +316,11 @@ extern int activecpu;
 extern int activefpu;
 extern uint32_t org68k_address;
 extern int org68k_active;
+extern int *regbase;
+extern int *regtab;
+extern int *regcheck;
+extern int *regaccept;
+extern uint32_t used_architectures;
 
 // Exported functions
 void strtoupper(char * s);