]> Shamusworld >> Repos - rmac/blobdiff - rmac.h
.equr overhaul part 3: store and handle banks in .equr evaluation
[rmac] / rmac.h
diff --git a/rmac.h b/rmac.h
index 52fb92ddd355621645fe812b9f60a6839d74baa2..dddaca1011af8b54aeba0063589e9de4adb79619 100644 (file)
--- a/rmac.h
+++ b/rmac.h
@@ -1,7 +1,7 @@
 //
-// RMAC - Reboot's Macro Assembler for all Atari computers
+// RMAC - Renamed Macro Assembler for all Atari computers
 // RMAC.H - Main Application Code
-// Copyright (C) 199x Landon Dyer, 2011-2020 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
 //
@@ -27,6 +27,7 @@
        #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       ";"
 
        #ifdef _MSC_VER
                #if _MSC_VER > 1000
@@ -64,6 +65,7 @@
        #define _OPEN_FLAGS     O_TRUNC|O_CREAT|O_RDWR
        #define _OPEN_INC       O_RDONLY
        #define _PERM_MODE      S_IRUSR|S_IWUSR
+    #define PATH_SEPS       ";:"
 
        #ifdef __MINGW32__
        #define off64_t long
@@ -86,6 +88,7 @@
        #define _OPEN_FLAGS     O_TRUNC|O_CREAT|O_RDWR
        #define _OPEN_INC       O_RDONLY
        #define _PERM_MODE      S_IREAD|S_IWRITE
+    #define PATH_SEPS       ":;"
        // Defined here, even though the platform may not support it...
        #define DO_PRAGMA(x) _Pragma (#x)
        #define WARNING(desc) DO_PRAGMA(message (#desc))
 // Non-target specific stuff
 //
 #include <inttypes.h>
+#include <dirent.h>
 #include "symbol.h"
 
 #define BYTE         uint8_t
 enum
 {
 ALCYON,                                // Alcyon/DRI C object format
-MWC,                           // Mark Williams object format
 BSD,                           // BSD object format
 ELF,                           // ELF object format
 LOD,                           // DSP 56001 object format
 P56,                           // DSP 56001 object format
 XEX,                           // COM/EXE/XEX/whatever a8 object format
+RAW,                           // Output at absolute address
 };
 
 // Assembler token
@@ -280,17 +284,23 @@ PTR
 // Optimisation defines
 enum
 {
+    // These will be set to on/off when .opt "+Oall"/"~Oall" is called
        OPT_ABS_SHORT     = 0,
        OPT_MOVEL_MOVEQ   = 1,
        OPT_BSR_BCC_S     = 2,
-       OPT_INDIRECT_DISP = 3,
+       OPT_OUTER_DISP    = 3,
        OPT_LEA_ADDQ      = 4,
-       OPT_BASE_DISP     = 5,
+       OPT_020_DISP      = 5,          // 020+ base and outer displacements (bd, od) absolute long to short
        OPT_NULL_BRA      = 6,
        OPT_CLR_DX        = 7,
        OPT_ADDA_ADDQ     = 8,
        OPT_ADDA_LEA      = 9,
-       OPT_COUNT   // Dummy, used to count number of optimisation switches
+       OPT_56K_SHORT     = 10,
+       OPT_56K_AUTO_LONG = 11,
+       OPT_COUNT,                  // Dummy, used to count number of optimisation switches
+    // These will be unaffected by "Oall"
+       OPT_PC_RELATIVE   = 30,         // Enforce PC relative
+    OPT_COUNT_ALL               // Dummy, used to count all switches
 };
 
 // Exported variables
@@ -305,19 +315,20 @@ extern int regbank;
 extern char * firstfname;
 extern int list_fd;
 extern int list_pag;
-extern int as68_flag;
 extern int m6502;
 extern int list_flag;
 extern int glob_flag;
 extern int lsym_flag;
-extern int sbra_flag;
+extern int optim_warn_flag;
 extern int obj_format;
 extern int legacy_flag;
 extern int prg_flag;   // 1 = write ".PRG" relocatable executable
 extern LONG PRGFLAGS;
-extern int optim_flags[OPT_COUNT];
+extern int optim_flags[OPT_COUNT_ALL];
 extern int activecpu;
 extern int activefpu;
+extern uint32_t org68k_address;
+extern int org68k_active;
 
 // Exported functions
 void strtoupper(char * s);