--- np2/i286c/i286c_ea.c 2003/11/24 09:14:01 1.4 +++ np2/i286c/i286c_ea.c 2003/11/28 08:01:32 1.5 @@ -37,7 +37,7 @@ enum { static UINT32 ea_bx_si(void) { - return(((I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(I286_BX + I286_SI) + DS_FIX); } static UINT32 ea_bx_si_disp8(void) { @@ -45,7 +45,7 @@ static UINT32 ea_bx_si_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_SI) + DS_FIX); } static UINT32 ea_bx_si_disp16(void) { @@ -53,12 +53,12 @@ static UINT32 ea_bx_si_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_SI) + DS_FIX); } static UINT32 ea_bx_di(void) { - return(((I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(I286_BX + I286_DI) + DS_FIX); } static UINT32 ea_bx_di_disp8(void) { @@ -66,7 +66,7 @@ static UINT32 ea_bx_di_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_DI) + DS_FIX); } static UINT32 ea_bx_di_disp16(void) { @@ -74,12 +74,12 @@ static UINT32 ea_bx_di_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_DI) + DS_FIX); } static UINT32 ea_bp_si(void) { - return(((I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(I286_BP + I286_SI) + SS_FIX); } static UINT32 ea_bp_si_disp8(void) { @@ -87,7 +87,7 @@ static UINT32 ea_bp_si_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_SI) + SS_FIX); } static UINT32 ea_bp_si_disp16(void) { @@ -95,12 +95,12 @@ static UINT32 ea_bp_si_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_SI) + SS_FIX); } static UINT32 ea_bp_di(void) { - return(((I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(I286_BP + I286_DI) + SS_FIX); } static UINT32 ea_bp_di_disp8(void) { @@ -108,7 +108,7 @@ static UINT32 ea_bp_di_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_DI) + SS_FIX); } static UINT32 ea_bp_di_disp16(void) { @@ -116,7 +116,7 @@ static UINT32 ea_bp_di_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_DI) + SS_FIX); } static UINT32 ea_si(void) { @@ -129,7 +129,7 @@ static UINT32 ea_si_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_SI) + DS_FIX); } static UINT32 ea_si_disp16(void) { @@ -137,7 +137,7 @@ static UINT32 ea_si_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_SI) + DS_FIX); } static UINT32 ea_di(void) { @@ -150,7 +150,7 @@ static UINT32 ea_di_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_DI) + DS_FIX); } static UINT32 ea_di_disp16(void) { @@ -158,7 +158,7 @@ static UINT32 ea_di_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_DI) + DS_FIX); } static UINT32 ea_disp16(void) { @@ -166,7 +166,7 @@ static UINT32 ea_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return((adrs & 0x0000ffff) + DS_FIX); + return(adrs + DS_FIX); } static UINT32 ea_bp_disp8(void) { @@ -174,7 +174,7 @@ static UINT32 ea_bp_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP) + SS_FIX); } static UINT32 ea_bp_disp16(void) { @@ -182,7 +182,7 @@ static UINT32 ea_bp_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP) + SS_FIX); } static UINT32 ea_bx(void) { @@ -195,7 +195,7 @@ static UINT32 ea_bx_disp8(void) { SINT32 adrs; GET_PCBYTESD(adrs); - return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX) + DS_FIX); } static UINT32 ea_bx_disp16(void) { @@ -203,7 +203,7 @@ static UINT32 ea_bx_disp16(void) { UINT32 adrs; GET_PCWORD(adrs); - return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX) + DS_FIX); } static const CALCEA i286c_ea_dst_tbl[] = { @@ -411,199 +411,199 @@ static const CALCLEA i286c_lea_tbl[] = { // ---- -static UINT16 a_bx_si(UINT32 *seg) { +static UINT a_bx_si(UINT32 *seg) { *seg = DS_FIX; - return(I286_BX + I286_SI); + return(LOW16(I286_BX + I286_SI)); } -static UINT16 a_bx_si_disp8(UINT32 *seg) { +static UINT a_bx_si_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BX + I286_SI); + return(LOW16(adrs + I286_BX + I286_SI)); } -static UINT16 a_bx_si_disp16(UINT32 *seg) { +static UINT a_bx_si_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX + I286_SI); + return(LOW16(adrs + I286_BX + I286_SI)); } -static UINT16 a_bx_di(UINT32 *seg) { +static UINT a_bx_di(UINT32 *seg) { *seg = DS_FIX; - return(I286_BX + I286_DI); + return(LOW16(I286_BX + I286_DI)); } -static UINT16 a_bx_di_disp8(UINT32 *seg) { +static UINT a_bx_di_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BX + I286_DI); + return(LOW16(adrs + I286_BX + I286_DI)); } -static UINT16 a_bx_di_disp16(UINT32 *seg) { +static UINT a_bx_di_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX + I286_DI); + return(LOW16(adrs + I286_BX + I286_DI)); } -static UINT16 a_bp_si(UINT32 *seg) { +static UINT a_bp_si(UINT32 *seg) { *seg = SS_FIX; - return(I286_BP + I286_SI); + return(LOW16(I286_BP + I286_SI)); } -static UINT16 a_bp_si_disp8(UINT32 *seg) { +static UINT a_bp_si_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BP + I286_SI); + return(LOW16(adrs + I286_BP + I286_SI)); } -static UINT16 a_bp_si_disp16(UINT32 *seg) { +static UINT a_bp_si_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP + I286_SI); + return(LOW16(adrs + I286_BP + I286_SI)); } -static UINT16 a_bp_di(UINT32 *seg) { +static UINT a_bp_di(UINT32 *seg) { *seg = SS_FIX; - return(I286_BP + I286_DI); + return(LOW16(I286_BP + I286_DI)); } -static UINT16 a_bp_di_disp8(UINT32 *seg) { +static UINT a_bp_di_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BP + I286_DI); + return(LOW16(adrs + I286_BP + I286_DI)); } -static UINT16 a_bp_di_disp16(UINT32 *seg) { +static UINT a_bp_di_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP + I286_DI); + return(LOW16(adrs + I286_BP + I286_DI)); } -static UINT16 a_si(UINT32 *seg) { +static UINT a_si(UINT32 *seg) { *seg = DS_FIX; return(I286_SI); } -static UINT16 a_si_disp8(UINT32 *seg) { +static UINT a_si_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_SI); + return(LOW16(adrs + I286_SI)); } -static UINT16 a_si_disp16(UINT32 *seg) { +static UINT a_si_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_SI); + return(LOW16(adrs + I286_SI)); } -static UINT16 a_di(UINT32 *seg) { +static UINT a_di(UINT32 *seg) { *seg = DS_FIX; return(I286_DI); } -static UINT16 a_di_disp8(UINT32 *seg) { +static UINT a_di_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_DI); + return(LOW16(adrs + I286_DI)); } -static UINT16 a_di_disp16(UINT32 *seg) { +static UINT a_di_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_DI); + return(LOW16(adrs + I286_DI)); } -static UINT16 a_disp16(UINT32 *seg) { +static UINT a_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); return(adrs); } -static UINT16 a_bp_disp8(UINT32 *seg) { +static UINT a_bp_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BP); + return(LOW16(adrs + I286_BP)); } -static UINT16 a_bp_disp16(UINT32 *seg) { +static UINT a_bp_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP); + return(LOW16(adrs + I286_BP)); } -static UINT16 a_bx(UINT32 *seg) { +static UINT a_bx(UINT32 *seg) { *seg = DS_FIX; return(I286_BX); } -static UINT16 a_bx_disp8(UINT32 *seg) { +static UINT a_bx_disp8(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCBYTES(adrs); - return(adrs + I286_BX); + return(LOW16(adrs + I286_BX)); } -static UINT16 a_bx_disp16(UINT32 *seg) { +static UINT a_bx_disp16(UINT32 *seg) { - UINT16 adrs; + UINT adrs; *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX); + return(LOW16(adrs + I286_BX)); } static const GETLEA i286c_ea_tbl[] = { @@ -656,93 +656,93 @@ UINT32 calc_ea_dst(UINT op) { switch(((op >> 3) & 0x18) + (op & 0x07)) { case EA_BX_SI: - return(((I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(I286_BX + I286_SI) + DS_FIX); case EA_BX_SI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_SI) + DS_FIX); case EA_BX_SI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_SI) + DS_FIX); case EA_BX_DI: - return(((I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(I286_BX + I286_DI) + DS_FIX); case EA_BX_DI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_DI) + DS_FIX); case EA_BX_DI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX + I286_DI) + DS_FIX); case EA_BP_SI: - return(((I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(I286_BP + I286_SI) + SS_FIX); case EA_BP_SI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_SI) + SS_FIX); case EA_BP_SI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_SI) + SS_FIX); case EA_BP_DI: - return(((I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(I286_BP + I286_DI) + SS_FIX); case EA_BP_DI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_DI) + SS_FIX); case EA_BP_DI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP + I286_DI) + SS_FIX); case EA_SI: return(I286_SI + DS_FIX); case EA_SI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_SI) + DS_FIX); case EA_SI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_SI) + DS_FIX); case EA_DI: return(I286_DI + DS_FIX); case EA_DI_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_DI) + DS_FIX); case EA_DI_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_DI) + DS_FIX); case EA_BX: return(I286_BX + DS_FIX); case EA_BX_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX) + DS_FIX); case EA_BX_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); + return(LOW16(adrs + I286_BX) + DS_FIX); case EA_BP_DISP8: GET_PCBYTESD(adrs); - return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP) + SS_FIX); case EA_BP_DISP16: GET_PCWORD(adrs); - return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); + return(LOW16(adrs + I286_BP) + SS_FIX); case EA_DISP16: GET_PCWORD(adrs); - return((adrs & 0x0000ffff) + DS_FIX); + return(adrs + DS_FIX); default: return(0); @@ -848,66 +848,66 @@ UINT16 calc_lea(UINT op) { } } -UINT16 calc_a(UINT op, UINT32 *seg) { +UINT calc_a(UINT op, UINT32 *seg) { - UINT16 adrs; + UINT adrs; switch(((op >> 3) & 0x18) + (op & 0x07)) { case EA_BX_SI: *seg = DS_FIX; - return(I286_BX + I286_SI); + return(LOW16(I286_BX + I286_SI)); case EA_BX_SI_DISP8: *seg = DS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BX + I286_SI); + return(LOW16(adrs + I286_BX + I286_SI)); case EA_BX_SI_DISP16: *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX + I286_SI); + return(LOW16(adrs + I286_BX + I286_SI)); case EA_BX_DI: *seg = DS_FIX; - return(I286_BX + I286_DI); + return(LOW16(I286_BX + I286_DI)); case EA_BX_DI_DISP8: *seg = DS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BX + I286_DI); + return(LOW16(adrs + I286_BX + I286_DI)); case EA_BX_DI_DISP16: *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX + I286_DI); + return(LOW16(adrs + I286_BX + I286_DI)); case EA_BP_SI: *seg = SS_FIX; - return(I286_BP + I286_SI); + return(LOW16(I286_BP + I286_SI)); case EA_BP_SI_DISP8: *seg = SS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BP + I286_SI); + return(LOW16(adrs + I286_BP + I286_SI)); case EA_BP_SI_DISP16: *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP + I286_SI); + return(LOW16(adrs + I286_BP + I286_SI)); case EA_BP_DI: *seg = SS_FIX; - return(I286_BP + I286_DI); + return(LOW16(I286_BP + I286_DI)); case EA_BP_DI_DISP8: *seg = SS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BP + I286_DI); + return(LOW16(adrs + I286_BP + I286_DI)); case EA_BP_DI_DISP16: *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP + I286_DI); + return(LOW16(adrs + I286_BP + I286_DI)); case EA_SI: *seg = DS_FIX; @@ -916,12 +916,12 @@ UINT16 calc_a(UINT op, UINT32 *seg) { case EA_SI_DISP8: *seg = DS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_SI); + return(LOW16(adrs + I286_SI)); case EA_SI_DISP16: *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_SI); + return(LOW16(adrs + I286_SI)); case EA_DI: *seg = DS_FIX; @@ -930,12 +930,12 @@ UINT16 calc_a(UINT op, UINT32 *seg) { case EA_DI_DISP8: *seg = DS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_DI); + return(LOW16(adrs + I286_DI)); case EA_DI_DISP16: *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_DI); + return(LOW16(adrs + I286_DI)); case EA_BX: *seg = DS_FIX; @@ -944,22 +944,22 @@ UINT16 calc_a(UINT op, UINT32 *seg) { case EA_BX_DISP8: *seg = DS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BX); + return(LOW16(adrs + I286_BX)); case EA_BX_DISP16: *seg = DS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BX); + return(LOW16(adrs + I286_BX)); case EA_BP_DISP8: *seg = SS_FIX; GET_PCBYTESD(adrs); - return(adrs + I286_BP); + return(LOW16(adrs + I286_BP)); case EA_BP_DISP16: *seg = SS_FIX; GET_PCWORD(adrs); - return(adrs + I286_BP); + return(LOW16(adrs + I286_BP)); case EA_DISP16: *seg = DS_FIX;