--- np2/macos9/np2.cpp 2003/10/23 15:57:16 1.4 +++ np2/macos9/np2.cpp 2003/11/09 21:57:04 1.11 @@ -3,6 +3,8 @@ #include "strres.h" #include "np2.h" #include "dosio.h" +#include "commng.h" +#include "mousemng.h" #include "scrnmng.h" #include "soundmng.h" #include "sysmng.h" @@ -10,6 +12,7 @@ #include "mackbd.h" #include "ini.h" #include "menu.h" +#include "np2open.h" #include "dialog.h" #include "memory.h" #include "pccore.h" @@ -27,14 +30,11 @@ #include "fddfile.h" #include "statsave.h" -#if defined(NP2GCC) -#include "mousemng.h" -#endif #define USE_RESUME - NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0}; + NP2OSCFG np2oscfg = {0, 2, 0, 0, 0, 0, 0}; WindowPtr hWndMain; BOOL np2running; @@ -115,6 +115,16 @@ static void MenuBarInit(void) { InsertMenu(GetMenu(IDM_KEYBOARD), -1); InsertMenu(GetMenu(IDM_SOUND), -1); InsertMenu(GetMenu(IDM_MEMORY), -1); + SetMenuItemModifiers(GetMenuHandle(IDM_FDD2), LoWord(IDM_FDD2OPEN), + kMenuOptionModifier); + SetMenuItemModifiers(GetMenuHandle(IDM_FDD2), LoWord(IDM_FDD2EJECT), + kMenuOptionModifier); + SetMenuItemModifiers(GetMenuHandle(IDM_SASI2), LoWord(IDM_SASI2OPEN), + kMenuOptionModifier); +#if TARGET_API_MAC_CARBON + DisableMenuItem(GetMenuHandle(IDM_DEVICE), LoWord(IDM_MOUSE)); + DisableMenuItem(GetMenuHandle(IDM_KEYBOARD), LoWord(IDM_F12MOUSE)); +#endif DrawMenuBar(); } @@ -244,13 +254,21 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; break; -#if defined(NP2GCC) + case IDM_SCREENOPT: + dialog_scropt(); + break; + case IDM_MOUSE: - mouse_running(MOUSE_XOR); + mousemng_toggle(MOUSEPROC_SYSTEM); menu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); break; -#endif + + case IDM_MIDIPANIC: + rs232c_midipanic(); + mpu98ii_midipanic(); + pc9861k_midipanic(); + break; case IDM_KEY: menu_setkey(0); @@ -447,7 +465,12 @@ static void HandleUpdateEvent(EventRecor hWnd = (WindowPtr)pevent->message; BeginUpdate(hWnd); - scrndraw_redraw(); + if (np2running) { + scrndraw_redraw(); + } + else { + np2open(); + } EndUpdate(hWnd); } @@ -458,7 +481,11 @@ static void HandleMouseDown(EventRecord switch(FindWindow(pevent->where, &hWnd)) { case inMenuBar: - HandleMenuChoice(MenuSelect(pevent->where)); + if (np2running) { + soundmng_stop(); + HandleMenuChoice(MenuSelect(pevent->where)); + soundmng_play(); + } break; case inDrag: @@ -478,14 +505,8 @@ static void HandleMouseDown(EventRecord break; case inContent: -#if defined(NP2GCC) - if (controlKey & GetCurrentKeyModifiers() ) { - mouse_btn(MOUSE_RIGHTDOWN); - } - else { - mouse_btn(MOUSE_LEFTDOWN); - } -#endif + mousemng_buttonevent((pevent->modifiers & (1 << 12)) + ?MOUSEMNG_RIGHTDOWN:MOUSEMNG_LEFTDOWN); break; case inGoAway: @@ -508,9 +529,13 @@ static void eventproc(EventRecord *event case keyDown: case autoKey: - mackbd_f12down(((event->message) & keyCodeMask) >> 8); - if (event->modifiers & cmdKey) { - HandleMenuChoice(MenuKey(event->message & charCodeMask)); + if (np2running) { + mackbd_f12down(((event->message) & keyCodeMask) >> 8); + if (event->modifiers & cmdKey) { + soundmng_stop(); + HandleMenuChoice(MenuKey(event->message & charCodeMask)); + soundmng_play(); + } } break; @@ -518,32 +543,31 @@ static void eventproc(EventRecord *event mackbd_f12up(((event->message) & keyCodeMask) >> 8); break; -#if defined(NP2GCC) - case mouseUp: - if (controlKey & GetCurrentKeyModifiers()) { - mouse_btn(MOUSE_RIGHTUP); - } - else { - mouse_btn(MOUSE_LEFTUP); - } + case mouseUp: + mousemng_buttonevent(MOUSEMNG_LEFTUP); + mousemng_buttonevent(MOUSEMNG_RIGHTUP); break; -#endif } } // ---- +static void framereset(void) { + + framecnt = 0; + if (np2oscfg.DISPCLK & 3) { + if (sysmng_workclockrenewal()) { + sysmng_updatecaption(3); + } + } +} + static void processwait(UINT waitcnt) { if (timing_getcount() >= waitcnt) { timing_setcount(0); - framecnt = 0; - if (np2oscfg.DISPCLK & 3) { - if (sysmng_workclockrenewal()) { - sysmng_updatecaption(3); - } - } + framereset(); } } @@ -562,23 +586,42 @@ static void flagsave(const char *ext) { statsave_save(path); } -static void flagload(const char *ext) { +static void flagdelete(const char *ext) { char path[MAX_PATH]; - char buf[1024]; + + 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)); - ret = statsave_check(path, buf, sizeof(buf)); - if (ret == NP2FLAG_SUCCESS) { + r = statsave_check(path, buf, sizeof(buf)); + if (r & (~NP2FLAG_DISKCHG)) { + ResumeErrorDialogProc(); + ret = IDCANCEL; + } + else if (r & NP2FLAG_DISKCHG) { + ret = ResumeWarningDialogProc(buf); + } + if (ret == IDOK) { statsave_load(path); } + return(ret); } int main(int argc, char *argv[]) { Rect wRect; EventRecord event; + UINT t; dosio_init(); file_setcd(target); @@ -628,17 +671,25 @@ int main(int argc, char *argv[]) { return(0); } + np2open(); + t = GETTICK(); + while((GETTICK() - t) < 100) { + if (WaitNextEvent(everyEvent, &event, 0, 0)) { + eventproc(&event); + } + } + + commng_initialize(); sysmng_initialize(); mackbd_initialize(); pccore_init(); S98_init(); -#if defined(NP2GCC) + mousemng_initialize(); if (np2oscfg.MOUSE_SW) { // ver0.30 - mouse_running(MOUSE_ON); + mousemng_enable(MOUSEPROC_SYSTEM); } -#endif - scrndraw_redraw(); +// scrndraw_redraw(); pccore_reset(); if (np2oscfg.resume) { @@ -654,10 +705,8 @@ int main(int argc, char *argv[]) { } else { if (np2oscfg.NOWAIT) { -#if defined(NP2GCC) - mouse_callback(); -#endif mackbd_callback(); + mousemng_callback(); pccore_exec(framecnt == 0); if (np2oscfg.DRAW_SKIP) { // nowait frame skip framecnt++; @@ -674,10 +723,8 @@ int main(int argc, char *argv[]) { } else if (np2oscfg.DRAW_SKIP) { // frame skip if (framecnt < np2oscfg.DRAW_SKIP) { -#if defined(NP2GCC) - mouse_callback(); -#endif mackbd_callback(); + mousemng_callback(); pccore_exec(framecnt == 0); framecnt++; } @@ -688,10 +735,8 @@ int main(int argc, char *argv[]) { else { // auto skip if (!waitcnt) { UINT cnt; -#if defined(NP2GCC) - mouse_callback(); -#endif mackbd_callback(); + mousemng_callback(); pccore_exec(framecnt == 0); framecnt++; cnt = timing_getcount(); @@ -711,7 +756,7 @@ int main(int argc, char *argv[]) { else { timing_setcount(cnt - framecnt); } - framecnt = 0; + framereset(); } } else { @@ -728,13 +773,14 @@ int main(int argc, char *argv[]) { if (np2oscfg.resume) { flagsave(np2resume); } + else { + flagdelete(np2resume); + } pccore_term(); S98_trash(); -#if defined(NP2GCC) - mouse_running(MOUSE_OFF); -#endif + mousemng_disable(MOUSEPROC_SYSTEM); scrnmng_destroy();