Diff for /np2/nevent.c between versions 1.1.1.1 and 1.4

version 1.1.1.1, 2003/10/16 17:57:06 version 1.4, 2003/11/13 15:33:05
Line 1 Line 1
 #include        "compiler.h"  #include        "compiler.h"
   #include        "i286.h"
 #include        "pccore.h"  #include        "pccore.h"
   
   
Line 15  void nevent_get1stevent(void) { Line 16  void nevent_get1stevent(void) {
   
         // 最短のイベントのクロック数をセット          // 最短のイベントのクロック数をセット
         if (nevent.readyevents) {          if (nevent.readyevents) {
                 nevent.baseclock = nevent.item[nevent.level[0]].clock;                  I286_BASECLOCK = nevent.item[nevent.level[0]].clock;
         }          }
         else {          else {
                 // イベントがない場合のクロック数をセット                  // イベントがない場合のクロック数をセット
                 nevent.baseclock = NEVENT_MAXCLOCK;                  I286_BASECLOCK = NEVENT_MAXCLOCK;
         }          }
   
         // カウンタへセット          // カウンタへセット
         nevent.remainclock = nevent.baseclock;          I286_REMCLOCK = I286_BASECLOCK;
 }  }
   
 static void nevent_execute(void) {  static void nevent_execute(void) {
Line 63  void nevent_progress(void) { Line 64  void nevent_progress(void) {
         UINT            curid;          UINT            curid;
         NEVENTITEM      item;          NEVENTITEM      item;
   
         nevent.clock += nevent.baseclock;          I286_CLOCK += I286_BASECLOCK;
         eventnum = 0;          eventnum = 0;
         nextbase = NEVENT_MAXCLOCK;          nextbase = NEVENT_MAXCLOCK;
         for (i=0; i<nevent.readyevents; i++) {          for (i=0; i<nevent.readyevents; i++) {
                 curid = nevent.level[i];                  curid = nevent.level[i];
                 item = &nevent.item[curid];                  item = &nevent.item[curid];
                 item->clock -= nevent.baseclock;                  item->clock -= I286_BASECLOCK;
                 if (item->clock > 0) {                  if (item->clock > 0) {
                         // イベント待ち中                          // イベント待ち中
                         nevent.level[eventnum++] = curid;                          nevent.level[eventnum++] = curid;
Line 84  void nevent_progress(void) { Line 85  void nevent_progress(void) {
                         }                          }
                         item->flag |= NEVENT_SETEVENT;                          item->flag |= NEVENT_SETEVENT;
                         item->flag &= ~(NEVENT_ENABLE);                          item->flag &= ~(NEVENT_ENABLE);
   //                      TRACEOUT(("event = %x", curid));
                 }                  }
         }          }
         nevent.readyevents = eventnum;          nevent.readyevents = eventnum;
         nevent.baseclock = nextbase;          I286_BASECLOCK = nextbase;
         nevent.remainclock += nextbase;          I286_REMCLOCK += nextbase;
         nevent_execute();          nevent_execute();
 //      TRACEOUT((buf, "nextbase = %d (%d)", nextbase, nevent.remainclock));  //      TRACEOUT(("nextbase = %d (%d)", nextbase, I286_REMCLOCK));
 }  }
   
   
Line 141  void nevent_set(UINT id, SINT32 eventclo Line 143  void nevent_set(UINT id, SINT32 eventclo
         UINT            eventid;          UINT            eventid;
         UINT            i;          UINT            i;
   
         clock = nevent.baseclock - nevent.remainclock;          clock = I286_BASECLOCK - I286_REMCLOCK;
         item = &nevent.item[id];          item = &nevent.item[id];
         item->proc = proc;          item->proc = proc;
         item->flag = 0;          item->flag = 0;
Line 175  void nevent_set(UINT id, SINT32 eventclo Line 177  void nevent_set(UINT id, SINT32 eventclo
   
         // もし最短イベントだったら...          // もし最短イベントだったら...
         if (eventid == 0) {          if (eventid == 0) {
                 clock = nevent.baseclock - item->clock;                  clock = I286_BASECLOCK - item->clock;
                 nevent.baseclock -= clock;                  I286_BASECLOCK -= clock;
                 nevent.remainclock -= clock;                  I286_REMCLOCK -= clock;
 //              TRACEOUT(("reset nextbase -%d (%d)", clock, nevent.remainclock));  //              TRACEOUT(("reset nextbase -%d (%d)", clock, I286_REMCLOCK));
         }          }
 }  }
   
Line 207  SINT32 nevent_getremain(UINT id) { Line 209  SINT32 nevent_getremain(UINT id) {
         // 現在進行してるイベントを検索          // 現在進行してるイベントを検索
         for (i=0; i<nevent.readyevents; i++) {          for (i=0; i<nevent.readyevents; i++) {
                 if (nevent.level[i] == id) {                  if (nevent.level[i] == id) {
                         return(nevent.item[id].clock -                          return(nevent.item[id].clock - (I286_BASECLOCK - I286_REMCLOCK));
                                                                 (nevent.baseclock - nevent.remainclock));  
                 }                  }
         }          }
         return(-1);          return(-1);
Line 216  SINT32 nevent_getremain(UINT id) { Line 217  SINT32 nevent_getremain(UINT id) {
   
 void nevent_forceexit(void) {  void nevent_forceexit(void) {
   
         if (nevent.remainclock > 0) {          if (I286_REMCLOCK > 0) {
                 nevent.baseclock -= nevent.remainclock;                  I286_BASECLOCK -= I286_REMCLOCK;
                 nevent.remainclock = 0;                  I286_REMCLOCK = 0;
         }          }
 }  }
   

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


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