Diff for /np2/macos9/np2.cpp between versions 1.11 and 1.35

version 1.11, 2003/11/09 21:57:04 version 1.35, 2004/05/21 14:30:32
Line 20 Line 20
 #include        "pc9861k.h"  #include        "pc9861k.h"
 #include        "mpu98ii.h"  #include        "mpu98ii.h"
 #include        "timing.h"  #include        "timing.h"
   #include        "keystat.h"
 #include        "debugsub.h"  #include        "debugsub.h"
 #include        "bios.h"  #include        "bios.h"
 #include        "scrndraw.h"  #include        "scrndraw.h"
Line 28 Line 29
 #include        "s98.h"  #include        "s98.h"
 #include        "diskdrv.h"  #include        "diskdrv.h"
 #include        "fddfile.h"  #include        "fddfile.h"
 #include        "statsave.h"  
   
   
 #define USE_RESUME  #define USE_RESUME
   
   
                 NP2OSCFG        np2oscfg = {0, 2, 0, 0,  0, 0, 0};                  NP2OSCFG        np2oscfg = {100, 100,  0, 0, 0, 0,  0, 0, 0, 0, 0};
   
                 WindowPtr       hWndMain;                  WindowPtr       hWndMain;
                 BOOL            np2running;                  BOOL            np2running;
Line 53  static BYTE  scrnmode; Line 53  static BYTE  scrnmode;
 #endif  #endif
 static  char    target[MAX_PATH] = DEFAULTPATH;  static  char    target[MAX_PATH] = DEFAULTPATH;
   
   #if !defined(SUPPORT_PC9821)
   static const char np2app[] = "np2";
   #else
   static const char np2app[] = "np21";
   #endif
   
 static const char np2resume[] = "sav";  static const char np2resume[] = "sav";
   
Line 98  static void InitToolBox(void) { Line 103  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');
           }
   #if !defined(SUPPORT_SCSI)
           hmenu = GetMenuHandle(IDM_HARDDISK);
           if (hmenu) {
                   DeleteMenuItem(hmenu, 7);
                   DeleteMenuItem(hmenu, 6);
                   DeleteMenuItem(hmenu, 5);
                   DeleteMenuItem(hmenu, 4);
                   DeleteMenuItem(hmenu, 3);
           }
   #endif
           if (!np2oscfg.I286SAVE) {
                   hmenu = GetMenuHandle(IDM_OTHER);
                   if (hmenu) {
                           DeleteMenuItem(hmenu, 9);
                   }
         }          }
         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);
         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  #if TARGET_API_MAC_CARBON
         DisableMenuItem(GetMenuHandle(IDM_DEVICE), LoWord(IDM_MOUSE));          hmenu = GetMenuHandle(IDM_FDD2);
         DisableMenuItem(GetMenuHandle(IDM_KEYBOARD), LoWord(IDM_F12MOUSE));          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  #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);
           }
   
         DrawMenuBar();          DrawMenuBar();
 }  }
   
Line 181  static void HandleMenuChoice(long wParam Line 226  static void HandleMenuChoice(long wParam
                         diskdrv_setfdd(1, NULL, 0);                          diskdrv_setfdd(1, NULL, 0);
                         break;                          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:                  case IDM_SASI1OPEN:
                         dialog_changehdd(0);                          dialog_changehdd(0x00);
                         break;                          break;
   
                 case IDM_SASI1REMOVE:                  case IDM_SASI1REMOVE:
                         diskdrv_sethdd(0, NULL);                          diskdrv_sethdd(0x00, NULL);
                         break;                          break;
   
                 case IDM_SASI2OPEN:                  case IDM_SASI2OPEN:
                         dialog_changehdd(1);                          dialog_changehdd(0x01);
                         break;                          break;
   
                 case IDM_SASI2REMOVE:                  case IDM_SASI2REMOVE:
                         diskdrv_sethdd(1, NULL);                          diskdrv_sethdd(0x01, NULL);
                           break;
   
                   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;                          break;
   
                 case IDM_ROLNORMAL:                  case IDM_ROLNORMAL:
Line 258  static void HandleMenuChoice(long wParam Line 351  static void HandleMenuChoice(long wParam
                         dialog_scropt();                          dialog_scropt();
                         break;                          break;
   
         case IDM_MOUSE:                  case IDM_MOUSE:
                         mousemng_toggle(MOUSEPROC_SYSTEM);                          mousemng_toggle(MOUSEPROC_SYSTEM);
             menu_setmouse(np2oscfg.MOUSE_SW ^ 1);                          menu_setmouse(np2oscfg.MOUSE_SW ^ 1);
             sysmng_update(SYS_UPDATECFG);                          update |= SYS_UPDATECFG;
                           break;
   
                   case IDM_MIDIOPT:
                           MPU98DialogProc();
                         break;                          break;
   
                 case IDM_MIDIPANIC:                  case IDM_MIDIPANIC:
Line 273  static void HandleMenuChoice(long wParam Line 370  static void HandleMenuChoice(long wParam
                 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;
   
                   case IDM_F11USER:
                           menu_setf11key(4);
                           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;
   
                   case IDM_F12USER:
                           menu_setf12key(4);
                           mackbd_resetf12();
                           update |= SYS_UPDATEOSCFG;
                         break;                          break;
   
                 case IDM_BEEPOFF:                  case IDM_BEEPOFF:
Line 392  static void HandleMenuChoice(long wParam Line 526  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 421  static void HandleMenuChoice(long wParam Line 565  static void HandleMenuChoice(long wParam
                         dialog_writebmp();                          dialog_writebmp();
                         break;                          break;
   
                   case IDM_CALENDAR:
                           CalendarDialogProc();
                           break;
   
                 case IDM_DISPCLOCK:                  case IDM_DISPCLOCK:
                         menu_setdispclk(np2oscfg.DISPCLK ^ 1);                          menu_setdispclk(np2oscfg.DISPCLK ^ 1);
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
Line 483  static void HandleMouseDown(EventRecord  Line 631  static void HandleMouseDown(EventRecord 
                 case inMenuBar:                  case inMenuBar:
                         if (np2running) {                          if (np2running) {
                                 soundmng_stop();                                  soundmng_stop();
                                   mousemng_disable(MOUSEPROC_MACUI);
                                 HandleMenuChoice(MenuSelect(pevent->where));                                  HandleMenuChoice(MenuSelect(pevent->where));
                                   mousemng_enable(MOUSEPROC_MACUI);
                                 soundmng_play();                                  soundmng_play();
                         }                          }
                         break;                          break;
Line 518  static void HandleMouseDown(EventRecord  Line 668  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 529  static void eventproc(EventRecord *event Line 682  static void eventproc(EventRecord *event
   
                 case keyDown:                  case keyDown:
                 case autoKey:                  case autoKey:
                         if (np2running) {                          if (!np2running) {
                                 mackbd_f12down(((event->message) & keyCodeMask) >> 8);                                  break;
                                 if (event->modifiers & cmdKey) {                          }
                                         soundmng_stop();  #if !TARGET_API_MAC_CARBON
                                         HandleMenuChoice(MenuKey(event->message & charCodeMask));                          if ((keycode == 0x6f) && (np2oscfg.F12KEY == 0)) {
                                         soundmng_play();                                  HandleMenuChoice(IDM_MOUSE);
                                   break;
                           }
   #endif
                           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));
   #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;
   
                 case mouseUp:                  case mouseUp:
                         mousemng_buttonevent(MOUSEMNG_LEFTUP);                          mousemng_buttonevent(MOUSEMNG_LEFTUP);
                         mousemng_buttonevent(MOUSEMNG_RIGHTUP);                          mousemng_buttonevent(MOUSEMNG_RIGHTUP);
                         break;                          break;
   
                   case activateEvt:
                           mackbd_activate((event->modifiers & activeFlag)?TRUE:FALSE);
                           break;
         }          }
 }  }
   
Line 573  static void processwait(UINT waitcnt) { Line 750  static void processwait(UINT waitcnt) {
   
 static void getstatfilename(char *path, const char *ext, int size) {  static void getstatfilename(char *path, const char *ext, int size) {
   
         file_cpyname(path, file_getcd("np2"), size);          file_cpyname(path, file_getcd(np2app), size);
         file_catname(path, str_dot, size);          file_catname(path, str_dot, size);
         file_catname(path, ext, size);          file_catname(path, ext, size);
 }  }
Line 604  static int flagload(const char *ext) { Line 781  static int 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 622  int main(int argc, char *argv[]) { Line 799  int main(int argc, char *argv[]) {
         Rect            wRect;          Rect            wRect;
         EventRecord     event;          EventRecord     event;
         UINT            t;          UINT            t;
           GrafPtr         saveport;
           Point           pt;
   
         dosio_init();          dosio_init();
         file_setcd(target);          file_setcd(target);
   
         InitToolBox();          InitToolBox();
         macossub_init();          macossub_init();
         MenuBarInit();  
   
         initload();          initload();
   
           MenuBarInit();
   
         TRACEINIT();          TRACEINIT();
   
         SetRect(&wRect, 100, 100, 100, 100);          keystat_initialize();
   
           SetRect(&wRect, np2oscfg.posx, np2oscfg.posy, 100, 100);
   #if !defined(SUPPORT_PC9821)
         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);
   #else
           hWndMain = NewWindow(0, &wRect, "\pNeko Project 21", FALSE,
                                                                   noGrowDocProc, (WindowPtr)-1, TRUE, 0);
   #endif
         if (!hWndMain) {          if (!hWndMain) {
                 TRACETERM();                  TRACETERM();
                 macossub_term();                  macossub_term();
Line 653  int main(int argc, char *argv[]) { Line 839  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 766  int main(int argc, char *argv[]) { Line 954  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();

Removed from v.1.11  
changed lines
  Added in v.1.35


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