--- np2/i286c/i286c.mcr 2003/11/30 12:38:15 1.13 +++ np2/i286c/i286c.mcr 2003/12/03 07:59:57 1.16 @@ -1,11 +1,13 @@ -#if defined(ARM) && defined(BYTESEX_LITTLE) -#define INHIBIT_WORDP(m) (((m) & 1) || ((m) >= 0xa0000)) +#if defined(X11) && (defined(i386) || defined(__i386__)) +#define INHIBIT_WORDP(m) ((m) >= (I286_MEMWRITEMAX - 1)) +#elif (defined(ARM) || defined(X11)) && defined(BYTESEX_LITTLE) +#define INHIBIT_WORDP(m) (((m) & 1) || ((m) >= I286_MEMWRITEMAX)) #else #define INHIBIT_WORDP(m) (1) #endif -#define __CBW(src) (UINT16)((char)(src)) +#define __CBW(src) (UINT16)((SINT8)(src)) #define __CBD(src) ((SINT8)(src)) #define WORD2LONG(src) ((SINT16)(src)) @@ -418,7 +420,7 @@ extern UINT calc_a(UINT op, UINT32 *seg) reg = i286_memoryread_w(I286_SP + SS_BASE); \ I286_SP += 2; -#if defined(ARM) && defined(BYTESEX_LITTLE) +#if (defined(ARM) || defined(X11)) && defined(BYTESEX_LITTLE) #define REGPUSH(reg, clock) { \ UINT32 addr; \ @@ -500,5 +502,5 @@ extern UINT calc_a(UINT op, UINT32 *seg) } -#define INT_NUM(a, b) i286_intnum(a, b) +#define INT_NUM(a, b) i286_intnum((a), (REG16)(b))