--- xmil/statsave.c 2004/08/13 04:08:33 1.3 +++ xmil/statsave.c 2005/02/04 06:42:07 1.7 @@ -340,125 +340,80 @@ static int flagload_common(STFLAGH sfh, // ---- event typedef struct { + UINT32 next; SINT32 clock; - SINT32 base; - UINT32 param; + SINT32 baseclock; UINT32 proc; } NEVTITEM; typedef struct { - UINT readys; - UINT events; - UINT32 ready[NEVENT_MAXEVENTS]; - UINT32 event[NEVENT_MAXEVENTS]; + NEVTITEM item[NEVENT_MAXEVENTS]; + UINT32 first; } NEVTSAVE; -static UINT32 evt2id(UINT evt) { +static UINT32 evt2id(NEVENTITEM next) { - UINT i; - - for (i=0; iclock; - nit.base = ne->baseclock; - nit.proc = proc2id((INTPTR)ne->proc, evtproc, NELEMENTS(evtproc)); - nit.param = ne->param; - return(statflag_write(sfh, &nit, sizeof(nit))); + if (n == (UINT32)-2) { + return(NEVENTITEM_NONE); + } + else if (n == (UINT32)-1) { + return(NEVENTITEM_TERM); + } + else if (n < NEVENT_MAXEVENTS) { + return(nevent.item + n); + } + else { + // error! + return(NEVENTITEM_TERM); + } } static int flagsave_evt(STFLAGH sfh, const SFENTRY *tbl) { NEVTSAVE nevt; UINT i; - UINT32 id; - UINT eventid[NEVENT_MAXEVENTS]; - int ret; - ZeroMemory(&nevt, sizeof(nevt)); - for (i=0; i= NEVENT_MAXEVENTS) { - return(STATFLAG_FAILURE); - } - ne = nevent.item + evt; - ne->clock = nit.clock; - ne->baseclock = nit.base; - ne->proc = (NEVENTCB)id2proc(nit.proc, evtproc, NELEMENTS(evtproc)); - ne->param = nit.param; - return(ret); + return(statflag_write(sfh, &nevt, sizeof(nevt))); } static int flagload_evt(STFLAGH sfh, const SFENTRY *tbl) { - int ret; NEVTSAVE nevt; + int ret; UINT i; - UINT evt; - UINT readyevents; ret = statflag_read(sfh, &nevt, sizeof(nevt)); - readyevents = 0; - for (i=0; itype != DISKTYPE_NOTREADY) { + file_cpyname(st.fname, fdd->fname, NELEMENTS(st.fname)); + st.ftype = fdd->ftype; + st.readonly = fdd->protect; + fh = file_open_rb(st.fname); if (fh != FILEH_INVALID) { file_getdatetime(fh, &st.date, &st.time); file_close(fh); @@ -501,8 +458,8 @@ static int flagsave_disk(STFLAGH sfh, co REG8 i; ret = STATFLAG_SUCCESS; - for (i=0; i<4; i++) { - ret |= disksave(sfh, fddfile_diskname(i), fddfile_diskprotect(i)); + for (i=0; i