|
|
| 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; |
| } | } |
| } | } |