Diff for /np2/macosx/np2.cpp between versions 1.47 and 1.59

version 1.47, 2004/01/11 16:58:47 version 1.59, 2004/04/18 16:42:28
Line 26 Line 26
 #include        "s98.h"  #include        "s98.h"
 #include        "diskdrv.h"  #include        "diskdrv.h"
 #include        "fddfile.h"  #include        "fddfile.h"
 #include        "statsave.h"  
 #include        "mousemng.h"  #include        "mousemng.h"
 #include        "configure.h"  #include        "configure.h"
 #include        "screenopt.h"  #include        "screenopt.h"
Line 39 Line 38
 #include        "np2opening.h"  #include        "np2opening.h"
 #include        "toolwin.h"  #include        "toolwin.h"
 #include        "aboutdlg.h"  #include        "aboutdlg.h"
   #include        "keystat.h"
   #include        "kdispwin.h"
   
 #include        <QuickTime/QuickTime.h>  
 #define USE_RESUME  
 #define NP2OPENING  #define NP2OPENING
 // #define      OPENING_WAIT    1500  // #define      OPENING_WAIT    1500
   
   
                 NP2OSCFG        np2oscfg = {"Neko Project IIx", -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0};                  NP2OSCFG        np2oscfg = {"Neko Project IIx",                                         //titles
                                                                   -1,                                                                             //winx
                                                                   -1,                                                                             //winy
                                                                   0,                                                                              //NOWAIT
                                                                   0,                                                                              //DRAW_SKIP
                                                                   0,                                                                              //DISPCLK
                                                                   0,                                                                              //F11KEY
                                                                   0,                                                                              //F12KEY
                                                                   0,                                                                              //MOUSE_SW
                                                                   0,                                                                              //JOYPAD1
                                                                   {5, 0, 0x3e, 19200, "", "", "GM", ""},  //mpu
                                                                   0,                                                                              //confirm
                                                                   0,                                                                              //resume
                                                                   1,                                                                              //toolwin
                                                                   0,                                                                              //jastsnd
                                                                   0,                                                                              //I286SAVE
   #ifdef SUPPORT_KEYDISP
                                                                   1,                                                                              //keydisp
   #endif
                                                                   };
   
                 WindowPtr       hWndMain;                  WindowPtr       hWndMain;
                 BOOL            np2running;                  BOOL            np2running;
Line 123  static void InitToolBox(void) { Line 141  static void InitToolBox(void) {
 static void MenuBarInit(void) {  static void MenuBarInit(void) {
 #if 1  #if 1
         Handle          hMenu;          Handle          hMenu;
         MenuHandle      happlemenu;  
   
         hMenu = GetNewMBar(IDM_MAINMENU);          hMenu = GetNewMBar(IDM_MAINMENU);
         if (!hMenu) {          if (!hMenu) {
                 ExitToShell();                  ExitToShell();
         }          }
         SetMenuBar(hMenu);          SetMenuBar(hMenu);
         happlemenu = GetMenuHandle(IDM_APPLE);  #if !defined(SUPPORT_SCSI)
         if (happlemenu) {          hmenu = GetMenuHandle(IDM_HDD);
                 AppendResMenu(happlemenu, 'DRVR');          if (hmenu) {
                   DeleteMenuItem(hmenu, 7);
                   DeleteMenuItem(hmenu, 6);
                   DeleteMenuItem(hmenu, 5);
                   DeleteMenuItem(hmenu, 4);
                   DeleteMenuItem(hmenu, 3);
         }          }
   #endif
         InsertMenu(GetMenu(IDM_SASI1), -1);          InsertMenu(GetMenu(IDM_SASI1), -1);
         InsertMenu(GetMenu(IDM_SASI2), -1);          InsertMenu(GetMenu(IDM_SASI2), -1);
   #if defined(SUPPORT_SCSI)
           InsertMenu(GetMenu(IDM_SCSI0), -1);
           InsertMenu(GetMenu(IDM_SCSI1), -1);
           InsertMenu(GetMenu(IDM_SCSI2), -1);
           InsertMenu(GetMenu(IDM_SCSI3), -1);
   #endif
         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);
     ChangeMenuAttributes(GetMenuRef(IDM_EDIT), kMenuAttrAutoDisable, 0);      ChangeMenuAttributes(GetMenuRef(IDM_EDIT), kMenuAttrAutoDisable, 0);
     DisableAllMenuItems(GetMenuHandle(IDM_EDIT));      DisableAllMenuItems(GetMenuHandle(IDM_EDIT));
     SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2OPEN, kMenuOptionModifier);      SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2OPEN, kMenuShiftModifier);
     SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT, kMenuOptionModifier);      SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT, kMenuShiftModifier);
     SetMenuItemModifiers(GetMenuRef(IDM_SASI2), IDM_SASI2OPEN, kMenuOptionModifier);      SetMenuItemModifiers(GetMenuRef(IDM_SASI2), IDM_SASI2OPEN, kMenuShiftModifier);
   #ifndef SUPPORT_KEYDISP
           DisableMenuItem(GetMenuRef(IDM_OTHER), IDM_KEYDISP);
   #endif
   #ifndef SUPPORT_SOFTKBD
           DisableMenuItem(GetMenuRef(IDM_OTHER), IDM_SOFTKBD);
   #endif
       if (np2oscfg.I286SAVE) {
           AppendMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), CFCopyLocalizedString(CFSTR("i286 save"),"i286"), kMenuItemAttrIconDisabled, NULL,NULL);
       }
   
           if (!(np2cfg.fddequip & 1)) {
                   DisableAllMenuItems(GetMenuRef(IDM_FDD1));
           }
           if (!(np2cfg.fddequip & 2)) {
                   DisableAllMenuItems(GetMenuRef(IDM_FDD2));
           }
   #if 0
   //Later...
           if (!(np2cfg.fddequip & 4)) {
                   DisableAllMenuItems(GetMenuRef(IDM_FDD3));
           }
           if (!(np2cfg.fddequip & 8)) {
                   DisableAllMenuItems(GetMenuRef(IDM_FDD4));
           }
   #endif
   
         DrawMenuBar();          DrawMenuBar();
 #else  #else
     OSStatus    err;      OSStatus    err;
Line 182  static void changescreen(BYTE mode) { Line 237  static void changescreen(BYTE mode) {
         }          }
 }  }
   
 static void HandleMenuChoice(long wParam) {  void HandleMenuChoice(long wParam) {
   
         UINT    update;          UINT    update;
   
Line 250  static void HandleMenuChoice(long wParam Line 305  static void HandleMenuChoice(long wParam
                         diskdrv_sethdd(1, NULL);                          diskdrv_sethdd(1, NULL);
                         break;                          break;
   
   #if defined(SUPPORT_SCSI)
                   case IDM_SCSI0OPEN:
                           dialog_changehdd(0x20);
                           break;
   
                   case IDM_SCSI0REMOVE:
                           diskdrv_sethdd(0x20, NULL);
                           break;
   
                   case IDM_SCSI1OPEN:
                           dialog_changehdd(0x21);
                           break;
   
                   case IDM_SCSI1REMOVE:
                           diskdrv_sethdd(0x21, NULL);
                           break;
   
                   case IDM_SCSI2OPEN:
                           dialog_changehdd(0x22);
                           break;
   
                   case IDM_SCSI2REMOVE:
                           diskdrv_sethdd(0x22, NULL);
                           break;
   
                   case IDM_SCSI3OPEN:
                           dialog_changehdd(0x23);
                           break;
   
                   case IDM_SCSI3REMOVE:
                           diskdrv_sethdd(0x23, NULL);
                           break;
   #endif
   
                 case IDM_FULLSCREEN:                  case IDM_FULLSCREEN:
             toggleFullscreen();              toggleFullscreen();
             break;              break;
Line 401  static void HandleMenuChoice(long wParam Line 490  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATEOSCFG;                          update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                   case IDM_F11USER:
                           menu_setf11key(4);
                           mackbd_resetf11();
                           update |= SYS_UPDATEOSCFG;
                           break;
   
                 case IDM_F12MOUSE:                  case IDM_F12MOUSE:
                         menu_setf12key(0);                          menu_setf12key(0);
                         mackbd_resetf12();                          mackbd_resetf12();
Line 425  static void HandleMenuChoice(long wParam Line 520  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATEOSCFG;                          update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                   case IDM_F12USER:
                           menu_setf12key(4);
                           mackbd_resetf12();
                           update |= SYS_UPDATEOSCFG;
                           break;
   
                 case IDM_BEEPOFF:                  case IDM_BEEPOFF:
                         menu_setbeepvol(0);                          menu_setbeepvol(0);
                         beep_setvol(0);                          beep_setvol(0);
Line 561  static void HandleMenuChoice(long wParam Line 662  static void HandleMenuChoice(long wParam
             menu_setmsrapid(np2cfg.MOUSERAPID ^ 1);              menu_setmsrapid(np2cfg.MOUSERAPID ^ 1);
             update |= SYS_UPDATECFG;              update |= SYS_UPDATECFG;
             break;              break;
                           
         case IDM_RECORDING:          case IDM_RECORDING:
             menu_setrecording(false);              menu_setrecording(false);
             break;              break;
   
   #if defined(SUPPORT_KEYDISP)
                   case IDM_KEYDISP:
                           menu_setkeydisp(np2oscfg.keydisp ^ 1);
                           if (np2oscfg.keydisp) {
                                   kdispwin_create();
                           }
                           else {
                                   kdispwin_destroy();
                           }
                           break;
   #endif
   #if defined(SUPPORT_SOFTKBD)
                   case IDM_SOFTKBD:
                           menu_setsoftwarekeyboard(np2oscfg.softkey ^ 1);
                           if (np2oscfg.softkey) {
                                   skbdwin_create();
                           }
                           else {
                                   skbdwin_destroy();
                           }
                           break;
   #endif
   
                 case IDM_I286SAVE:                  case IDM_I286SAVE:
                         debugsub_status();                          debugsub_status();
Line 612  static void HandleMouseDown(EventRecord  Line 736  static void HandleMouseDown(EventRecord 
 static void framereset(UINT waitcnt) {  static void framereset(UINT waitcnt) {
   
         framecnt = 0;          framecnt = 0;
           kdispwin_draw((BYTE)waitcnt);
         toolwin_draw((BYTE)waitcnt);          toolwin_draw((BYTE)waitcnt);
           skbdwin_process();
         if (np2oscfg.DISPCLK & 3) {          if (np2oscfg.DISPCLK & 3) {
                 if (sysmng_workclockrenewal()) {                  if (sysmng_workclockrenewal()) {
                         sysmng_updatecaption(3);                          sysmng_updatecaption(3);
Line 626  static void processwait(UINT waitcnt) { Line 752  static void processwait(UINT waitcnt) {
                 timing_setcount(0);                  timing_setcount(0);
                 framereset(waitcnt);                  framereset(waitcnt);
         }          }
           soundmng_sync();
 }  }
   
 static void getstatfilename(char *path, const char *ext, int size) {  static void getstatfilename(char *path, const char *ext, int size) {
Line 660  static void flagload(const char *ext) { Line 787  static void flagload(const char *ext) {
     ret = IDOK;      ret = IDOK;
         getstatfilename(path, ext, sizeof(path));          getstatfilename(path, ext, sizeof(path));
         r = statsave_check(path, buf, sizeof(buf));          r = statsave_check(path, buf, sizeof(buf));
         if (r & (~NP2FLAG_DISKCHG)) {          if (r & (~STATFLAG_DISKCHG)) {
                 ResumeErrorDialogProc();                  ResumeErrorDialogProc();
                 ret = IDCANCEL;                  ret = IDCANCEL;
         }          }
         else if (r & NP2FLAG_DISKCHG) {          else if (r & STATFLAG_DISKCHG) {
                 ret = ResumeWarningDialogProc(buf);                  ret = ResumeWarningDialogProc(buf);
         }          }
         if (ret == IDOK) {          if (ret == IDOK) {
Line 689  int main(int argc, char *argv[]) { Line 816  int main(int argc, char *argv[]) {
   
         InitToolBox();          InitToolBox();
         macossub_init();          macossub_init();
         MenuBarInit();  
   
         initload();          initload();
   
           MenuBarInit();
   
         TRACEINIT();          TRACEINIT();
           
     toolwin_readini();          keystat_initialize();
           kdispwin_initialize();
           skbdwin_readini();
   
           toolwin_readini();
           kdispwin_readini();
     if (!(setupMainWindow())) {      if (!(setupMainWindow())) {
         return(0);          return(0);
     }      }
           skbdwin_initialize();
   
 #ifdef    NP2OPENING  #ifdef    NP2OPENING
     openingNP2();      openingNP2();
Line 723  int main(int argc, char *argv[]) { Line 856  int main(int argc, char *argv[]) {
         menu_setdispclk(np2oscfg.DISPCLK);          menu_setdispclk(np2oscfg.DISPCLK);
         menu_setbtnrapid(np2cfg.BTN_RAPID);          menu_setbtnrapid(np2cfg.BTN_RAPID);
         menu_setbtnmode(np2cfg.BTN_MODE);          menu_setbtnmode(np2cfg.BTN_MODE);
     if (np2oscfg.I286SAVE) {  #if defined(SUPPORT_KEYDISP)
         AppendMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), CFCopyLocalizedString(CFSTR("i286 save"),"i286"), kMenuItemAttrIconDisabled, NULL,NULL);          menu_setkeydisp(np2oscfg.keydisp);
     }  #endif
   #if defined(SUPPORT_SOFTKBD)
           menu_setsoftwarekeyboard(np2oscfg.softkey);
   #endif
   
         scrnmng_initialize();          scrnmng_initialize();
         if (scrnmng_create(scrnmode) != SUCCESS) {          if (scrnmng_create(scrnmode) != SUCCESS) {
Line 743  int main(int argc, char *argv[]) { Line 879  int main(int argc, char *argv[]) {
         S98_init();          S98_init();
   
     hid_init();      hid_init();
   #ifndef SUPPORT_SWSEEKSND
         if (soundmng_initialize() == SUCCESS) {          if (soundmng_initialize() == SUCCESS) {
                 soundmng_pcmvolume(SOUND_PCMSEEK, np2cfg.MOTORVOL);                  soundmng_pcmvolume(SOUND_PCMSEEK, np2cfg.MOTORVOL);
                 soundmng_pcmvolume(SOUND_PCMSEEK1, np2cfg.MOTORVOL);                  soundmng_pcmvolume(SOUND_PCMSEEK1, np2cfg.MOTORVOL);
         }          }
   #endif
   
 #if defined(NP2GCC)  #if defined(NP2GCC)
         mousemng_initialize();          mousemng_initialize();
Line 754  int main(int argc, char *argv[]) { Line 892  int main(int argc, char *argv[]) {
                 mousemng_enable(MOUSEPROC_SYSTEM);                  mousemng_enable(MOUSEPROC_SYSTEM);
         }          }
 #endif  #endif
   
 #ifdef OPENING_WAIT  #ifdef OPENING_WAIT
         while((GETTICK() - tick) < OPENING_WAIT);          while((GETTICK() - tick) < OPENING_WAIT);
 #endif  #endif
Line 764  int main(int argc, char *argv[]) { Line 903  int main(int argc, char *argv[]) {
         flagload(np2resume);          flagload(np2resume);
     }      }
 #endif  #endif
   #if defined(SUPPORT_KEYDISP)
           if (np2oscfg.keydisp) {
                   kdispwin_create();
           }
   #endif
   #if defined(SUPPORT_SOFTKBD)
           if (np2oscfg.softkey) {
                   skbdwin_create();
           }
   #endif
   
     theTarget = GetEventDispatcherTarget();      theTarget = GetEventDispatcherTarget();
       
         np2running = TRUE;          np2running = TRUE;
         while(np2running) {          while(np2running) {
         if (ReceiveNextEvent(0, NULL,kEventDurationNoWait,true, &theEvent)== noErr)          if (ReceiveNextEvent(0, NULL,kEventDurationNoWait,true, &theEvent)== noErr)
Line 865  int main(int argc, char *argv[]) { Line 1014  int main(int argc, char *argv[]) {
 #if defined(NP2GCC)  #if defined(NP2GCC)
         mousemng_disable(MOUSEPROC_SYSTEM);          mousemng_disable(MOUSEPROC_SYSTEM);
 #endif  #endif
   #ifndef SUPPORT_SWSEEKSND
         soundmng_deinitialize();          soundmng_deinitialize();
   #endif
         scrnmng_destroy();          scrnmng_destroy();
   
           kdispwin_destroy();
           skbdwin_destroy();
         if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {          if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {
                 initsave();                                             // np2.cfg create                  initsave();                                             // np2.cfg create
             toolwin_writeini();                         // np2.cfg append              toolwin_writeini();                         // np2.cfg append
                   kdispwin_writeini();
                   skbdwin_writeini();
         }          }
           skbdwin_deinitialize();
         TRACETERM();          TRACETERM();
         macossub_term();          macossub_term();
         dosio_term();          dosio_term();
   
         DisposeWindow(hWndMain);  
     toolwin_close();      toolwin_close();
           DisposeWindow(hWndMain);
   
         (void)argc;          (void)argc;
         (void)argv;          (void)argv;
Line 939  static pascal OSStatus np2appevent (Even Line 1094  static pascal OSStatus np2appevent (Even
             switch (whatHappened)              switch (whatHappened)
             {              {
                 case kEventMouseMoved:                  case kEventMouseMoved:
                   case kEventMouseDragged:
                     GetEventParameter (event, kEventParamMouseDelta, typeHIPoint, NULL, sizeof(HIPoint), NULL, &delta);                      GetEventParameter (event, kEventParamMouseDelta, typeHIPoint, NULL, sizeof(HIPoint), NULL, &delta);
                     mousemng_callback(delta);                      mousemng_callback(delta);
                     result = noErr;                      result = noErr;
Line 975  static pascal OSStatus np2appevent (Even Line 1131  static pascal OSStatus np2appevent (Even
                 break;                  break;
                 case kEventClassKeyboard:                  case kEventClassKeyboard:
                 if (GetEventKind(event)==kEventRawKeyModifiersChanged) {                  if (GetEventKind(event)==kEventRawKeyModifiersChanged) {
                                         static UInt32 backup = 0;                                          static  UInt32  backup = 0;
                     if (modif & shiftKey) keystat_senddata(0x70);                                          UInt32  change = backup ^ modif;
                     else keystat_senddata(0x70 | 0x80);                                          backup = modif;
                     if (modif & optionKey) keystat_senddata(0x73);                                          if (change & shiftKey) {
                     else keystat_senddata(0x73 | 0x80);                                                  if (modif & shiftKey) keystat_senddata(0x70);
                     if (modif & controlKey) keystat_senddata(0x74);                                                  else keystat_senddata(0x70 | 0x80);
                     else keystat_senddata(0x74 | 0x80);                                          }
                     if ((modif & alphaLock) != (backup & alphaLock)) {                                          if (change & optionKey) {
                                                   if (modif & optionKey) keystat_senddata(0x73);
                                                   else keystat_senddata(0x73 | 0x80);
                                           }
                                           if (change & controlKey) {
                                                   if (modif & controlKey) keystat_senddata(0x74);
                                                   else keystat_senddata(0x74 | 0x80);
                                           }
                       if (change & alphaLock) {
                         keystat_senddata(0x71);                          keystat_senddata(0x71);
                         backup = modif;  
                     }                      }
                     result = noErr;                      result = noErr;
                                 }                                  }
Line 1084  static const EventTypeSpec appEventList[ Line 1247  static const EventTypeSpec appEventList[
                                 {kEventClassMouse,              kEventMouseDown},                                  {kEventClassMouse,              kEventMouseDown},
 #if defined(NP2GCC)  #if defined(NP2GCC)
                                 {kEventClassMouse,              kEventMouseMoved},                                  {kEventClassMouse,              kEventMouseMoved},
                                   {kEventClassMouse,              kEventMouseDragged},
                                 {kEventClassMouse,              kEventMouseUp},                                  {kEventClassMouse,              kEventMouseUp},
 #endif  #endif
                                 {kEventClassKeyboard,   kEventRawKeyModifiersChanged},                                  {kEventClassKeyboard,   kEventRawKeyModifiersChanged},
Line 1164  static void toggleFullscreen(void) { Line 1328  static void toggleFullscreen(void) {
     static bool toolwin = false;      static bool toolwin = false;
     MenuRef     menu = GetMenuRef(IDM_SCREEN);      MenuRef     menu = GetMenuRef(IDM_SCREEN);
     Rect        bounds;      Rect        bounds;
     short       w = 640, h = 480;      short       w, h;
   
     soundmng_stop();      soundmng_stop();
     if (!(scrnmode & SCRNMODE_FULLSCREEN)) {      if (!(scrnmode & SCRNMODE_FULLSCREEN)) {
Line 1172  static void toggleFullscreen(void) { Line 1336  static void toggleFullscreen(void) {
         GetWindowBounds(hWndMain, kWindowContentRgn, &bounds);          GetWindowBounds(hWndMain, kWindowContentRgn, &bounds);
         backupwidth = bounds.right - bounds.left;          backupwidth = bounds.right - bounds.left;
         backupheight = bounds.bottom - bounds.top;          backupheight = bounds.bottom - bounds.top;
                   w = backupwidth;
                   h = backupheight;
         toolwin = np2oscfg.toolwin;          toolwin = np2oscfg.toolwin;
         toolwin_close();          toolwin_close();
         np2oscfg.winx = bounds.left;          np2oscfg.winx = bounds.left;
Line 1210  static void toggleFullscreen(void) { Line 1376  static void toggleFullscreen(void) {
     CheckMenuItem(GetMenuHandle(IDM_SCREEN), LoWord(IDM_FULLSCREEN), scrnmode & SCRNMODE_FULLSCREEN);      CheckMenuItem(GetMenuHandle(IDM_SCREEN), LoWord(IDM_FULLSCREEN), scrnmode & SCRNMODE_FULLSCREEN);
     soundmng_play();      soundmng_play();
 }  }
   
 void recieveCommand(long param) {  
     HandleMenuChoice(param);  
 }  

Removed from v.1.47  
changed lines
  Added in v.1.59


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