|
|
| version 1.3, 2003/11/24 09:14:01 | version 1.5, 2003/12/01 10:45:46 |
|---|---|
| Line 97 I286FN v30segprefix_es(void) { // 26: | Line 97 I286FN v30segprefix_es(void) { // 26: |
| SS_FIX = ES_BASE; | SS_FIX = ES_BASE; |
| DS_FIX = ES_BASE; | DS_FIX = ES_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op[op](); | v30op[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 114 I286FN v30segprefix_cs(void) { // 2e: | Line 114 I286FN v30segprefix_cs(void) { // 2e: |
| SS_FIX = CS_BASE; | SS_FIX = CS_BASE; |
| DS_FIX = CS_BASE; | DS_FIX = CS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op[op](); | v30op[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 131 I286FN v30segprefix_ss(void) { // 36: | Line 131 I286FN v30segprefix_ss(void) { // 36: |
| SS_FIX = SS_BASE; | SS_FIX = SS_BASE; |
| DS_FIX = SS_BASE; | DS_FIX = SS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op[op](); | v30op[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 148 I286FN v30segprefix_ds(void) { // 3e: | Line 148 I286FN v30segprefix_ds(void) { // 3e: |
| SS_FIX = DS_BASE; | SS_FIX = DS_BASE; |
| DS_FIX = DS_BASE; | DS_FIX = DS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op[op](); | v30op[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 402 I286FN v30_aad(void) { // D5: AAD | Line 402 I286FN v30_aad(void) { // D5: AAD |
| I286_AL += (BYTE)(I286_AH * 10); | I286_AL += (BYTE)(I286_AH * 10); |
| I286_AH = 0; | I286_AH = 0; |
| I286_FLAGL &= ~(S_FLAG | Z_FLAG | P_FLAG); | I286_FLAGL &= ~(S_FLAG | Z_FLAG | P_FLAG); |
| I286_FLAGL |= szpcflag[I286_AL]; | I286_FLAGL |= BYTESZPF(I286_AL); |
| } | } |
| I286FN v30_xlat(void) { // D6: xlat | I286FN v30_xlat(void) { // D6: xlat |
| I286_WORKCLOCK(5); | I286_WORKCLOCK(5); |
| I286_AL = i286_memoryread(((I286_AL + I286_BX) & 0xffff) + DS_FIX); | I286_AL = i286_memoryread(LOW16(I286_AL + I286_BX) + DS_FIX); |
| } | } |
| I286FN v30_repne(void) { // F2: repne | I286FN v30_repne(void) { // F2: repne |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repne[op](); | v30op_repne[op](); |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 427 I286FN v30_repne(void) { // F2: repn | Line 427 I286FN v30_repne(void) { // F2: repn |
| I286FN v30_repe(void) { // F3: repe | I286FN v30_repe(void) { // F3: repe |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repe[op](); | v30op_repe[op](); |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 472 I286FN v30repe_segprefix_es(void) { | Line 472 I286FN v30repe_segprefix_es(void) { |
| DS_FIX = ES_BASE; | DS_FIX = ES_BASE; |
| SS_FIX = ES_BASE; | SS_FIX = ES_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repe[op](); | v30op_repe[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 489 I286FN v30repe_segprefix_cs(void) { | Line 489 I286FN v30repe_segprefix_cs(void) { |
| DS_FIX = CS_BASE; | DS_FIX = CS_BASE; |
| SS_FIX = CS_BASE; | SS_FIX = CS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repe[op](); | v30op_repe[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 506 I286FN v30repe_segprefix_ss(void) { | Line 506 I286FN v30repe_segprefix_ss(void) { |
| DS_FIX = SS_BASE; | DS_FIX = SS_BASE; |
| SS_FIX = SS_BASE; | SS_FIX = SS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repe[op](); | v30op_repe[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 523 I286FN v30repe_segprefix_ds(void) { | Line 523 I286FN v30repe_segprefix_ds(void) { |
| DS_FIX = DS_BASE; | DS_FIX = DS_BASE; |
| SS_FIX = DS_BASE; | SS_FIX = DS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repe[op](); | v30op_repe[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 569 I286FN v30repne_segprefix_es(void) { | Line 569 I286FN v30repne_segprefix_es(void) { |
| DS_FIX = ES_BASE; | DS_FIX = ES_BASE; |
| SS_FIX = ES_BASE; | SS_FIX = ES_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repne[op](); | v30op_repne[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 586 I286FN v30repne_segprefix_cs(void) { | Line 586 I286FN v30repne_segprefix_cs(void) { |
| DS_FIX = CS_BASE; | DS_FIX = CS_BASE; |
| SS_FIX = CS_BASE; | SS_FIX = CS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repne[op](); | v30op_repne[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 603 I286FN v30repne_segprefix_ss(void) { | Line 603 I286FN v30repne_segprefix_ss(void) { |
| DS_FIX = SS_BASE; | DS_FIX = SS_BASE; |
| SS_FIX = SS_BASE; | SS_FIX = SS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repne[op](); | v30op_repne[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |
| Line 620 I286FN v30repne_segprefix_ds(void) { | Line 620 I286FN v30repne_segprefix_ds(void) { |
| DS_FIX = DS_BASE; | DS_FIX = DS_BASE; |
| SS_FIX = DS_BASE; | SS_FIX = DS_BASE; |
| i286reg.prefix++; | i286core.s.prefix++; |
| if (i286reg.prefix < MAX_PREFIX) { | if (i286core.s.prefix < MAX_PREFIX) { |
| UINT op; | UINT op; |
| GET_PCBYTE(op); | GET_PCBYTE(op); |
| v30op_repne[op](); | v30op_repne[op](); |
| REMOVE_PREFIX | REMOVE_PREFIX |
| i286reg.prefix = 0; | i286core.s.prefix = 0; |
| } | } |
| else { | else { |
| INT_NUM(6, I286_IP); | INT_NUM(6, I286_IP); |