X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?p=rmac;a=blobdiff_plain;f=rmac.h;h=5c562043ad10412e0911a32444c92c3a0f9e4497;hp=f81b9a94290a11daf4f652d97ac05a3df413b510;hb=968958cccf9201debee2cb0d4856cb5b55c6867d;hpb=60f204cb9e3905100da0d89f14bb40db764acd9e diff --git a/rmac.h b/rmac.h index f81b9a9..5c56204 100644 --- a/rmac.h +++ b/rmac.h @@ -55,10 +55,6 @@ #else #ifdef __GCCUNIX__ - #ifdef __MINGW32__ - #define off64_t long - #define off_t long - #endif #include #include @@ -67,6 +63,16 @@ #define _OPEN_FLAGS O_TRUNC|O_CREAT|O_RDWR #define _OPEN_INC O_RDONLY #define _PERM_MODE S_IRUSR|S_IWUSR + + #ifdef __MINGW32__ + #define off64_t long + #define off_t long + #undef _OPEN_FLAGS + #undef _OPEN_INC + #define _OPEN_FLAGS _O_TRUNC|_O_CREAT|_O_BINARY|_O_RDWR + #define _OPEN_INC O_RDONLY|_O_BINARY + #endif + // WARNING WARNING WARNING #define DO_PRAGMA(x) _Pragma (#x) #define WARNING(desc) DO_PRAGMA(message (#desc)) @@ -121,6 +127,11 @@ (a)[(r + 6)] = (uint8_t)(((v) >> 8) & 0xFF); \ (a)[(r + 7)] = (uint8_t)((v) & 0xFF); } +// In 6502 mode, turns out we need this: +#define SETLE16(a, r, v) \ + { (a)[(r + 0)] = (uint8_t)((v) & 0xFF); \ + (a)[(r + 1)] = (uint8_t)((v) >> 8); } + // Byteswap crap #define BYTESWAP16(x) ((((x) & 0x00FF) << 8) | (((x) & 0xFF00) >> 8)) #define BYTESWAP32(x) ((((x) & 0x000000FF) << 24) | (((x) & 0x0000FF00) << 8) | (((x) & 0x00FF0000) >> 8) | (((x) & 0xFF000000) >> 24)) @@ -183,6 +194,7 @@ #define MWC 1 // Mark Williams object format #define BSD 2 // BSD object format #define ELF 3 // ELF object format +#define XEX 4 // COM/EXE/XEX/whatever a8 object format // Pointer type that can point to (almost) anything #define PTR union _ptr @@ -215,7 +227,7 @@ PTR #define TEXT 0x0001 // Relative to text #define DATA 0x0002 // Relative to data #define BSS 0x0004 // Relative to BSS -//#define M6502 0x0008 // 6502/microprocessor (absolute) +#define M6502 0x0008 // 6502/microprocessor (absolute) #define TDB (TEXT|DATA|BSS) // Mask for text+data+bss // Sizes @@ -233,8 +245,6 @@ PTR #define EQUATEDCC 0x0020 #define UNDEF_CC 0x0040 -//#define RISCSYM 0x00010000 - // Optimisation defines enum { @@ -245,7 +255,7 @@ enum OPT_COUNT // Dummy, used to count number of optimisation switches }; -// Globals, externals, etc. +// Exported variables extern int verb_flag; extern int debug; extern int rgpu, rdsp; @@ -255,6 +265,7 @@ extern int regbank; extern char * firstfname; extern int list_fd; extern int as68_flag; +extern int m6502; extern int list_flag; extern int glob_flag; extern int lsym_flag;