diff --git a/src/cpu/core_full/load.h b/src/cpu/core_full/load.h index 8c9764f1..b6ba9938 100644 --- a/src/cpu/core_full/load.h +++ b/src/cpu/core_full/load.h @@ -317,10 +317,14 @@ l_M_Ed: case D_SETALC: reg_al = get_CF() ? 0xFF : 0; goto nextopcode; - case D_XLAT: + case D_XLATw: if (inst.prefix & PREFIX_SEG) reg_al=LoadMb(inst.seg.base+reg_bx+reg_al); else reg_al=LoadMb(SegBase(ds)+reg_bx+reg_al); goto nextopcode; + case D_XLATd: + if (inst.prefix & PREFIX_SEG) reg_al=LoadMb(inst.seg.base+reg_ebx+reg_al); + else reg_al=LoadMb(SegBase(ds)+reg_ebx+reg_al); + goto nextopcode; case D_CBW: reg_ax=(Bit8s)reg_al; goto nextopcode; @@ -371,11 +375,66 @@ l_M_Ed: goto nextopcode; case D_ENTERw: { - Bit16u bytes=Fetchw();Bit8u level=Fetchb(); - Push_16(reg_bp);reg_bp=reg_sp;reg_sp-=bytes; - EAPoint reader=SegBase(ss)+reg_bp; - for (Bit8u i=1;i