Diff for /np2/i286c/v30patch.c between versions 1.3 and 1.5

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);

Removed from v.1.3  
changed lines
  Added in v.1.5


RetroPC.NET-CVS <cvs@retropc.net>