--- np2/macos9/np2.cpp 2004/02/18 06:52:33 1.30 +++ np2/macos9/np2.cpp 2005/03/21 02:24:23 1.39 @@ -31,10 +31,16 @@ #include "fddfile.h" -#define USE_RESUME - - - NP2OSCFG np2oscfg = {100, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + NP2OSCFG np2oscfg = {100, 100, + 0, 0, 0, 0, + 0, 0, +#if defined(SUPPORT_RESUME) + 0, +#endif +#if defined(SUPPORT_STATSAVE) + 0, +#endif + 0, 0}; WindowPtr hWndMain; BOOL np2running; @@ -53,8 +59,70 @@ static BYTE scrnmode; #endif static char target[MAX_PATH] = DEFAULTPATH; +#if !defined(SUPPORT_PC9821) +static const char np2app[] = "np2"; +#else +static const char np2app[] = "np21"; +#endif + + +// ---- + +#if defined(SUPPORT_RESUME) +static const char np2resumeext[] = ".sav"; +#endif +#if defined(SUPPORT_STATSAVE) +static const char np2flagext[] = ".sv%u"; +#endif -static const char np2resume[] = "sav"; +#if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE) +static void getstatfilename(char *path, const char *ext, UINT size) { + + file_cpyname(path, file_getcd(np2app), size); + file_catname(path, ext, size); +} + +static void flagsave(const char *ext) { + + char path[MAX_PATH]; + + getstatfilename(path, ext, sizeof(path)); + statsave_save(path); +} + +static void flagdelete(const char *ext) { + + char path[MAX_PATH]; + + getstatfilename(path, ext, sizeof(path)); + file_delete(path); +} + +static int flagload(const char *ext, BOOL force) { + + char path[MAX_PATH]; + char buf[1024]; + int r; + int ret; + + getstatfilename(path, ext, sizeof(path)); + r = statsave_check(path, buf, sizeof(buf)); + if (r & (~STATFLAG_DISKCHG)) { + ResumeErrorDialogProc(); + ret = IDCANCEL; + } + else if ((!force) && (r & STATFLAG_DISKCHG)) { + ret = ResumeWarningDialogProc(buf); + } + else { + ret = IDOK; + } + if (ret == IDOK) { + statsave_load(path); + } + return(ret); +} +#endif // ---- おまじない @@ -151,6 +219,28 @@ static void MenuBarInit(void) { EnableItem(GetMenuHandle(IDM_DEVICE), LoWord(IDM_MOUSE)); EnableItem(GetMenuHandle(IDM_KEYBOARD), LoWord(IDM_F12MOUSE)); #endif + + if (!(np2cfg.fddequip & 1)) { + DeleteMenu(IDM_FDD1); + } + if (!(np2cfg.fddequip & 2)) { + DeleteMenu(IDM_FDD2); + } + if (!(np2cfg.fddequip & 4)) { + DeleteMenu(IDM_FDD3); + } + if (!(np2cfg.fddequip & 8)) { + DeleteMenu(IDM_FDD4); + } + +#if defined(SUPPORT_STATSAVE) + if (!np2oscfg.statsave) { +#endif + DeleteMenu(IDM_STATSAVE); +#if defined(SUPPORT_STATSAVE) + } +#endif + DrawMenuBar(); } @@ -163,6 +253,10 @@ static void HandleMenuChoice(long wParam UINT update; Str255 applname; +#if defined(SUPPORT_STATSAVE) + UINT num; + char ext[16]; +#endif update = 0; switch(wParam) { @@ -207,6 +301,22 @@ static void HandleMenuChoice(long wParam diskdrv_setfdd(1, NULL, 0); break; + case IDM_FDD3OPEN: + dialog_changefdd(2); + break; + + case IDM_FDD3EJECT: + diskdrv_setfdd(2, NULL, 0); + break; + + case IDM_FDD4OPEN: + dialog_changefdd(3); + break; + + case IDM_FDD4EJECT: + diskdrv_setfdd(3, NULL, 0); + break; + case IDM_SASI1OPEN: dialog_changehdd(0x00); break; @@ -322,6 +432,10 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; break; + case IDM_MIDIOPT: + MPU98DialogProc(); + break; + case IDM_MIDIPANIC: rs232c_midipanic(); mpu98ii_midipanic(); @@ -522,6 +636,16 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; break; + case IDM_MEM116: + menu_setextmem(11); + update |= SYS_UPDATECFG; + break; + + case IDM_MEM136: + menu_setextmem(13); + update |= SYS_UPDATECFG; + break; + case IDM_BMPSAVE: dialog_writebmp(); break; @@ -562,6 +686,19 @@ static void HandleMenuChoice(long wParam (void)OpenDeskAcc(applname); #endif } +#if defined(SUPPORT_STATSAVE) + else if (HiWord(wParam) == IDM_STATSAVE) { + num = LoWord(wParam); + if ((num >= 1) && (num < (1 + 10))) { + SPRINTF(ext, np2flagext, num - 1); + flagsave(ext); + } + else if ((num >= 12) && (num < (12 + 10))) { + SPRINTF(ext, np2flagext, num - 12); + flagload(ext, TRUE); + } + } +#endif break; } sysmng_update(update); @@ -709,52 +846,6 @@ static void processwait(UINT waitcnt) { } } -static void getstatfilename(char *path, const char *ext, int size) { - - file_cpyname(path, file_getcd("np2"), size); - file_catname(path, str_dot, size); - file_catname(path, ext, size); -} - -static void flagsave(const char *ext) { - - char path[MAX_PATH]; - - getstatfilename(path, ext, sizeof(path)); - statsave_save(path); -} - -static void flagdelete(const char *ext) { - - char path[MAX_PATH]; - - getstatfilename(path, ext, sizeof(path)); - file_delete(path); -} - -static int flagload(const char *ext) { - - int ret; - char path[MAX_PATH]; - char buf[1024]; - int r; - - ret = IDOK; - getstatfilename(path, ext, sizeof(path)); - r = statsave_check(path, buf, sizeof(buf)); - if (r & (~STATFLAG_DISKCHG)) { - ResumeErrorDialogProc(); - ret = IDCANCEL; - } - else if (r & STATFLAG_DISKCHG) { - ret = ResumeWarningDialogProc(buf); - } - if (ret == IDOK) { - statsave_load(path); - } - return(ret); -} - int main(int argc, char *argv[]) { Rect wRect; @@ -768,15 +859,22 @@ int main(int argc, char *argv[]) { InitToolBox(); macossub_init(); - MenuBarInit(); - initload(); + MenuBarInit(); + TRACEINIT(); + keystat_initialize(); + SetRect(&wRect, np2oscfg.posx, np2oscfg.posy, 100, 100); +#if !defined(SUPPORT_PC9821) hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE, noGrowDocProc, (WindowPtr)-1, TRUE, 0); +#else + hWndMain = NewWindow(0, &wRect, "\pNeko Project 21", FALSE, + noGrowDocProc, (WindowPtr)-1, TRUE, 0); +#endif if (!hWndMain) { TRACETERM(); macossub_term(); @@ -789,8 +887,10 @@ int main(int argc, char *argv[]) { menu_setrotate(0); menu_setdispmode(np2cfg.DISPSYNC); + menu_setraster(np2cfg.RASTER); menu_setwaitflg(np2oscfg.NOWAIT); menu_setframe(np2oscfg.DRAW_SKIP); + menu_setkey(0); menu_setxshift(0); menu_setf11key(np2oscfg.F11KEY); @@ -800,6 +900,7 @@ int main(int argc, char *argv[]) { menu_setjastsnd(np2oscfg.jastsnd); menu_setmotorflg(np2cfg.MOTOR); menu_setextmem(np2cfg.EXTMEM); + menu_setdispclk(np2oscfg.DISPCLK); menu_setbtnrapid(np2cfg.BTN_RAPID); menu_setbtnmode(np2cfg.BTN_MODE); @@ -834,9 +935,11 @@ int main(int argc, char *argv[]) { // scrndraw_redraw(); pccore_reset(); +#if defined(SUPPORT_RESUME) if (np2oscfg.resume) { - flagload(np2resume); + flagload(np2resumeext, FALSE); } +#endif SetEventMask(everyEvent); @@ -929,12 +1032,14 @@ int main(int argc, char *argv[]) { pccore_cfgupdate(); +#if defined(SUPPORT_RESUME) if (np2oscfg.resume) { - flagsave(np2resume); + flagsave(np2resumeext); } else { - flagdelete(np2resume); + flagdelete(np2resumeext); } +#endif pccore_term(); S98_trash();