--- np2/macos9/np2.cpp 2003/11/12 00:55:38 1.13 +++ np2/macos9/np2.cpp 2004/05/21 14:30:32 1.35 @@ -20,6 +20,7 @@ #include "pc9861k.h" #include "mpu98ii.h" #include "timing.h" +#include "keystat.h" #include "debugsub.h" #include "bios.h" #include "scrndraw.h" @@ -28,13 +29,12 @@ #include "s98.h" #include "diskdrv.h" #include "fddfile.h" -#include "statsave.h" #define USE_RESUME - NP2OSCFG np2oscfg = {100, 100, 0, 2, 0, 0, 0, 0, 0}; + NP2OSCFG np2oscfg = {100, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0}; WindowPtr hWndMain; BOOL np2running; @@ -53,6 +53,11 @@ static BYTE scrnmode; #endif 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"; @@ -110,8 +115,30 @@ static void MenuBarInit(void) { if (hmenu) { 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_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_SOUND), -1); InsertMenu(GetMenu(IDM_MEMORY), -1); @@ -119,16 +146,30 @@ static void MenuBarInit(void) { #if TARGET_API_MAC_CARBON hmenu = GetMenuHandle(IDM_FDD2); SetItemCmd(hmenu, LoWord(IDM_FDD2OPEN), 'D'); - SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2OPEN), kMenuOptionModifier); + SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2OPEN), kMenuShiftModifier); SetItemCmd(hmenu, LoWord(IDM_FDD2EJECT), 'E'); - SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2EJECT), kMenuOptionModifier); + SetMenuItemModifiers(hmenu, LoWord(IDM_FDD2EJECT), kMenuShiftModifier); hmenu = GetMenuHandle(IDM_SASI2); - SetItemCmd(hmenu, LoWord(IDM_FDD2OPEN), 'O'); - SetMenuItemModifiers(hmenu, LoWord(IDM_SASI2OPEN), kMenuOptionModifier); + 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 + + 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(); } @@ -185,20 +226,68 @@ static void HandleMenuChoice(long wParam diskdrv_setfdd(1, NULL, 0); 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: - dialog_changehdd(0); + dialog_changehdd(0x00); break; case IDM_SASI1REMOVE: - diskdrv_sethdd(0, NULL); + diskdrv_sethdd(0x00, NULL); break; case IDM_SASI2OPEN: - dialog_changehdd(1); + dialog_changehdd(0x01); break; 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; case IDM_ROLNORMAL: @@ -268,6 +357,10 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; break; + case IDM_MIDIOPT: + MPU98DialogProc(); + break; + case IDM_MIDIPANIC: rs232c_midipanic(); mpu98ii_midipanic(); @@ -277,54 +370,91 @@ static void HandleMenuChoice(long wParam case IDM_KEY: menu_setkey(0); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY1: menu_setkey(1); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_JOY2: menu_setkey(2); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_MOUSEKEY: menu_setkey(3); keystat_resetjoykey(); + update |= SYS_UPDATECFG; break; case IDM_XSHIFT: menu_setxshift(np2cfg.XSHIFT ^ 1); keystat_forcerelease(0x70); + update |= SYS_UPDATECFG; break; case IDM_XCTRL: menu_setxshift(np2cfg.XSHIFT ^ 2); keystat_forcerelease(0x74); + update |= SYS_UPDATECFG; break; case IDM_XGRPH: menu_setxshift(np2cfg.XSHIFT ^ 4); 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; case IDM_F12MOUSE: - menu_setf12copy(0); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; + menu_setf12key(0); + mackbd_resetf12(); + update |= SYS_UPDATEOSCFG; break; case IDM_F12COPY: - menu_setf12copy(1); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; + menu_setf12key(1); + mackbd_resetf12(); + update |= SYS_UPDATEOSCFG; break; - case IDM_F12STOP: - menu_setf12copy(2); - keystat_resetcopyhelp(); - update |= SYS_UPDATECFG; + case IDM_F12XFER: + menu_setf12key(3); + mackbd_resetf12(); + update |= SYS_UPDATEOSCFG; + break; + + case IDM_F12USER: + menu_setf12key(4); + mackbd_resetf12(); + update |= SYS_UPDATEOSCFG; break; case IDM_BEEPOFF: @@ -396,6 +526,16 @@ static void HandleMenuChoice(long wParam update |= SYS_UPDATECFG; 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: menu_setmotorflg(np2cfg.MOTOR ^ 1); update |= SYS_UPDATECFG; @@ -425,6 +565,10 @@ static void HandleMenuChoice(long wParam dialog_writebmp(); break; + case IDM_CALENDAR: + CalendarDialogProc(); + break; + case IDM_DISPCLOCK: menu_setdispclk(np2oscfg.DISPCLK ^ 1); update |= SYS_UPDATECFG; @@ -542,20 +686,29 @@ static void eventproc(EventRecord *event break; } #if !TARGET_API_MAC_CARBON - if ((keycode == 0x6f) && (np2oscfg.F12COPY == 0)) { + if ((keycode == 0x6f) && (np2oscfg.F12KEY == 0)) { 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); + mackbd_keydown(keycode, FALSE); } break; @@ -567,6 +720,10 @@ static void eventproc(EventRecord *event mousemng_buttonevent(MOUSEMNG_LEFTUP); mousemng_buttonevent(MOUSEMNG_RIGHTUP); break; + + case activateEvt: + mackbd_activate((event->modifiers & activeFlag)?TRUE:FALSE); + break; } } @@ -593,7 +750,7 @@ static void processwait(UINT waitcnt) { 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, ext, size); } @@ -624,11 +781,11 @@ static int flagload(const char *ext) { ret = IDOK; getstatfilename(path, ext, sizeof(path)); r = statsave_check(path, buf, sizeof(buf)); - if (r & (~NP2FLAG_DISKCHG)) { + if (r & (~STATFLAG_DISKCHG)) { ResumeErrorDialogProc(); ret = IDCANCEL; } - else if (r & NP2FLAG_DISKCHG) { + else if (r & STATFLAG_DISKCHG) { ret = ResumeWarningDialogProc(buf); } if (ret == IDOK) { @@ -650,15 +807,22 @@ int main(int argc, char *argv[]) { InitToolBox(); macossub_init(); - MenuBarInit(); - initload(); + MenuBarInit(); + TRACEINIT(); + keystat_initialize(); + SetRect(&wRect, np2oscfg.posx, np2oscfg.posy, 100, 100); +#if !defined(SUPPORT_PC9821) hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE, noGrowDocProc, (WindowPtr)-1, TRUE, 0); +#else + hWndMain = NewWindow(0, &wRect, "\pNeko Project 21", FALSE, + noGrowDocProc, (WindowPtr)-1, TRUE, 0); +#endif if (!hWndMain) { TRACETERM(); macossub_term(); @@ -675,9 +839,11 @@ int main(int argc, char *argv[]) { menu_setframe(np2oscfg.DRAW_SKIP); menu_setkey(0); menu_setxshift(0); - menu_setf12copy(np2oscfg.F12COPY); + menu_setf11key(np2oscfg.F11KEY); + menu_setf12key(np2oscfg.F12KEY); menu_setbeepvol(np2cfg.BEEP_VOL); menu_setsound(np2cfg.SOUND_SW); + menu_setjastsnd(np2oscfg.jastsnd); menu_setmotorflg(np2cfg.MOTOR); menu_setextmem(np2cfg.EXTMEM); menu_setdispclk(np2oscfg.DISPCLK);