|
|
| version 1.1.1.1, 2003/10/16 17:57:43 | version 1.3, 2003/10/21 11:22:05 |
|---|---|
| Line 1 | Line 1 |
| #include "compiler.h" | #include "compiler.h" |
| #include "i286.h" | #include "i286.h" |
| #include "i286c.h" | #include "i286c.h" |
| #include "i286c.mcr" | |
| #include "memory.h" | #include "memory.h" |
| #include "i286c.mcr" | |
| // --------------------------------------------------------------------------- | // --------------------------------------------------------------------------- |
| static DWORD ea_bx_si(void) { | static UINT32 ea_bx_si(void) { |
| return(((I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); | return(((I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_si_disp8(void) { | static UINT32 ea_bx_si_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_si_disp16(void) { | static UINT32 ea_bx_si_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX + I286_SI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_di(void) { | static UINT32 ea_bx_di(void) { |
| return(((I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); | return(((I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_di_disp8(void) { | static UINT32 ea_bx_di_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_di_disp16(void) { | static UINT32 ea_bx_di_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX + I286_DI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bp_si(void) { | static UINT32 ea_bp_si(void) { |
| return(((I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); | return(((I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_si_disp8(void) { | static UINT32 ea_bp_si_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_si_disp16(void) { | static UINT32 ea_bp_si_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP + I286_SI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_di(void) { | static UINT32 ea_bp_di(void) { |
| return(((I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); | return(((I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_di_disp8(void) { | static UINT32 ea_bp_di_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_di_disp16(void) { | static UINT32 ea_bp_di_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP + I286_DI) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_si(void) { | static UINT32 ea_si(void) { |
| return(I286_SI + DS_FIX); | return(I286_SI + DS_FIX); |
| } | } |
| static DWORD ea_si_disp8(void) { | static UINT32 ea_si_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_si_disp16(void) { | static UINT32 ea_si_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_SI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_di(void) { | static UINT32 ea_di(void) { |
| return(I286_DI + DS_FIX); | return(I286_DI + DS_FIX); |
| } | } |
| static DWORD ea_di_disp8(void) { | static UINT32 ea_di_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_di_disp16(void) { | static UINT32 ea_di_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_DI) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_disp16(void) { | static UINT32 ea_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return((adrs & 0x0000ffff) + DS_FIX); | return((adrs & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bp_disp8(void) { | static UINT32 ea_bp_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bp_disp16(void) { | static UINT32 ea_bp_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); | return(((adrs + I286_BP) & 0x0000ffff) + SS_FIX); |
| } | } |
| static DWORD ea_bx(void) { | static UINT32 ea_bx(void) { |
| return(I286_BX + DS_FIX); | return(I286_BX + DS_FIX); |
| } | } |
| static DWORD ea_bx_disp8(void) { | static UINT32 ea_bx_disp8(void) { |
| long adrs; | SINT32 adrs; |
| GET_PCBYTESD(adrs); | GET_PCBYTESD(adrs); |
| return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); |
| } | } |
| static DWORD ea_bx_disp16(void) { | static UINT32 ea_bx_disp16(void) { |
| DWORD adrs; | UINT32 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); | return(((adrs + I286_BX) & 0x0000ffff) + DS_FIX); |
| Line 195 const CALCEA i286c_ea_dst_tbl[] = { | Line 195 const CALCEA i286c_ea_dst_tbl[] = { |
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- |
| static WORD lea_bx_si(void) { | static UINT16 lea_bx_si(void) { |
| return(I286_BX + I286_SI); | return(I286_BX + I286_SI); |
| } | } |
| static WORD lea_bx_si_disp8(void) { | static UINT16 lea_bx_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX + I286_SI); | return(adrs + I286_BX + I286_SI); |
| } | } |
| static WORD lea_bx_si_disp16(void) { | static UINT16 lea_bx_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BX + I286_SI); | return(adrs + I286_BX + I286_SI); |
| } | } |
| static WORD lea_bx_di(void) { | static UINT16 lea_bx_di(void) { |
| return(I286_BX + I286_DI); | return(I286_BX + I286_DI); |
| } | } |
| static WORD lea_bx_di_disp8(void) { | static UINT16 lea_bx_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX + I286_DI); | return(adrs + I286_BX + I286_DI); |
| } | } |
| static WORD lea_bx_di_disp16(void) { | static UINT16 lea_bx_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BX + I286_DI); | return(adrs + I286_BX + I286_DI); |
| } | } |
| static WORD lea_bp_si(void) { | static UINT16 lea_bp_si(void) { |
| return(I286_BP + I286_SI); | return(I286_BP + I286_SI); |
| } | } |
| static WORD lea_bp_si_disp8(void) { | static UINT16 lea_bp_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP + I286_SI); | return(adrs + I286_BP + I286_SI); |
| } | } |
| static WORD lea_bp_si_disp16(void) { | static UINT16 lea_bp_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP + I286_SI); | return(adrs + I286_BP + I286_SI); |
| } | } |
| static WORD lea_bp_di(void) { | static UINT16 lea_bp_di(void) { |
| return(I286_BP + I286_DI); | return(I286_BP + I286_DI); |
| } | } |
| static WORD lea_bp_di_disp8(void) { | static UINT16 lea_bp_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP + I286_DI); | return(adrs + I286_BP + I286_DI); |
| } | } |
| static WORD lea_bp_di_disp16(void) { | static UINT16 lea_bp_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP + I286_DI); | return(adrs + I286_BP + I286_DI); |
| } | } |
| static WORD lea_si(void) { | static UINT16 lea_si(void) { |
| return(I286_SI); | return(I286_SI); |
| } | } |
| static WORD lea_si_disp8(void) { | static UINT16 lea_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_SI); | return(adrs + I286_SI); |
| } | } |
| static WORD lea_si_disp16(void) { | static UINT16 lea_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_SI); | return(adrs + I286_SI); |
| } | } |
| static WORD lea_di(void) { | static UINT16 lea_di(void) { |
| return(I286_DI); | return(I286_DI); |
| } | } |
| static WORD lea_di_disp8(void) { | static UINT16 lea_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_DI); | return(adrs + I286_DI); |
| } | } |
| static WORD lea_di_disp16(void) { | static UINT16 lea_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_DI); | return(adrs + I286_DI); |
| } | } |
| static WORD lea_disp16(void) { | static UINT16 lea_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs); | return(adrs); |
| } | } |
| static WORD lea_bp_disp8(void) { | static UINT16 lea_bp_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP); | return(adrs + I286_BP); |
| } | } |
| static WORD lea_bp_disp16(void) { | static UINT16 lea_bp_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP); | return(adrs + I286_BP); |
| } | } |
| static WORD lea_bx(void) { | static UINT16 lea_bx(void) { |
| return(I286_BX); | return(I286_BX); |
| } | } |
| static WORD lea_bx_disp8(void) { | static UINT16 lea_bx_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX); | return(adrs + I286_BX); |
| } | } |
| static WORD lea_bx_disp16(void) { | static UINT16 lea_bx_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BX); | return(adrs + I286_BX); |
| Line 382 const CALCLEA i286c_lea_tbl[] = { | Line 382 const CALCLEA i286c_lea_tbl[] = { |
| // -------------------------------------------------------------------------- | // -------------------------------------------------------------------------- |
| static WORD a_bx_si(void) { | static UINT16 a_bx_si(void) { |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| return(I286_BX + I286_SI); | return(I286_BX + I286_SI); |
| } | } |
| static WORD a_bx_si_disp8(void) { | static UINT16 a_bx_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX + I286_SI); | return(adrs + I286_BX + I286_SI); |
| } | } |
| static WORD a_bx_si_disp16(void) { | static UINT16 a_bx_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BX + I286_SI); | return(adrs + I286_BX + I286_SI); |
| } | } |
| static WORD a_bx_di(void) { | static UINT16 a_bx_di(void) { |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| return(I286_BX + I286_DI); | return(I286_BX + I286_DI); |
| } | } |
| static WORD a_bx_di_disp8(void) { | static UINT16 a_bx_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX + I286_DI); | return(adrs + I286_BX + I286_DI); |
| } | } |
| static WORD a_bx_di_disp16(void) { | static UINT16 a_bx_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BX + I286_DI); | return(adrs + I286_BX + I286_DI); |
| } | } |
| static WORD a_bp_si(void) { | static UINT16 a_bp_si(void) { |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| return(I286_BP + I286_SI); | return(I286_BP + I286_SI); |
| } | } |
| static WORD a_bp_si_disp8(void) { | static UINT16 a_bp_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP + I286_SI); | return(adrs + I286_BP + I286_SI); |
| } | } |
| static WORD a_bp_si_disp16(void) { | static UINT16 a_bp_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP + I286_SI); | return(adrs + I286_BP + I286_SI); |
| } | } |
| static WORD a_bp_di(void) { | static UINT16 a_bp_di(void) { |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| return(I286_BP + I286_DI); | return(I286_BP + I286_DI); |
| } | } |
| static WORD a_bp_di_disp8(void) { | static UINT16 a_bp_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP + I286_DI); | return(adrs + I286_BP + I286_DI); |
| } | } |
| static WORD a_bp_di_disp16(void) { | static UINT16 a_bp_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP + I286_DI); | return(adrs + I286_BP + I286_DI); |
| } | } |
| static WORD a_si(void) { | static UINT16 a_si(void) { |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| return(I286_SI); | return(I286_SI); |
| } | } |
| static WORD a_si_disp8(void) { | static UINT16 a_si_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_SI); | return(adrs + I286_SI); |
| } | } |
| static WORD a_si_disp16(void) { | static UINT16 a_si_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_SI); | return(adrs + I286_SI); |
| } | } |
| static WORD a_di(void) { | static UINT16 a_di(void) { |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| return(I286_DI); | return(I286_DI); |
| } | } |
| static WORD a_di_disp8(void) { | static UINT16 a_di_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_DI); | return(adrs + I286_DI); |
| } | } |
| static WORD a_di_disp16(void) { | static UINT16 a_di_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_DI); | return(adrs + I286_DI); |
| } | } |
| static WORD a_disp16(void) { | static UINT16 a_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs); | return(adrs); |
| } | } |
| static WORD a_bp_disp8(void) { | static UINT16 a_bp_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCBYTESD(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BP); | return(adrs + I286_BP); |
| } | } |
| static WORD a_bp_disp16(void) { | static UINT16 a_bp_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = SS_FIX; | EA_FIX = SS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |
| return(adrs + I286_BP); | return(adrs + I286_BP); |
| } | } |
| static WORD a_bx(void) { | static UINT16 a_bx(void) { |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| return(I286_BX); | return(I286_BX); |
| } | } |
| static WORD a_bx_disp8(void) { | static UINT16 a_bx_disp8(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCBYTES(adrs); | GET_PCBYTES(adrs); |
| return(adrs + I286_BX); | return(adrs + I286_BX); |
| } | } |
| static WORD a_bx_disp16(void) { | static UINT16 a_bx_disp16(void) { |
| WORD adrs; | UINT16 adrs; |
| EA_FIX = DS_FIX; | EA_FIX = DS_FIX; |
| GET_PCWORD(adrs); | GET_PCWORD(adrs); |