Diff for /xmil/ievent.c between versions 1.3 and 1.4

version 1.3, 2004/08/11 16:09:04 version 1.4, 2004/08/14 12:16:17
Line 9 Line 9
 // ここでデイジーチェイン  // ここでデイジーチェイン
   
   
         IEVENT  ievent;  
   
   
 typedef BRESULT (*IEVENTFN)(UINT id);  typedef BRESULT (*IEVENTFN)(UINT id);
   
 static BRESULT dummy(UINT id) {  static BRESULT dummy(UINT id) {
Line 31  static const IEVENTFN ieventfn[IEVENT_MA Line 28  static const IEVENTFN ieventfn[IEVENT_MA
   
 // ----  // ----
   
 void ievent_reset(void) {  
 }  
   
 void ievent_progress(void) {  void ievent_progress(void) {
   
         UINT    i;          UINT    i;
         UINT    bit;          UINT    bit;
   
         if ((CPU_REQIRQ == 0) || (!Z80_ABLEINTERRUPT())) {          if ((CPU_REQIRQ == 0) || (Z80_DI)) {
                 return;                  return;
         }          }
         for (i=0, bit=1; i<IEVENT_MAX; i++, bit<<=1) {          for (i=0, bit=1; i<IEVENT_MAX; i++, bit<<=1) {
                   if (CPU_IRQ & bit) {
                           break;
                   }
                 if (CPU_REQIRQ & bit) {                  if (CPU_REQIRQ & bit) {
                         CPU_REQIRQ ^= bit;                          CPU_REQIRQ ^= bit;
                         if (ieventfn[i](i)) {                          if (ieventfn[i](i)) {
                                   if (i != IEVENT_SUBCPU) {               // サブCPUは別処理
                                           CPU_IRQ |= bit;
                                   }
                                 return;                                  return;
                         }                          }
                 }                  }
Line 56  void ievent_setbit(UINT bit) { Line 56  void ievent_setbit(UINT bit) {
   
         UINT    r;          UINT    r;
   
         r = CPU_REQIRQ;          if (CPU_REQIRQ & bit) {
         if (r & bit) {  
                 return;                  return;
         }          }
         CPU_REQIRQ |= bit;          CPU_REQIRQ |= bit;
         if ((!r) && (Z80_ABLEINTERRUPT())) {          if (Z80_DI) {
                 nevent_forceexit();                  return;
           }
           r = CPU_IRQ;
           r = (r ^ (r - 1)) >> 1;
           if (!(r & bit)) {
                   return;
         }          }
           nevent_forceexit();
 }  }
   

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


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