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

version 1.5, 2003/12/01 10:45:46 version 1.7, 2003/12/12 01:04:40
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "i286.h"  #include        "cpucore.h"
 #include        "i286c.h"  #include        "i286c.h"
 #include        "v30patch.h"  #include        "v30patch.h"
 #include        "memory.h"  
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
 #include        "bios.h"  #include        "bios.h"
Line 97  I286FN v30segprefix_es(void) {    // 26: Line 96  I286FN v30segprefix_es(void) {    // 26:
   
         SS_FIX = ES_BASE;          SS_FIX = ES_BASE;
         DS_FIX = ES_BASE;          DS_FIX = ES_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op[op]();                  v30op[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 114  I286FN v30segprefix_cs(void) {    // 2e: Line 113  I286FN v30segprefix_cs(void) {    // 2e:
   
         SS_FIX = CS_BASE;          SS_FIX = CS_BASE;
         DS_FIX = CS_BASE;          DS_FIX = CS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op[op]();                  v30op[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 131  I286FN v30segprefix_ss(void) {    // 36: Line 130  I286FN v30segprefix_ss(void) {    // 36:
   
         SS_FIX = SS_BASE;          SS_FIX = SS_BASE;
         DS_FIX = SS_BASE;          DS_FIX = SS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op[op]();                  v30op[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 148  I286FN v30segprefix_ds(void) {    // 3e: Line 147  I286FN v30segprefix_ds(void) {    // 3e:
   
         SS_FIX = DS_BASE;          SS_FIX = DS_BASE;
         DS_FIX = DS_BASE;          DS_FIX = DS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op[op]();                  v30op[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 413  I286FN v30_xlat(void) {      // D6: xlat Line 412  I286FN v30_xlat(void) {      // D6: xlat
   
 I286FN v30_repne(void) {                                        // F2:  repne  I286FN v30_repne(void) {                                        // F2:  repne
   
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repne[op]();                  v30op_repne[op]();
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 427  I286FN v30_repne(void) {     // F2: repn Line 426  I286FN v30_repne(void) {     // F2: repn
   
 I286FN v30_repe(void) {                                         // F3:  repe  I286FN v30_repe(void) {                                         // F3:  repe
   
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repe[op]();                  v30op_repe[op]();
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 472  I286FN v30repe_segprefix_es(void) { Line 471  I286FN v30repe_segprefix_es(void) {
   
         DS_FIX = ES_BASE;          DS_FIX = ES_BASE;
         SS_FIX = ES_BASE;          SS_FIX = ES_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repe[op]();                  v30op_repe[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 489  I286FN v30repe_segprefix_cs(void) { Line 488  I286FN v30repe_segprefix_cs(void) {
   
         DS_FIX = CS_BASE;          DS_FIX = CS_BASE;
         SS_FIX = CS_BASE;          SS_FIX = CS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repe[op]();                  v30op_repe[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 506  I286FN v30repe_segprefix_ss(void) { Line 505  I286FN v30repe_segprefix_ss(void) {
   
         DS_FIX = SS_BASE;          DS_FIX = SS_BASE;
         SS_FIX = SS_BASE;          SS_FIX = SS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repe[op]();                  v30op_repe[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 523  I286FN v30repe_segprefix_ds(void) { Line 522  I286FN v30repe_segprefix_ds(void) {
   
         DS_FIX = DS_BASE;          DS_FIX = DS_BASE;
         SS_FIX = DS_BASE;          SS_FIX = DS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repe[op]();                  v30op_repe[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 569  I286FN v30repne_segprefix_es(void) { Line 568  I286FN v30repne_segprefix_es(void) {
   
         DS_FIX = ES_BASE;          DS_FIX = ES_BASE;
         SS_FIX = ES_BASE;          SS_FIX = ES_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repne[op]();                  v30op_repne[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 586  I286FN v30repne_segprefix_cs(void) { Line 585  I286FN v30repne_segprefix_cs(void) {
   
         DS_FIX = CS_BASE;          DS_FIX = CS_BASE;
         SS_FIX = CS_BASE;          SS_FIX = CS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repne[op]();                  v30op_repne[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 603  I286FN v30repne_segprefix_ss(void) { Line 602  I286FN v30repne_segprefix_ss(void) {
   
         DS_FIX = SS_BASE;          DS_FIX = SS_BASE;
         SS_FIX = SS_BASE;          SS_FIX = SS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repne[op]();                  v30op_repne[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 620  I286FN v30repne_segprefix_ds(void) { Line 619  I286FN v30repne_segprefix_ds(void) {
   
         DS_FIX = DS_BASE;          DS_FIX = DS_BASE;
         SS_FIX = DS_BASE;          SS_FIX = DS_BASE;
         i286core.s.prefix++;          I286_PREFIX++;
         if (i286core.s.prefix < MAX_PREFIX) {          if (I286_PREFIX < MAX_PREFIX) {
                 UINT op;                  UINT op;
                 GET_PCBYTE(op);                  GET_PCBYTE(op);
                 v30op_repne[op]();                  v30op_repne[op]();
                 REMOVE_PREFIX                  REMOVE_PREFIX
                 i286core.s.prefix = 0;                  I286_PREFIX = 0;
         }          }
         else {          else {
                 INT_NUM(6, I286_IP);                  INT_NUM(6, I286_IP);
Line 672  static void v30patching(void (*op[])(voi Line 671  static void v30patching(void (*op[])(voi
   
 #define V30PATCHING(a, b)       v30patching(a, b, sizeof(b)/sizeof(V30PATCH))  #define V30PATCHING(a, b)       v30patching(a, b, sizeof(b)/sizeof(V30PATCH))
   
 void v30init(void) {  void v30cinit(void) {
   
         CopyMemory(v30op, i286op, sizeof(v30op));          CopyMemory(v30op, i286op, sizeof(v30op));
         V30PATCHING(v30op, v30patch_op);          V30PATCHING(v30op, v30patch_op);
Line 682  void v30init(void) { Line 681  void v30init(void) {
         V30PATCHING(v30op_repe, v30patch_repe);          V30PATCHING(v30op_repe, v30patch_repe);
 }  }
   
 void v30(void) {  void v30c(void) {
   
         UINT    opcode;          UINT    opcode;
   
Line 691  void v30(void) { Line 690  void v30(void) {
                         GET_PCBYTE(opcode);                          GET_PCBYTE(opcode);
                         v30op[opcode]();                          v30op[opcode]();
                         if (I286_TRAP) {                          if (I286_TRAP) {
                                 i286_interrupt(1);                                  i286c_interrupt(1);
                         }                          }
                         dmap_v30();                          dmap_v30();
                 } while(I286_REMCLOCK > 0);                  } while(I286_REMCLOCK > 0);
Line 711  void v30(void) { Line 710  void v30(void) {
         }          }
 }  }
   
 void v30_step(void) {  void v30c_step(void) {
   
         UINT    opcode;          UINT    opcode;
   

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


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