|
|
| version 1.17, 2003/12/26 03:41:05 | version 1.19, 2004/01/08 16:29:56 |
|---|---|
| Line 186 I286_0F _lmsw(UINT op) { | Line 186 I286_0F _lmsw(UINT op) { |
| } | } |
| I286_MSW = msw | (I286_MSW & MSW_PE); | I286_MSW = msw | (I286_MSW & MSW_PE); |
| if (msw & MSW_PE) { | if (msw & MSW_PE) { |
| TRACEOUT(("Protect Enable MSW=%.4x", I286_MSW)); | TRACEOUT(("80286 ProtectMode Enable... / MSW=%.4x", I286_MSW)); |
| } | } |
| } | } |
| Line 202 static const I286OP_0F cts1_table[] = { | Line 202 static const I286OP_0F cts1_table[] = { |
| I286_0F _loadall286(void) { | I286_0F _loadall286(void) { |
| UINT16 tmp; | UINT16 tmp; |
| UINT32 base; | |
| I286_WORKCLOCK(195); | I286_WORKCLOCK(195); |
| I286_MSW = LOADINTELWORD(mem + 0x804); | I286_MSW = LOADINTELWORD(mem + 0x804); |
| I286_TR = LOADINTELWORD(mem + 0x816); // ver0.73 | |
| tmp = LOADINTELWORD(mem + 0x818); | tmp = LOADINTELWORD(mem + 0x818); |
| I286_OV = tmp & O_FLAG; | I286_OV = tmp & O_FLAG; |
| I286_FLAG = tmp & (0xfff ^ O_FLAG); | I286_FLAG = tmp & (0xfff ^ O_FLAG); |
| I286_TRAP = ((tmp & 0x300) == 0x300); | I286_TRAP = ((tmp & 0x300) == 0x300); |
| I286_IP = LOADINTELWORD(mem + 0x81a); | I286_IP = LOADINTELWORD(mem + 0x81a); |
| I286_LDTR = LOADINTELWORD(mem + 0x81c); // ver0.73 | |
| I286_DS = LOADINTELWORD(mem + 0x81e); | I286_DS = LOADINTELWORD(mem + 0x81e); |
| I286_SS = LOADINTELWORD(mem + 0x820); | I286_SS = LOADINTELWORD(mem + 0x820); |
| I286_CS = LOADINTELWORD(mem + 0x822); | I286_CS = LOADINTELWORD(mem + 0x822); |
| Line 222 I286_0F _loadall286(void) { | Line 225 I286_0F _loadall286(void) { |
| I286_DX = LOADINTELWORD(mem + 0x830); | I286_DX = LOADINTELWORD(mem + 0x830); |
| I286_CX = LOADINTELWORD(mem + 0x832); | I286_CX = LOADINTELWORD(mem + 0x832); |
| I286_AX = LOADINTELWORD(mem + 0x834); | I286_AX = LOADINTELWORD(mem + 0x834); |
| ES_BASE = LOADINTELDWORD(mem + 0x836) & 0x00ffffff; | base = LOADINTELDWORD(mem + 0x836) & 0x00ffffff; |
| CS_BASE = LOADINTELDWORD(mem + 0x83c) & 0x00ffffff; | ES_BASE = base; |
| SS_BASE = LOADINTELDWORD(mem + 0x842) & 0x00ffffff; | base = LOADINTELDWORD(mem + 0x83c) & 0x00ffffff; |
| SS_FIX = SS_BASE; | CS_BASE = base; |
| DS_BASE = LOADINTELDWORD(mem + 0x848) & 0x00ffffff; | base = LOADINTELDWORD(mem + 0x842) & 0x00ffffff; |
| DS_FIX = DS_BASE; | SS_BASE = base; |
| SS_FIX = base; | |
| base = LOADINTELDWORD(mem + 0x848) & 0x00ffffff; | |
| DS_BASE = base; | |
| DS_FIX = base; | |
| I286_GDTR.base = LOADINTELWORD(mem + 0x84e); | |
| *(UINT16 *)(&I286_GDTR.base24) = LOADINTELWORD(mem + 0x850); | |
| I286_GDTR.limit = LOADINTELWORD(mem + 0x852); | |
| I286_LDTRC.base = LOADINTELWORD(mem + 0x854); | |
| *(UINT16 *)(&I286_LDTRC.base24) = LOADINTELWORD(mem + 0x856); | |
| I286_LDTRC.limit = LOADINTELWORD(mem + 0x858); | |
| I286_IDTR.base = LOADINTELWORD(mem + 0x85a); | |
| *(UINT16 *)(&I286_IDTR.base24) = LOADINTELWORD(mem + 0x85c); | |
| I286_IDTR.limit = LOADINTELWORD(mem + 0x85e); | |
| I286_TRC.base = LOADINTELWORD(mem + 0x860); | |
| *(UINT16 *)(&I286_TRC.base24) = LOADINTELWORD(mem + 0x8620); | |
| I286_TRC.limit = LOADINTELWORD(mem + 0x864); | |
| I286IRQCHECKTERM | I286IRQCHECKTERM |
| } | } |