Diff for /np2/i286c/i286c_mn.c between versions 1.9 and 1.10

version 1.9, 2003/11/13 15:33:05 version 1.10, 2003/11/21 06:51:11
Line 43  I286FN _add_ea_r8(void) {      // 00: ad Line 43  I286FN _add_ea_r8(void) {      // 00: ad
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 73  I286FN _add_ea_r16(void) {      // 01: a Line 73  I286FN _add_ea_r16(void) {      // 01: a
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 163  I286FN _or_ea_r8(void) {      // 08: or  Line 163  I286FN _or_ea_r8(void) {      // 08: or 
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 190  I286FN _or_ea_r16(void) {       // 09: o Line 190  I286FN _or_ea_r16(void) {       // 09: o
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 261  I286FN _adc_ea_r8(void) {      // 10: ad Line 261  I286FN _adc_ea_r8(void) {      // 10: ad
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 291  I286FN _adc_ea_r16(void) {      // 11: a Line 291  I286FN _adc_ea_r16(void) {      // 11: a
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 384  I286FN _sbb_ea_r8(void) {      // 18: sb Line 384  I286FN _sbb_ea_r8(void) {      // 18: sb
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 414  I286FN _sbb_ea_r16(void) {      // 19: s Line 414  I286FN _sbb_ea_r16(void) {      // 19: s
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 505  I286FN _and_ea_r8(void) {      // 20: an Line 505  I286FN _and_ea_r8(void) {      // 20: an
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 532  I286FN _and_ea_r16(void) {      // 21: a Line 532  I286FN _and_ea_r16(void) {      // 21: a
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 634  I286FN _sub_ea_r8(void) {      // 28: su Line 634  I286FN _sub_ea_r8(void) {      // 28: su
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 664  I286FN _sub_ea_r16(void) {      // 29: s Line 664  I286FN _sub_ea_r16(void) {      // 29: s
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 776  I286FN _xor_ea_r8(void) {      // 30: xo Line 776  I286FN _xor_ea_r8(void) {      // 30: xo
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 803  I286FN _xor_ea_r16(void) {      // 31: x Line 803  I286FN _xor_ea_r16(void) {      // 31: x
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 897  I286FN _cmp_ea_r8(void) {      // 38: cm Line 897  I286FN _cmp_ea_r8(void) {      // 38: cm
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 dst = *(reg8_b20[op]);                  dst = *(REG8_B20(op));
                 BYTE_SUB(res, dst, src);                  BYTE_SUB(res, dst, src);
         }          }
         else {          else {
Line 917  I286FN _cmp_ea_r16(void) {      // 39: c Line 917  I286FN _cmp_ea_r16(void) {      // 39: c
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 dst = *(reg16_b20[op]);                  dst = *(REG16_B20(op));
                 WORD_SUB(res, dst, src);                  WORD_SUB(res, dst, src);
         }          }
         else {          else {
Line 1076  I286FN _bound(void) {      // 62: bound Line 1076  I286FN _bound(void) {      // 62: bound
         I286_WORKCLOCK(13);                                                                             // ToDo          I286_WORKCLOCK(13);                                                                             // ToDo
         GET_PCBYTE(op);          GET_PCBYTE(op);
         if (op < 0xc0) {          if (op < 0xc0) {
                 reg = *(reg16_b53[op]);                  reg = *(REG16_B53(op));
                 madr = c_calc_ea_dst[op]();                  madr = c_calc_ea_dst[op]();
                 if (reg >= i286_memoryread_w(madr)) {                  if (reg >= i286_memoryread_w(madr)) {
                         madr += 2;                                                                      // ToDo                          madr += 2;                                                                      // ToDo
Line 1282  I286FN _calc_ea8_i8(void) {     // 80: o Line 1282  I286FN _calc_ea8_i8(void) {     // 80: o
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 1306  I286FN _calc_ea16_i16(void) {    // 81:  Line 1306  I286FN _calc_ea16_i16(void) {    // 81: 
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 1332  I286FN _calc_ea16_i8(void) {    // 83: o Line 1332  I286FN _calc_ea16_i8(void) {    // 83: o
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 1359  I286FN _test_ea_r8(void) {     // 84: te Line 1359  I286FN _test_ea_r8(void) {     // 84: te
         PREPART_EA_REG8(op, src);          PREPART_EA_REG8(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(6);                  I286_WORKCLOCK(6);
Line 1386  I286FN _test_ea_r16(void) {     // 85: t Line 1386  I286FN _test_ea_r16(void) {     // 85: t
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 1412  I286FN _xchg_ea_r8(void) {     // 86: xc Line 1412  I286FN _xchg_ea_r8(void) {     // 86: xc
         PREPART_EA_REG8P(op, src);          PREPART_EA_REG8P(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
Line 1438  I286FN _xchg_ea_r16(void) {     // 87: x Line 1438  I286FN _xchg_ea_r16(void) {     // 87: x
         PREPART_EA_REG16P(op, src);          PREPART_EA_REG16P(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
Line 1463  I286FN _mov_ea_r8(void) {     // 88: mov Line 1463  I286FN _mov_ea_r8(void) {     // 88: mov
         PREPART_EA_REG8(op, src)          PREPART_EA_REG8(op, src)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 *(reg8_b20[op]) = src;                  *(REG8_B20(op)) = src;
         }          }
         else {          else {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
Line 1480  I286FN _mov_ea_r16(void) {     // 89: mo Line 1480  I286FN _mov_ea_r16(void) {     // 89: mo
         PREPART_EA_REG16(op, src);          PREPART_EA_REG16(op, src);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 *(reg16_b20[op]) = src;                  *(REG16_B20(op)) = src;
         }          }
         else {          else {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
Line 1517  I286FN _mov_ea_seg(void) {     // 8C: mo Line 1517  I286FN _mov_ea_seg(void) {     // 8C: mo
         tmp = *SEGMENTPTR((op >> 3) & 3);          tmp = *SEGMENTPTR((op >> 3) & 3);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 *(reg16_b20[op]) = tmp;                  *(REG16_B20(op)) = tmp;
         }          }
         else {          else {
                 I286_WORKCLOCK(3);                  I286_WORKCLOCK(3);
Line 1532  I286FN _lea_r16_ea(void) {     // 8D: le Line 1532  I286FN _lea_r16_ea(void) {     // 8D: le
         I286_WORKCLOCK(3);          I286_WORKCLOCK(3);
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op < 0xc0) {          if (op < 0xc0) {
                 *(reg16_b53[op]) = c_calc_lea[op]();                  *(REG16_B53(op)) = c_calc_lea[op]();
         }          }
         else {          else {
                 INT_NUM(6, I286_SP - 2);                  INT_NUM(6, I286_SP - 2);
Line 1549  I286FN _mov_seg_ea(void) {     // 8E: mo Line 1549  I286FN _mov_seg_ea(void) {     // 8E: mo
         GET_PCBYTE(op);          GET_PCBYTE(op);
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 tmp = *(reg16_b20[op]);                  tmp = *(REG16_B20(op));
         }          }
         else {          else {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
Line 1593  I286FN _pop_ea(void) {      // 8F: pop   Line 1593  I286FN _pop_ea(void) {      // 8F: pop  
                 i286_memorywrite_w(c_calc_ea_dst[op](), tmp);                  i286_memorywrite_w(c_calc_ea_dst[op](), tmp);
         }          }
         else {          else {
                 *(reg16_b20[op]) = tmp;                  *(REG16_B20(op)) = tmp;
         }          }
 }  }
   
Line 1904  I286FN _shift_ea8_data8(void) {    // C0 Line 1904  I286FN _shift_ea8_data8(void) {    // C0
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(8);                  I286_WORKCLOCK(8);
Line 1932  I286FN _shift_ea16_data8(void) {   // C1 Line 1932  I286FN _shift_ea16_data8(void) {   // C1
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(8);                  I286_WORKCLOCK(8);
Line 1975  I286FN _les_r16_ea(void) {     // C4: le Line 1975  I286FN _les_r16_ea(void) {     // C4: le
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op < 0xc0) {          if (op < 0xc0) {
                 ad = c_get_ea[op]();                  ad = c_get_ea[op]();
                 *(reg16_b53[op]) = i286_memoryread_w(ad + EA_FIX);                  *(REG16_B53(op)) = i286_memoryread_w(ad + EA_FIX);
                 ad += 2;                  ad += 2;
                 I286_ES = i286_memoryread_w(ad + EA_FIX);                  I286_ES = i286_memoryread_w(ad + EA_FIX);
                 ES_BASE = I286_ES << 4;                  ES_BASE = I286_ES << 4;
Line 1994  I286FN _lds_r16_ea(void) {     // C5: ld Line 1994  I286FN _lds_r16_ea(void) {     // C5: ld
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op < 0xc0) {          if (op < 0xc0) {
                 ad = c_get_ea[op]();                  ad = c_get_ea[op]();
                 *(reg16_b53[op]) = i286_memoryread_w(ad + EA_FIX);                  *(REG16_B53(op)) = i286_memoryread_w(ad + EA_FIX);
                 ad += 2;                  ad += 2;
                 I286_DS = i286_memoryread_w(ad + EA_FIX);                  I286_DS = i286_memoryread_w(ad + EA_FIX);
                 DS_BASE = I286_DS << 4;                  DS_BASE = I286_DS << 4;
Line 2012  I286FN _mov_ea8_data8(void) {    // C6:  Line 2012  I286FN _mov_ea8_data8(void) {    // C6: 
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 GET_PCBYTE(*(reg8_b53[op]))                  GET_PCBYTE(*(REG8_B53(op)))
         }          }
         else {          else {
                 UINT ad;                  UINT ad;
Line 2031  I286FN _mov_ea16_data16(void) {    // C7 Line 2031  I286FN _mov_ea16_data16(void) {    // C7
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 GET_PCWORD(*(reg16_b53[op]))                  GET_PCWORD(*(REG16_B53(op)))
         }          }
         else {          else {
                 UINT    ad;                  UINT    ad;
Line 2166  I286FN _shift_ea8_1(void) {    // D0: sh Line 2166  I286FN _shift_ea8_1(void) {    // D0: sh
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 2189  I286FN _shift_ea16_1(void) {   // D1: sh Line 2189  I286FN _shift_ea16_1(void) {   // D1: sh
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(2);                  I286_WORKCLOCK(2);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(7);                  I286_WORKCLOCK(7);
Line 2213  I286FN _shift_ea8_cl(void) {   // D2: sh Line 2213  I286FN _shift_ea8_cl(void) {   // D2: sh
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
                 out = reg8_b20[op];                  out = REG8_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(8);                  I286_WORKCLOCK(8);
Line 2241  I286FN _shift_ea16_cl(void) {   // D3: s Line 2241  I286FN _shift_ea16_cl(void) {   // D3: s
         GET_PCBYTE(op)          GET_PCBYTE(op)
         if (op >= 0xc0) {          if (op >= 0xc0) {
                 I286_WORKCLOCK(5);                  I286_WORKCLOCK(5);
                 out = reg16_b20[op];                  out = REG16_B20(op);
         }          }
         else {          else {
                 I286_WORKCLOCK(8);                  I286_WORKCLOCK(8);

Removed from v.1.9  
changed lines
  Added in v.1.10


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