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