--- np2/i286c/i286c_ea.c 2003/12/12 01:04:40 1.7 +++ np2/i286c/i286c_ea.c 2004/01/08 16:29:56 1.8 @@ -973,3 +973,19 @@ UINT calc_a(UINT op, UINT32 *seg) { #endif + +UINT32 i286c_selector(UINT sel) { + + I286DTR *dtr; + UINT32 addr; + UINT32 ret; + + dtr = (sel & 4)?&I286_LDTRC:&I286_GDTR; + addr = (dtr->base24 << 16) + dtr->base + (sel & (~7)); + ret = i286_memoryread_w(addr+2); + ret += i286_memoryread(addr+4) << 16; + TRACEOUT(("ProtectMode: selector idx=%x %s rpl=%d - real addr = %.6x", + (sel >> 3), (sel & 4)?"LDT":"GDT", sel & 3, ret)); + return(ret); +} +