Diff for /np2/i286c/i286c.c between versions 1.4 and 1.6

version 1.4, 2003/10/17 12:49:52 version 1.6, 2003/10/26 07:50:36
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
 #include        "i286.h"  #include        "i286.h"
 #include        "i286c.h"  #include        "i286c.h"
   #include        "v30patch.h"
 #include        "memory.h"  #include        "memory.h"
 #include        "pccore.h"  #include        "pccore.h"
 #include        "iocore.h"  #include        "iocore.h"
Line 137  void i286_initialize(void) { Line 138  void i286_initialize(void) {
                 szpflag_w[i] = f;                  szpflag_w[i] = f;
         }          }
 #endif  #endif
           v30init();
 }  }
   
 void i286_reset(void) {  void i286_reset(void) {
Line 165  const BYTE *ptr; Line 167  const BYTE *ptr;
         I286_IP = LOADINTELWORD(ptr+0);                         // real mode!          I286_IP = LOADINTELWORD(ptr+0);                         // real mode!
         I286_CS = LOADINTELWORD(ptr+2);                         // real mode!          I286_CS = LOADINTELWORD(ptr+2);                         // real mode!
         CS_BASE = I286_CS << 4;          CS_BASE = I286_CS << 4;
         I286_CLOCK(20)          I286_WORKCLOCK(20);
 }  }
   
 void CPUCALL i286_interrupt(BYTE vect) {  void CPUCALL i286_interrupt(BYTE vect) {
Line 177  const BYTE *ptr; Line 179  const BYTE *ptr;
         if (op == 0xf4) {                                                       // hlt          if (op == 0xf4) {                                                       // hlt
                 I286_IP++;                  I286_IP++;
         }          }
         REGPUSH0(REAL_FLAGREG)          REGPUSH0(REAL_FLAGREG)                                          // ここV30で辻褄が合わない
         REGPUSH0(I286_CS)          REGPUSH0(I286_CS)
         REGPUSH0(I286_IP)          REGPUSH0(I286_IP)
   
Line 188  const BYTE *ptr; Line 190  const BYTE *ptr;
         I286_IP = LOADINTELWORD(ptr+0);                         // real mode!          I286_IP = LOADINTELWORD(ptr+0);                         // real mode!
         I286_CS = LOADINTELWORD(ptr+2);                         // real mode!          I286_CS = LOADINTELWORD(ptr+2);                         // real mode!
         CS_BASE = I286_CS << 4;          CS_BASE = I286_CS << 4;
         I286_CLOCK(20)          I286_WORKCLOCK(20);
 }  }
   
 void i286(void) {  void i286(void) {
Line 203  void i286(void) { Line 205  void i286(void) {
                                 i286_interrupt(1);                                  i286_interrupt(1);
                         }                          }
                         dmap_i286();                          dmap_i286();
                 } while(nevent.remainclock > 0);                  } while(I286_REMCLOCK > 0);
         }          }
         else if (dmac.working) {          else if (dmac.working) {
                 do {                  do {
                         GET_PCBYTE(opcode);                          GET_PCBYTE(opcode);
                         i286op[opcode]();                          i286op[opcode]();
                         dmap_i286();                          dmap_i286();
                 } while(nevent.remainclock > 0);                  } while(I286_REMCLOCK > 0);
         }          }
         else {          else {
                 do {                  do {
                         GET_PCBYTE(opcode);                          GET_PCBYTE(opcode);
                         i286op[opcode]();                          i286op[opcode]();
                 } while(nevent.remainclock > 0);                  } while(I286_REMCLOCK > 0);
         }          }
 }  }
   

Removed from v.1.4  
changed lines
  Added in v.1.6


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