--- np2/macosx/np2.cpp 2004/03/15 05:06:01 1.56 +++ np2/macosx/np2.cpp 2004/05/23 04:07:56 1.62 @@ -39,14 +39,17 @@ #include "toolwin.h" #include "aboutdlg.h" #include "keystat.h" -#include "kdispwin.h" +#include "subwind.h" -#define USE_RESUME #define NP2OPENING // #define OPENING_WAIT 1500 +#if !defined(SUPPORT_PC9821) NP2OSCFG np2oscfg = {"Neko Project IIx", //titles +#else + NP2OSCFG np2oscfg = {"Neko Project 21x", //titles +#endif -1, //winx -1, //winy 0, //NOWAIT @@ -60,11 +63,15 @@ 0, //confirm 0, //resume 1, //toolwin +#if defined(SUPPORT_KEYDISP) + 0, //keydisp +#endif +#if defined(SUPPORT_SOFTKBD) + 0, //softkey +#endif + 0, //jastsnd 0, //I286SAVE -#ifdef SUPPORT_KEYDISP - 1, //keydisp -#endif }; WindowPtr hWndMain; @@ -142,23 +149,30 @@ static void InitToolBox(void) { static void MenuBarInit(void) { #if 1 Handle hMenu; - MenuHandle happlemenu; hMenu = GetNewMBar(IDM_MAINMENU); if (!hMenu) { ExitToShell(); } SetMenuBar(hMenu); - happlemenu = GetMenuHandle(IDM_APPLE); - if (happlemenu) { - AppendResMenu(happlemenu, 'DRVR'); +#if !defined(SUPPORT_SCSI) + hmenu = GetMenuHandle(IDM_HDD); + 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_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); @@ -170,6 +184,38 @@ static void MenuBarInit(void) { #ifndef SUPPORT_KEYDISP DisableMenuItem(GetMenuRef(IDM_OTHER), IDM_KEYDISP); #endif +#ifndef SUPPORT_SOFTKBD + SetMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), IDM_SOFTKBD, CFSTR("please wait for 0.80")); + DisableMenuItem(GetMenuRef(IDM_OTHER), IDM_SOFTKBD); +#endif + if (np2oscfg.I286SAVE) { + AppendMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), CFCopyLocalizedString(CFSTR("i286 save"),"i286"), kMenuItemAttrIconDisabled, NULL,NULL); + } + +#if defined(SUPPORT_PC9821) + AppendMenuItemTextWithCFString(GetMenuRef(IDM_MEMORY), CFSTR("11.6MB"), kMenuItemAttrIconDisabled, NULL, NULL); + AppendMenuItemTextWithCFString(GetMenuRef(IDM_MEMORY), CFSTR("13.6MB"), kMenuItemAttrIconDisabled, NULL, NULL); + SetMenuItemTextWithCFString(GetMenuRef(IDM_HELP), IDM_NP2HELP, CFSTR("Neko Project 21x Help")); + SetMenuItemTextWithCFString(GetMenuRef(IDM_APPLE), IDM_ABOUT, CFSTR("About Neko Project 21x...")); + SetMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), IDM_I286SAVE, CFSTR("i386 save")); +#endif + + 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(); #else OSStatus err; @@ -276,6 +322,7 @@ void HandleMenuChoice(long wParam) { diskdrv_sethdd(1, NULL); break; +#if defined(SUPPORT_SCSI) case IDM_SCSI0OPEN: dialog_changehdd(0x20); break; @@ -307,6 +354,7 @@ void HandleMenuChoice(long wParam) { case IDM_SCSI3REMOVE: diskdrv_sethdd(0x23, NULL); break; +#endif case IDM_FULLSCREEN: toggleFullscreen(); @@ -599,6 +647,16 @@ void HandleMenuChoice(long wParam) { update |= SYS_UPDATECFG; break; + case IDM_MEM116: + menu_setextmem(11); + update |= SYS_UPDATECFG; + break; + + case IDM_MEM136: + menu_setextmem(13); + update |= SYS_UPDATECFG; + break; + case IDM_BMPSAVE: dialog_writebmp(); break; @@ -647,6 +705,17 @@ void HandleMenuChoice(long wParam) { } 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: debugsub_status(); @@ -696,6 +765,7 @@ static void framereset(UINT waitcnt) { framecnt = 0; kdispwin_draw((BYTE)waitcnt); toolwin_draw((BYTE)waitcnt); + skbdwin_process(); if (np2oscfg.DISPCLK & 3) { if (sysmng_workclockrenewal()) { sysmng_updatecaption(3); @@ -773,20 +843,22 @@ int main(int argc, char *argv[]) { InitToolBox(); macossub_init(); - MenuBarInit(); - initload(); + MenuBarInit(); + TRACEINIT(); keystat_initialize(); kdispwin_initialize(); + skbdwin_readini(); toolwin_readini(); kdispwin_readini(); if (!(setupMainWindow())) { return(0); } + skbdwin_initialize(); #ifdef NP2OPENING openingNP2(); @@ -814,9 +886,9 @@ int main(int argc, char *argv[]) { #if defined(SUPPORT_KEYDISP) menu_setkeydisp(np2oscfg.keydisp); #endif - if (np2oscfg.I286SAVE) { - AppendMenuItemTextWithCFString(GetMenuRef(IDM_OTHER), CFCopyLocalizedString(CFSTR("i286 save"),"i286"), kMenuItemAttrIconDisabled, NULL,NULL); - } +#if defined(SUPPORT_SOFTKBD) + menu_setsoftwarekeyboard(np2oscfg.softkey); +#endif scrnmng_initialize(); if (scrnmng_create(scrnmode) != SUCCESS) { @@ -863,6 +935,11 @@ int main(int argc, char *argv[]) { kdispwin_create(); } #endif +#if defined(SUPPORT_SOFTKBD) + if (np2oscfg.softkey) { + skbdwin_create(); + } +#endif theTarget = GetEventDispatcherTarget(); @@ -970,11 +1047,14 @@ int main(int argc, char *argv[]) { scrnmng_destroy(); kdispwin_destroy(); + skbdwin_destroy(); if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) { initsave(); // np2.cfg create toolwin_writeini(); // np2.cfg append kdispwin_writeini(); + skbdwin_writeini(); } + skbdwin_deinitialize(); TRACETERM(); macossub_term(); dosio_term(); @@ -1078,16 +1158,23 @@ static pascal OSStatus np2appevent (Even break; case kEventClassKeyboard: if (GetEventKind(event)==kEventRawKeyModifiersChanged) { - static UInt32 backup = 0; - if (modif & shiftKey) keystat_senddata(0x70); - else keystat_senddata(0x70 | 0x80); - if (modif & optionKey) keystat_senddata(0x73); - else keystat_senddata(0x73 | 0x80); - if (modif & controlKey) keystat_senddata(0x74); - else keystat_senddata(0x74 | 0x80); - if ((modif & alphaLock) != (backup & alphaLock)) { + static UInt32 backup = 0; + UInt32 change = backup ^ modif; + backup = modif; + if (change & shiftKey) { + if (modif & shiftKey) keystat_senddata(0x70); + else keystat_senddata(0x70 | 0x80); + } + 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); - backup = modif; } result = noErr; }