Diff for /xmil/MacOSX/xmil.cpp between versions 1.4 and 1.7

version 1.4, 2004/08/14 05:41:05 version 1.7, 2005/02/07 16:09:19
Line 24 Line 24
 #include        "fdd_ini.h"  #include        "fdd_ini.h"
 #include        "x1f.h"  #include        "x1f.h"
 #include        "carbonevent.h"  #include        "carbonevent.h"
   #if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE)
   #include        "statsave.h"
   #endif
   #include "CarbonAboutBox.h"
   
   
 // #define      USE_RESUME                  XMILOSCFG       xmiloscfg = {   100, 100,
                                                                           0, 0, 0,
                                                                           0, 0,
                 XMILOSCFG       xmiloscfg = {100, 100,  0, 0, 0, 0, 0, 0};  #if defined(SUPPORT_RESUME)
                                                                           1,
   #endif
   #if defined(SUPPORT_STATSAVE)
                                                                           1,
   #endif
                                                                           0};
   
                 WindowPtr       hWndMain;                  WindowPtr       hWndMain;
                 BRESULT         xmilrunning;                  BRESULT         xmilrunning;
Line 42  static REG8  scrnmode; Line 52  static REG8  scrnmode;
   
 static  char    target[MAX_PATH] = DEFAULTPATH;  static  char    target[MAX_PATH] = DEFAULTPATH;
   
 static const char np2resume[] = "sav";  
   static const char xmilapp[] = "xmil";
   
   
   // ---- stat save...
   
   #if defined(SUPPORT_RESUME)
   static const char xmilresumeext[] = ".sav";
   #endif
   #if defined(SUPPORT_STATSAVE)
   static const char xmilflagext[] = ".sv%u";
   #endif
   
   #if defined(SUPPORT_RESUME) || defined(SUPPORT_STATSAVE)
   static void getstatfilename(char *path, const char *ext, UINT size) {
   
           file_cpyname(path, file_getcd(xmilapp), size);
           file_catname(path, ext, size);
   }
   
   static void flagsave(const char *ext) {
   
           char    path[MAX_PATH];
   
           getstatfilename(path, ext, NELEMENTS(path));
           statsave_save(path);
   }
   
   static void flagdelete(const char *ext) {
   
           char    path[MAX_PATH];
   
           getstatfilename(path, ext, NELEMENTS(path));
           file_delete(path);
   }
   
   static int flagload(const char *ext, BRESULT force) {
   
           int             ret;
           char    path[MAX_PATH];
           char    buf[1024];
           int             r;
   
           ret = IDOK;
           getstatfilename(path, ext, NELEMENTS(path));
           r = statsave_check(path, buf, NELEMENTS(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
   
   
 // ---- おまじない  // ---- おまじない
Line 64  static void InitToolBox(void) { Line 135  static void InitToolBox(void) {
   
         AEInstallEventHandler(kCoreEventClass, kAEQuitApplication,          AEInstallEventHandler(kCoreEventClass, kAEQuitApplication,
                                                 AEProc(handleQuitApp), 0L, false);                                                  AEProc(handleQuitApp), 0L, false);
                                                   
           InitCarbonAboutBox();
 }  }
   
 static void MenuBarInit(void) {  static void MenuBarInit(void) {
Line 98  static void MenuBarInit(void) { Line 171  static void MenuBarInit(void) {
                 DeleteMenu(IDM_FDD0);                  DeleteMenu(IDM_FDD0);
         }          }
   
   #if !defined(SUPPORT_TURBOZ)
           DeleteMenuItem(GetMenuRef(IDM_IPLROM), 3);
   #endif
   #if !defined(SUPPORT_X1F)
           DisableMenuItem(GetMenuRef(IDM_OTHER), 2);
   #endif
   
   #if defined(SUPPORT_STATSAVE)
           if (!xmiloscfg.statsave) {
   #endif
                   DeleteMenu(IDM_STATSAVE);
   #if defined(SUPPORT_STATSAVE)
           }
   #endif
   
 }  }
   
 static void HandleMenuChoice(long wParam) {  static void HandleMenuChoice(long wParam) {
   
         UINT    update;          UINT    update;
         Str255  applname;  #if defined(SUPPORT_STATSAVE)
           UINT    num;
           char    ext[16];
   #endif
   
         update = 0;          update = 0;
         switch(wParam) {          switch(wParam) {
   #if 0
                 case IDM_ABOUT:                  case IDM_ABOUT:
                         AboutDialogProc();                          AboutDialogProc();
                         break;                          break;
   #endif
                 case IDM_IPLRESET:                  case IDM_IPLRESET:
                         pccore_reset();                          pccore_reset();
                         break;                          break;
Line 137  static void HandleMenuChoice(long wParam Line 229  static void HandleMenuChoice(long wParam
   
                 case IDM_FDD0EJECT:                  case IDM_FDD0EJECT:
                         diskdrv_setfdd(0, NULL, 0);                          diskdrv_setfdd(0, NULL, 0);
                         //DisableMenuItem(GetMenuRef(IDM_FDD0), IDM_FDD0EJECT);                          DisableMenuItem(GetMenuRef(IDM_FDD0), IDM_FDD0EJECT);
                         break;                          break;
   
                 case IDM_FDD1OPEN:                  case IDM_FDD1OPEN:
Line 146  static void HandleMenuChoice(long wParam Line 238  static void HandleMenuChoice(long wParam
   
                 case IDM_FDD1EJECT:                  case IDM_FDD1EJECT:
                         diskdrv_setfdd(1, NULL, 0);                          diskdrv_setfdd(1, NULL, 0);
                         //DisableMenuItem(GetMenuRef(IDM_FDD1), IDM_FDD1EJECT);                          DisableMenuItem(GetMenuRef(IDM_FDD1), IDM_FDD1EJECT);
                         break;                          break;
   
                 case IDM_FDD2OPEN:                  case IDM_FDD2OPEN:
Line 155  static void HandleMenuChoice(long wParam Line 247  static void HandleMenuChoice(long wParam
   
                 case IDM_FDD2EJECT:                  case IDM_FDD2EJECT:
                         diskdrv_setfdd(2, NULL, 0);                          diskdrv_setfdd(2, NULL, 0);
                         //DisableMenuItem(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT);                          DisableMenuItem(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT);
                         break;                          break;
   
                 case IDM_FDD3OPEN:                  case IDM_FDD3OPEN:
Line 164  static void HandleMenuChoice(long wParam Line 256  static void HandleMenuChoice(long wParam
   
                 case IDM_FDD3EJECT:                  case IDM_FDD3EJECT:
                         diskdrv_setfdd(3, NULL, 0);                          diskdrv_setfdd(3, NULL, 0);
                         //DisableMenuItem(GetMenuRef(IDM_FDD3), IDM_FDD3EJECT);                          DisableMenuItem(GetMenuRef(IDM_FDD3), IDM_FDD3EJECT);
                         break;                          break;
   #if defined(SUPPORT_TURBOZ)
                 case IDM_TURBOZ:                  case IDM_TURBOZ:
                         menu_setiplrom(3);                          menu_setiplrom(3);
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   #endif
                 case IDM_TURBO:                  case IDM_TURBO:
                         menu_setiplrom(2);                          menu_setiplrom(2);
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
Line 214  static void HandleMenuChoice(long wParam Line 306  static void HandleMenuChoice(long wParam
                         menu_setdispmode(xmilcfg.DISPSYNC ^ 1);                          menu_setdispmode(xmilcfg.DISPSYNC ^ 1);
                         break;                          break;
   
 //              case IDM_RASTER:                  case IDM_RASTER:
 //                      menu_setraster(xmilcfg.RASTER ^ 1);                          menu_setraster(xmilcfg.RASTER ^ 1);
 //                      break;                          update = SYS_UPDATECFG;
                           break;
   
                 case IDM_NOWAIT:                  case IDM_NOWAIT:
                         menu_setwaitflg(xmiloscfg.NOWAIT ^ 1);                          menu_setwaitflg(xmiloscfg.NOWAIT ^ 1);
Line 250  static void HandleMenuChoice(long wParam Line 343  static void HandleMenuChoice(long wParam
   
                 case IDM_KEY:                  case IDM_KEY:
                         menu_setkey(0);                          menu_setkey(0);
 //                      keystat_resetjoykey();  
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_JOY1:                  case IDM_JOY1:
                         menu_setkey(1);                          menu_setkey(1);
 //                      keystat_resetjoykey();  
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_JOY2:                  case IDM_JOY2:
                         menu_setkey(2);                          menu_setkey(2);
 //                      keystat_resetjoykey();  
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   
 //              case IDM_MOUSEKEY:  
 //                      menu_setkey(3);  
 //                      keystat_resetjoykey();  
 //                      update = SYS_UPDATECFG;  
 //                      break;  
   
                 case IDM_FMBOARD:                  case IDM_FMBOARD:
                         menu_setsound(xmilcfg.SOUND_SW ^ 1);                          menu_setsound(xmilcfg.SOUND_SW ^ 1);
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   
                 case IDM_MOUSE:                  case IDM_MOUSE:
                   //      mousemng_toggle(MOUSEPROC_SYSTEM);
                         menu_setmouse(xmilcfg.MOUSE_SW ^ 1);                          menu_setmouse(xmilcfg.MOUSE_SW ^ 1);
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
Line 287  static void HandleMenuChoice(long wParam Line 372  static void HandleMenuChoice(long wParam
                         update = SYS_UPDATECFG;                          update = SYS_UPDATECFG;
                         break;                          break;
   
 //              case IDM_BMPSAVE:                  case IDM_BMPSAVE:
 //                      dialog_writebmp();                          dialog_writebmp();
 //                      break;                          break;
   
   #if defined(SUPPORT_X1F)
                   case IDM_OPMLOG:
                           dialog_x1f();
                           break;
   #endif
   
                 case IDM_DISPCLOCK:                  case IDM_DISPCLOCK:
                         menu_setdispclk(xmiloscfg.DISPCLK ^ 1);                          menu_setdispclk(xmiloscfg.DISPCLK ^ 1);
Line 316  static void HandleMenuChoice(long wParam Line 407  static void HandleMenuChoice(long wParam
                         break;                          break;
   
                 default:                  default:
   #if defined(SUPPORT_STATSAVE)
                           if (HiWord(wParam) == IDM_STATSAVE) {
                                   num = LoWord(wParam);
                                   if ((num >= 1) && (num < (1 + 10))) {
                                           OEMSPRINTF(ext, xmilflagext, num - 1);
                                           flagsave(ext);
                                   }
                                   else if ((num >= 12) && (num < (12 + 10))) {
                                           OEMSPRINTF(ext, xmilflagext, num - 12);
                                           flagload(ext, TRUE);
                                   }
                           }
   #endif
                         break;                          break;
         }          }
         sysmng_update(update);          sysmng_update(update);
         HiliteMenu(0);          HiliteMenu(0);
 }  }
 #if 0  
 static void HandleUpdateEvent(EventRecord *pevent) {  
   
         WindowPtr       hWnd;  
   
         hWnd = (WindowPtr)pevent->message;  
         BeginUpdate(hWnd);  
         if (xmilrunning) {  
                 scrndraw_redraw();  
         }  
         else {  
 //              np2open();  
         }  
         EndUpdate(hWnd);  
 }  
 #endif  
 static void HandleMouseDown(EventRecord *pevent) {  static void HandleMouseDown(EventRecord *pevent) {
   
         WindowPtr       hWnd;          WindowPtr       hWnd;
Line 353  static void HandleMouseDown(EventRecord  Line 442  static void HandleMouseDown(EventRecord 
                         break;                          break;
         }          }
 }  }
 #if 0  
 static void eventproc(EventRecord *event) {  
   
         int             keycode;  
   
         keycode = (event->message & keyCodeMask) >> 8;  
         switch(event->what) {  
                 case mouseDown:  
                         HandleMouseDown(event);  
                         break;  
   
                 case updateEvt:  
                         HandleUpdateEvent(event);  
                         break;  
   
                 case keyDown:  
                 case autoKey:  
                         if (!xmilrunning) {  
                                 break;  
                         }  
                         if ((keycode == 0x6f) && (xmiloscfg.F12KEY == 0)) {  
                                 HandleMenuChoice(IDM_MOUSE);  
                                 break;  
                         }  
                         if (event->modifiers & cmdKey) {  
 #if !TARGET_API_MAC_CARBON  
                                 if (mackbd_keydown(keycode, TRUE)) {  
                                         break;  
                                 }  
 #endif  
                                 soundmng_stop();  
                                 mousemng_disable(MOUSEPROC_MACUI);  
                                 HandleMenuChoice(MenuEvent(event));  
                                 mousemng_enable(MOUSEPROC_MACUI);  
                                 soundmng_play();  
                         }  
                         else {  
                                 mackbd_keydown(keycode, FALSE);  
                         }  
                         break;  
   
                 case keyUp:  
                         mackbd_keyup(keycode);  
                         break;  
   
                 case mouseUp:  
                         mousemng_buttonevent(MOUSEMNG_LEFTUP);  
                         mousemng_buttonevent(MOUSEMNG_RIGHTUP);  
                         break;  
   
                 case activateEvt:  
                         mackbd_activate((event->modifiers & activeFlag)?TRUE:FALSE);  
                         break;  
         }  
 }  
 #endif  
   
 #if 0  
 // ----  
   
 static void getstatfilename(char *path, const char *ext, int size) {  
   
         file_cpyname(path, file_getcd(np2app), 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);  
 }  
 #endif  
   
   
 // ----  // ----
   
 static  UINT    framecnt = 0;  static  UINT    framecnt = 0;
Line 521  int main(int argc, char *argv[]) { Line 502  int main(int argc, char *argv[]) {
                 dosio_term();                  dosio_term();
                 return(0);                  return(0);
         }          }
 /*  
         SetRect(&wRect, xmiloscfg.posx, xmiloscfg.posy, 100, 100);  
         hWndMain = NewWindow(0, &wRect, "\pNekoe System", FALSE,  
                                                                 noGrowDocProc, (WindowPtr)-1, TRUE, 0);  
         if (!hWndMain) {  
                 TRACETERM();  
                 macossub_term();  
                 dosio_term();  
                 return(0);  
         }  
         scrnmng_initialize();  
         SizeWindow(hWndMain, 640, 400, TRUE);  
         ShowWindow(hWndMain);  
 */  
         menu_setiplrom(xmilcfg.ROM_TYPE);          menu_setiplrom(xmilcfg.ROM_TYPE);
         menu_setbootmedia(xmilcfg.DIP_SW);          menu_setbootmedia(xmilcfg.DIP_SW);
         menu_setresolute(xmilcfg.DIP_SW);          menu_setresolute(xmilcfg.DIP_SW);
Line 581  int main(int argc, char *argv[]) { Line 549  int main(int argc, char *argv[]) {
         pccore_initialize();          pccore_initialize();
         pccore_reset();          pccore_reset();
   
 #if 0  #if defined(SUPPORT_RESUME)
         if (np2oscfg.resume) {          if (xmiloscfg.resume) {
                 flagload(np2resume);                  flagload(xmilresumeext, FALSE);
         }          }
 #endif  #endif
   
Line 666  int main(int argc, char *argv[]) { Line 634  int main(int argc, char *argv[]) {
   
         xmilrunning = FALSE;          xmilrunning = FALSE;
   
 #if 0  #if defined(SUPPORT_RESUME)
         if (np2oscfg.resume) {          if (xmiloscfg.resume) {
                 flagsave(np2resume);                  flagsave(xmilresumeext);
         }          }
         else {          else {
                 flagdelete(np2resume);                  flagdelete(xmilresumeext);
         }          }
 #endif  #endif
   

Removed from v.1.4  
changed lines
  Added in v.1.7


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