Diff for /np2/macos9/np2.cpp between versions 1.3 and 1.25

version 1.3, 2003/10/23 12:58:44 version 1.25, 2004/01/22 04:59:48
Line 3 Line 3
 #include        "strres.h"  #include        "strres.h"
 #include        "np2.h"  #include        "np2.h"
 #include        "dosio.h"  #include        "dosio.h"
   #include        "commng.h"
   #include        "mousemng.h"
 #include        "scrnmng.h"  #include        "scrnmng.h"
 #include        "soundmng.h"  #include        "soundmng.h"
 #include        "sysmng.h"  #include        "sysmng.h"
Line 10 Line 12
 #include        "mackbd.h"  #include        "mackbd.h"
 #include        "ini.h"  #include        "ini.h"
 #include        "menu.h"  #include        "menu.h"
   #include        "np2open.h"
 #include        "dialog.h"  #include        "dialog.h"
 #include        "memory.h"  #include        "memory.h"
 #include        "pccore.h"  #include        "pccore.h"
Line 25 Line 28
 #include        "s98.h"  #include        "s98.h"
 #include        "diskdrv.h"  #include        "diskdrv.h"
 #include        "fddfile.h"  #include        "fddfile.h"
 #include        "statsave.h"  
   
 #if defined(NP2GCC)  
 #include        "mousemng.h"  
 #endif  
   
 #define USE_RESUME  #define USE_RESUME
   
   
 #if defined(NP2GCC)                  NP2OSCFG        np2oscfg = {100, 100,  0, 0, 0, 0,  0, 0, 0, 0, 0};
                 NP2OSCFG        np2oscfg = {0, 2, 0, 0, 0, 0};  
 #else  
                 NP2OSCFG        np2oscfg = {0, 2, 0, 0, 0};  
 #endif  
   
                 WindowPtr       hWndMain;                  WindowPtr       hWndMain;
                 BOOL            np2running;                  BOOL            np2running;
Line 102  static void InitToolBox(void) { Line 97  static void InitToolBox(void) {
   
 static void MenuBarInit(void) {  static void MenuBarInit(void) {
   
         Handle          hMenu;          Handle          hdl;
         MenuHandle      happlemenu;          MenuHandle      hmenu;
   
         hMenu = GetNewMBar(IDM_MAINMENU);          hdl = GetNewMBar(IDM_MAINMENU);
         if (!hMenu) {          if (hdl == NULL) {
                 ExitToShell();                  ExitToShell();
         }          }
         SetMenuBar(hMenu);          SetMenuBar(hdl);
         happlemenu = GetMenuHandle(IDM_APPLE);          hmenu = GetMenuHandle(IDM_APPLE);
         if (happlemenu) {          if (hmenu) {
                 AppendResMenu(happlemenu, 'DRVR');                  AppendResMenu(hmenu, 'DRVR');
         }          }
         InsertMenu(GetMenu(IDM_SASI1), -1);          InsertMenu(GetMenu(IDM_SASI1), -1);
         InsertMenu(GetMenu(IDM_SASI2), -1);          InsertMenu(GetMenu(IDM_SASI2), -1);
         InsertMenu(GetMenu(IDM_KEYBOARD), -1);          InsertMenu(GetMenu(IDM_KEYBOARD), -1);
         InsertMenu(GetMenu(IDM_SOUND), -1);          InsertMenu(GetMenu(IDM_SOUND), -1);
         InsertMenu(GetMenu(IDM_MEMORY), -1);          InsertMenu(GetMenu(IDM_MEMORY), -1);
   
   #if TARGET_API_MAC_CARBON
           hmenu = GetMenuHandle(IDM_FDD2);
           SetItemCmd(hmenu, LoWord(IDM_FDD2OPEN), 'D');
           SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2OPEN), kMenuShiftModifier);
           SetItemCmd(hmenu, LoWord(IDM_FDD2EJECT), 'E');
           SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2EJECT), kMenuShiftModifier);
           hmenu = GetMenuHandle(IDM_SASI2);
           SetItemCmd(hmenu, LoWord(IDM_SASI2OPEN), 'O');
           SetMenuItemModifiers(hmenu, LoWord(IDM_SASI2OPEN), kMenuShiftModifier);
   #else
           EnableItem(GetMenuHandle(IDM_DEVICE), LoWord(IDM_MOUSE));
           EnableItem(GetMenuHandle(IDM_KEYBOARD), LoWord(IDM_F12MOUSE));
   #endif
         DrawMenuBar();          DrawMenuBar();
 }  }
   
Line 143  static void HandleMenuChoice(long wParam Line 152  static void HandleMenuChoice(long wParam
                         pccore_reset();                          pccore_reset();
                         break;                          break;
   
                   case IDM_CONFIGURE:
                           ConfigDialogProc();
                           break;
   
                 case IDM_NEWDISK:                  case IDM_NEWDISK:
                         dialog_newdisk();                          dialog_newdisk();
                         break;                          break;
Line 244  static void HandleMenuChoice(long wParam Line 257  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
                         break;                          break;
   
 #if defined(NP2GCC)                  case IDM_SCREENOPT:
         case IDM_MOUSE:                          dialog_scropt();
             mouse_running(MOUSE_XOR);                          break;
             menu_setmouse(np2oscfg.MOUSE_SW ^ 1);  
             sysmng_update(SYS_UPDATECFG);                  case IDM_MOUSE:
                           mousemng_toggle(MOUSEPROC_SYSTEM);
                           menu_setmouse(np2oscfg.MOUSE_SW ^ 1);
                           update |= SYS_UPDATECFG;
                           break;
   
                   case IDM_MIDIPANIC:
                           rs232c_midipanic();
                           mpu98ii_midipanic();
                           pc9861k_midipanic();
                         break;                          break;
 #endif  
   
                 case IDM_KEY:                  case IDM_KEY:
                         menu_setkey(0);                          menu_setkey(0);
                         keystat_resetjoykey();                          keystat_resetjoykey();
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_JOY1:                  case IDM_JOY1:
                         menu_setkey(1);                          menu_setkey(1);
                         keystat_resetjoykey();                          keystat_resetjoykey();
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_JOY2:                  case IDM_JOY2:
                         menu_setkey(2);                          menu_setkey(2);
                         keystat_resetjoykey();                          keystat_resetjoykey();
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_MOUSEKEY:                  case IDM_MOUSEKEY:
                         menu_setkey(3);                          menu_setkey(3);
                         keystat_resetjoykey();                          keystat_resetjoykey();
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_XSHIFT:                  case IDM_XSHIFT:
                         menu_setxshift(np2cfg.XSHIFT ^ 1);                          menu_setxshift(np2cfg.XSHIFT ^ 1);
                         keystat_forcerelease(0x70);                          keystat_forcerelease(0x70);
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_XCTRL:                  case IDM_XCTRL:
                         menu_setxshift(np2cfg.XSHIFT ^ 2);                          menu_setxshift(np2cfg.XSHIFT ^ 2);
                         keystat_forcerelease(0x74);                          keystat_forcerelease(0x74);
                           update |= SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_XGRPH:                  case IDM_XGRPH:
                         menu_setxshift(np2cfg.XSHIFT ^ 4);                          menu_setxshift(np2cfg.XSHIFT ^ 4);
                         keystat_forcerelease(0x73);                          keystat_forcerelease(0x73);
                           update |= SYS_UPDATECFG;
                           break;
   
                   case IDM_F11KANA:
                           menu_setf11key(0);
                           mackbd_resetf11();
                           update |= SYS_UPDATEOSCFG;
                           break;
   
                   case IDM_F11STOP:
                           menu_setf11key(1);
                           mackbd_resetf11();
                           update |= SYS_UPDATEOSCFG;
                           break;
   
                   case IDM_F11NFER:
                           menu_setf11key(3);
                           mackbd_resetf11();
                           update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                 case IDM_F12MOUSE:                  case IDM_F12MOUSE:
                         menu_setf12copy(0);                          menu_setf12key(0);
                         keystat_resetcopyhelp();                          mackbd_resetf12();
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                 case IDM_F12COPY:                  case IDM_F12COPY:
                         menu_setf12copy(1);                          menu_setf12key(1);
                         keystat_resetcopyhelp();                          mackbd_resetf12();
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                 case IDM_F12STOP:                  case IDM_F12XFER:
                         menu_setf12copy(2);                          menu_setf12key(3);
                         keystat_resetcopyhelp();                          mackbd_resetf12();
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                 case IDM_BEEPOFF:                  case IDM_BEEPOFF:
Line 374  static void HandleMenuChoice(long wParam Line 420  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
                         break;                          break;
   
                   case IDM_AMD98:
                           menu_setsound(0x80);
                           update |= SYS_UPDATECFG;
                           break;
   
                   case IDM_JASTSND:
                           menu_setjastsnd(np2oscfg.jastsnd ^ 1);
                           update |= SYS_UPDATEOSCFG;
                           break;
   
                 case IDM_SEEKSND:                  case IDM_SEEKSND:
                         menu_setmotorflg(np2cfg.MOTOR ^ 1);                          menu_setmotorflg(np2cfg.MOTOR ^ 1);
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
Line 447  static void HandleUpdateEvent(EventRecor Line 503  static void HandleUpdateEvent(EventRecor
   
         hWnd = (WindowPtr)pevent->message;          hWnd = (WindowPtr)pevent->message;
         BeginUpdate(hWnd);          BeginUpdate(hWnd);
         scrndraw_redraw();          if (np2running) {
                   scrndraw_redraw();
           }
           else {
                   np2open();
           }
         EndUpdate(hWnd);          EndUpdate(hWnd);
 }  }
   
Line 458  static void HandleMouseDown(EventRecord  Line 519  static void HandleMouseDown(EventRecord 
   
         switch(FindWindow(pevent->where, &hWnd)) {          switch(FindWindow(pevent->where, &hWnd)) {
                 case inMenuBar:                  case inMenuBar:
                         HandleMenuChoice(MenuSelect(pevent->where));                          if (np2running) {
                                   soundmng_stop();
                                   mousemng_disable(MOUSEPROC_MACUI);
                                   HandleMenuChoice(MenuSelect(pevent->where));
                                   mousemng_enable(MOUSEPROC_MACUI);
                                   soundmng_play();
                           }
                         break;                          break;
   
                 case inDrag:                  case inDrag:
Line 478  static void HandleMouseDown(EventRecord  Line 545  static void HandleMouseDown(EventRecord 
                         break;                          break;
   
                 case inContent:                  case inContent:
 #if defined(NP2GCC)                          mousemng_buttonevent((pevent->modifiers & (1 << 12))
             if (controlKey & GetCurrentKeyModifiers() ) {                                                                          ?MOUSEMNG_RIGHTDOWN:MOUSEMNG_LEFTDOWN);
                 mouse_btn(MOUSE_RIGHTDOWN);  
             }  
             else {  
                 mouse_btn(MOUSE_LEFTDOWN);  
             }  
 #endif  
                         break;                          break;
   
                 case inGoAway:                  case inGoAway:
Line 497  static void HandleMouseDown(EventRecord  Line 558  static void HandleMouseDown(EventRecord 
   
 static void eventproc(EventRecord *event) {  static void eventproc(EventRecord *event) {
   
           int             keycode;
   
           keycode = (event->message & keyCodeMask) >> 8;
         switch(event->what) {          switch(event->what) {
                 case mouseDown:                  case mouseDown:
                         HandleMouseDown(event);                          HandleMouseDown(event);
Line 508  static void eventproc(EventRecord *event Line 572  static void eventproc(EventRecord *event
   
                 case keyDown:                  case keyDown:
                 case autoKey:                  case autoKey:
                         mackbd_f12down(((event->message) & keyCodeMask) >> 8);                          if (!np2running) {
                                   break;
                           }
   #if !TARGET_API_MAC_CARBON
                           if ((keycode == 0x6f) && (np2oscfg.F12KEY == 0)) {
                                   HandleMenuChoice(IDM_MOUSE);
                                   break;
                           }
   #endif
                         if (event->modifiers & cmdKey) {                          if (event->modifiers & cmdKey) {
   #if !TARGET_API_MAC_CARBON
                                   if (mackbd_keydown(keycode, TRUE)) {
                                           break;
                                   }
   #endif
                                   soundmng_stop();
                                   mousemng_disable(MOUSEPROC_MACUI);
   #if TARGET_API_MAC_CARBON
                                   HandleMenuChoice(MenuEvent(event));
   #else
                                 HandleMenuChoice(MenuKey(event->message & charCodeMask));                                  HandleMenuChoice(MenuKey(event->message & charCodeMask));
   #endif
                                   mousemng_enable(MOUSEPROC_MACUI);
                                   soundmng_play();
                           }
                           else {
                                   mackbd_keydown(keycode, FALSE);
                         }                          }
                         break;                          break;
   
                 case keyUp:                  case keyUp:
                         mackbd_f12up(((event->message) & keyCodeMask) >> 8);                          mackbd_keyup(keycode);
                         break;                          break;
   
 #if defined(NP2GCC)                  case mouseUp:
         case mouseUp:                          mousemng_buttonevent(MOUSEMNG_LEFTUP);
             if (controlKey & GetCurrentKeyModifiers()) {                          mousemng_buttonevent(MOUSEMNG_RIGHTUP);
                 mouse_btn(MOUSE_RIGHTUP);                          break;
             }  
             else {                  case activateEvt:
                 mouse_btn(MOUSE_LEFTUP);                          mackbd_activate((event->modifiers & activeFlag)?TRUE:FALSE);
             }  
                         break;                          break;
 #endif  
         }          }
 }  }
   
   
 // ----  // ----
   
   static void framereset(void) {
   
           framecnt = 0;
           if (np2oscfg.DISPCLK & 3) {
                   if (sysmng_workclockrenewal()) {
                           sysmng_updatecaption(3);
                   }
           }
   }
   
 static void processwait(UINT waitcnt) {  static void processwait(UINT waitcnt) {
   
         if (timing_getcount() >= waitcnt) {          if (timing_getcount() >= waitcnt) {
                 timing_setcount(0);                  timing_setcount(0);
                 framecnt = 0;                  framereset();
                 if (np2oscfg.DISPCLK & 3) {  
                         if (sysmng_workclockrenewal()) {  
                                 sysmng_updatecaption(3);  
                         }  
                 }  
         }          }
 }  }
   
Line 562  static void flagsave(const char *ext) { Line 653  static void flagsave(const char *ext) {
         statsave_save(path);          statsave_save(path);
 }  }
   
 static void flagload(const char *ext) {  static void flagdelete(const char *ext) {
   
         char    path[MAX_PATH];          char    path[MAX_PATH];
         char    buf[1024];  
           getstatfilename(path, ext, sizeof(path));
           file_delete(path);
   }
   
   static int flagload(const char *ext) {
   
         int             ret;          int             ret;
           char    path[MAX_PATH];
           char    buf[1024];
           int             r;
   
           ret = IDOK;
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, sizeof(path));
         ret = statsave_check(path, buf, sizeof(buf));          r = statsave_check(path, buf, sizeof(buf));
         if (ret == NP2FLAG_SUCCESS) {          if (r & (~NP2FLAG_DISKCHG)) {
                   ResumeErrorDialogProc();
                   ret = IDCANCEL;
           }
           else if (r & NP2FLAG_DISKCHG) {
                   ret = ResumeWarningDialogProc(buf);
           }
           if (ret == IDOK) {
                 statsave_load(path);                  statsave_load(path);
         }          }
           return(ret);
 }  }
   
 int main(int argc, char *argv[]) {  int main(int argc, char *argv[]) {
   
         Rect            wRect;          Rect            wRect;
         EventRecord     event;          EventRecord     event;
           UINT            t;
           GrafPtr         saveport;
           Point           pt;
   
         dosio_init();          dosio_init();
         file_setcd(target);          file_setcd(target);
Line 591  int main(int argc, char *argv[]) { Line 703  int main(int argc, char *argv[]) {
   
         TRACEINIT();          TRACEINIT();
   
         SetRect(&wRect, 100, 100, 100, 100);          SetRect(&wRect, np2oscfg.posx, np2oscfg.posy, 100, 100);
         hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE,          hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE,
                                                                 noGrowDocProc, (WindowPtr)-1, TRUE, 0);                                                                  noGrowDocProc, (WindowPtr)-1, TRUE, 0);
         if (!hWndMain) {          if (!hWndMain) {
Line 610  int main(int argc, char *argv[]) { Line 722  int main(int argc, char *argv[]) {
         menu_setframe(np2oscfg.DRAW_SKIP);          menu_setframe(np2oscfg.DRAW_SKIP);
         menu_setkey(0);          menu_setkey(0);
         menu_setxshift(0);          menu_setxshift(0);
         menu_setf12copy(np2oscfg.F12COPY);          menu_setf11key(np2oscfg.F11KEY);
           menu_setf12key(np2oscfg.F12KEY);
         menu_setbeepvol(np2cfg.BEEP_VOL);          menu_setbeepvol(np2cfg.BEEP_VOL);
         menu_setsound(np2cfg.SOUND_SW);          menu_setsound(np2cfg.SOUND_SW);
           menu_setjastsnd(np2oscfg.jastsnd);
         menu_setmotorflg(np2cfg.MOTOR);          menu_setmotorflg(np2cfg.MOTOR);
         menu_setextmem(np2cfg.EXTMEM);          menu_setextmem(np2cfg.EXTMEM);
         menu_setdispclk(np2oscfg.DISPCLK);          menu_setdispclk(np2oscfg.DISPCLK);
Line 628  int main(int argc, char *argv[]) { Line 742  int main(int argc, char *argv[]) {
                 return(0);                  return(0);
         }          }
   
           np2open();
           t = GETTICK();
           while((GETTICK() - t) < 100) {
                   if (WaitNextEvent(everyEvent, &event, 0, 0)) {
                           eventproc(&event);
                   }
           }
   
           commng_initialize();
         sysmng_initialize();          sysmng_initialize();
         mackbd_initialize();          mackbd_initialize();
         pccore_init();          pccore_init();
         S98_init();          S98_init();
   
 #if defined(NP2GCC)          mousemng_initialize();
         if (np2oscfg.MOUSE_SW) {                                                                                // ver0.30          if (np2oscfg.MOUSE_SW) {                                                                                // ver0.30
                 mouse_running(MOUSE_ON);                  mousemng_enable(MOUSEPROC_SYSTEM);
         }          }
 #endif  //      scrndraw_redraw();
         scrndraw_redraw();  
         pccore_reset();          pccore_reset();
   
 #if defined(USE_RESUME)          if (np2oscfg.resume) {
         flagload(np2resume);                  flagload(np2resume);
 #endif          }
   
         SetEventMask(everyEvent);          SetEventMask(everyEvent);
   
Line 654  int main(int argc, char *argv[]) { Line 776  int main(int argc, char *argv[]) {
                 }                  }
                 else {                  else {
                         if (np2oscfg.NOWAIT) {                          if (np2oscfg.NOWAIT) {
 #if defined(NP2GCC)  
                                 mouse_callback();  
 #endif  
                                 mackbd_callback();                                  mackbd_callback();
                                   mousemng_callback();
                                 pccore_exec(framecnt == 0);                                  pccore_exec(framecnt == 0);
                                 if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip                                  if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip
                                         framecnt++;                                          framecnt++;
Line 674  int main(int argc, char *argv[]) { Line 794  int main(int argc, char *argv[]) {
                         }                          }
                         else if (np2oscfg.DRAW_SKIP) {                  // frame skip                          else if (np2oscfg.DRAW_SKIP) {                  // frame skip
                                 if (framecnt < np2oscfg.DRAW_SKIP) {                                  if (framecnt < np2oscfg.DRAW_SKIP) {
 #if defined(NP2GCC)  
                     mouse_callback();  
 #endif  
                                         mackbd_callback();                                          mackbd_callback();
                       mousemng_callback();
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                 }                                  }
Line 688  int main(int argc, char *argv[]) { Line 806  int main(int argc, char *argv[]) {
                         else {                                                          // auto skip                          else {                                                          // auto skip
                                 if (!waitcnt) {                                  if (!waitcnt) {
                                         UINT cnt;                                          UINT cnt;
 #if defined(NP2GCC)  
                     mouse_callback();  
 #endif  
                                         mackbd_callback();                                          mackbd_callback();
                       mousemng_callback();
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                         cnt = timing_getcount();                                          cnt = timing_getcount();
Line 711  int main(int argc, char *argv[]) { Line 827  int main(int argc, char *argv[]) {
                                                 else {                                                  else {
                                                         timing_setcount(cnt - framecnt);                                                          timing_setcount(cnt - framecnt);
                                                 }                                                  }
                                                 framecnt = 0;                                                  framereset();
                                         }                                          }
                                 }                                  }
                                 else {                                  else {
Line 721  int main(int argc, char *argv[]) { Line 837  int main(int argc, char *argv[]) {
                         }                          }
                 }                  }
         }          }
   
           GetPort(&saveport);
   #if TARGET_API_MAC_CARBON
           SetPortWindowPort(hWndMain);
   #else
           SetPort(hWndMain);
   #endif
           pt.h = 0;
           pt.v = 0;
           LocalToGlobal(&pt);
           SetPort(saveport);
           if ((np2oscfg.posx != pt.h) || (np2oscfg.posy != pt.v)) {
                   np2oscfg.posx = pt.h;
                   np2oscfg.posy = pt.v;
                   sysmng_update(SYS_UPDATEOSCFG);
           }
   
         np2running = FALSE;          np2running = FALSE;
   
         pccore_cfgupdate();          pccore_cfgupdate();
   
 #if defined(USE_RESUME)          if (np2oscfg.resume) {
         flagsave(np2resume);                  flagsave(np2resume);
 #endif          }
           else {
                   flagdelete(np2resume);
           }
   
         pccore_term();          pccore_term();
         S98_trash();          S98_trash();
   
 #if defined(NP2GCC)          mousemng_disable(MOUSEPROC_SYSTEM);
         mouse_running(MOUSE_OFF);  
 #endif  
   
         scrnmng_destroy();          scrnmng_destroy();
   

Removed from v.1.3  
changed lines
  Added in v.1.25


RetroPC.NET-CVS <cvs@retropc.net>