--- np2/win9x/np2.cpp 2003/11/04 15:44:59 1.24 +++ np2/win9x/np2.cpp 2005/03/20 13:12:49 1.61 @@ -25,12 +25,10 @@ #include "sstpmsg.h" #include "dclock.h" #include "toolwin.h" -#ifdef USE_ROMEO #include "juliet.h" -#endif #include "np2class.h" #include "dialog.h" -#include "memory.h" +#include "cpucore.h" #include "pccore.h" #include "iocore.h" #include "pc9861k.h" @@ -43,9 +41,9 @@ #include "diskdrv.h" #include "fddfile.h" #include "timing.h" -#include "statsave.h" +#include "keystat.h" #include "debugsub.h" -#include "keydisp.h" +#include "subwind.h" #include "viewer.h" @@ -53,47 +51,52 @@ #define OPENING_WAIT 1500 #endif -#define STATSAVEMAX 10 - -static char szClassName[] = "NP2-MainWindow"; +static OEMCHAR szClassName[] = OEMTEXT("NP2-MainWindow"); HWND hWndMain; HINSTANCE hInst; HINSTANCE hPrev; int mmxflag; - BYTE np2break = 0; // ver0.30 + UINT8 np2break = 0; // ver0.30 BOOL winui_en; NP2OSCFG np2oscfg = { - "Neko Project II", "NP2", - CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 1, 0, 2, +#if !defined(SUPPORT_PC9821) + OEMTEXT("Neko Project II"), +#else + OEMTEXT("Neko Project 21"), +#endif + OEMTEXT("NP2"), + CW_USEDEFAULT, CW_USEDEFAULT, 1, 1, 0, 1, 0, 0, 0, 0, KEY_UNKNOWN, 0, 0, 0, 0, {1, 2, 2, 1}, - {5, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 - {0, 0, 0x3e, 19200, "", "", "", ""}, // ver0.34 + {5, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, + {0, 0, 0x3e, 19200, + OEMTEXT(""), OEMTEXT(""), OEMTEXT(""), OEMTEXT("")}, 0xffffff, 0xffbf6a, 0, 0, - 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0, 0, 0}; // ver0.38 + 0, 1, 0, 9801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - char fddfolder[MAX_PATH]; - char hddfolder[MAX_PATH]; - char bmpfilefolder[MAX_PATH]; - char modulefile[MAX_PATH]; + OEMCHAR fddfolder[MAX_PATH]; + OEMCHAR hddfolder[MAX_PATH]; + OEMCHAR bmpfilefolder[MAX_PATH]; + OEMCHAR modulefile[MAX_PATH]; static UINT framecnt = 0; static UINT waitcnt = 0; static UINT framemax = 1; -static BYTE np2stopemulate = 0; +static UINT8 np2stopemulate = 0; static int np2opening = 1; static int np2quitmsg = 0; static HMENU hStat = NULL; -static BYTE scrnmode; +static UINT8 scrnmode; static WINLOCEX smwlex; -static const char np2help[] = "np2.chm"; -static const char np2flagext[] = "S%02d"; -static const char np2resumeext[] = "sav"; - +static const OEMCHAR np2help[] = OEMTEXT("np2.chm"); +static const OEMCHAR np2flagext[] = OEMTEXT("S%02d"); static void winuienter(void) { @@ -112,13 +115,17 @@ static void winuileave(void) { WINLOCEX np2_winlocexallwin(HWND base) { - HWND list[3]; UINT i; + UINT cnt; + HWND list[5]; - list[0] = hWndMain; - list[1] = toolwin_gethwnd(); - list[2] = keydisp_gethwnd(); - for (i=0; i<3; i++) { + cnt = 0; + list[cnt++] = hWndMain; + list[cnt++] = toolwin_gethwnd(); + list[cnt++] = kdispwin_gethwnd(); + list[cnt++] = skbdwin_gethwnd(); + list[cnt++] = mdbgwin_gethwnd(); + for (i=0; i= IDM_FLAGSAVE) && + (cmd < (IDM_FLAGSAVE + SUPPORT_STATSAVE))) { + OEMCHAR ext[4]; + OEMSPRINTF(ext, np2flagext, cmd - IDM_FLAGSAVE); + flagsave(ext); + } + else if ((cmd >= IDM_FLAGLOAD) && + (cmd < (IDM_FLAGLOAD + SUPPORT_STATSAVE))) { + OEMCHAR ext[4]; + OEMSPRINTF(ext, np2flagext, cmd - IDM_FLAGLOAD); + flagload(ext, OEMTEXT("Status Load"), TRUE); + } +#endif + break; + } + sysmng_update(update); +} + LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; @@ -334,16 +949,27 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT update |= SYS_UPDATEOSCFG; break; +#if defined(SUPPORT_KEYDISP) case IDM_KEYDISP: sysmenu_setkeydisp(np2oscfg.keydisp ^ 1); if (np2oscfg.keydisp) { - keydisp_create(); + kdispwin_create(); } else { - keydisp_destroy(); + kdispwin_destroy(); } break; - +#endif +#if defined(SUPPORT_SOFTKBD) + case IDM_SOFTKBD: + skbdwin_create(); + break; +#endif +#if defined(CPUCORE_IA32) && defined(SUPPORT_MEMDBG32) + case IDM_MEMDBG32: + mdbgwin_create(); + break; +#endif case IDM_SCREENCENTER: if ((!scrnmng_isfullscreen()) && (!(GetWindowLong(hWnd, GWL_STYLE) & @@ -378,7 +1004,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT viewer_open(); break; - case IDM_SCRNMUL4: // ver0.26 + case IDM_SCRNMUL4: case IDM_SCRNMUL6: case IDM_SCRNMUL8: case IDM_SCRNMUL10: @@ -402,7 +1028,15 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT if (subwin) { ShowWindow(subwin, SW_SHOWNOACTIVATE); } - subwin = keydisp_gethwnd(); + subwin = kdispwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + subwin = skbdwin_gethwnd(); + if (subwin) { + ShowWindow(subwin, SW_SHOWNOACTIVATE); + } + subwin = mdbgwin_gethwnd(); if (subwin) { ShowWindow(subwin, SW_SHOWNOACTIVATE); } @@ -415,485 +1049,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_COMMAND: - update = 0; - switch(LOWORD(wParam)) { - case IDM_RESET: - b = FALSE; - if (!np2oscfg.comfirm) { - b = TRUE; - } - else if (sstpconfirm_reset()) { - winuienter(); - if (MessageBox(hWnd, "Sure?", "Reset", - MB_ICONQUESTION | MB_YESNO) == IDYES) { - b = TRUE; - } - winuileave(); - } - if (b) { - sstpmsg_reset(); - pccore_cfgupdate(); - pccore_reset(); - } - break; - - case IDM_CONFIG: - winuienter(); - sstpmsg_config(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_CONFIG), - hWnd, (DLGPROC)CfgDialogProc); - winuileave(); - break; - - case IDM_NEWDISK: - winuienter(); - dialog_newdisk(hWnd); - winuileave(); - break; - - case IDM_CHANGEFONT: - winuienter(); - dialog_font(hWnd); - winuileave(); - break; - - case IDM_EXIT: - SendMessage(hWnd, WM_CLOSE, 0, 0L); - break; - - case IDM_FDD1OPEN: - winuienter(); - dialog_changefdd(hWnd, 0); - winuileave(); - break; - - case IDM_FDD1EJECT: - diskdrv_setfdd(0, NULL, 0); - toolwin_setfdd(0, NULL); - break; - - case IDM_FDD2OPEN: - winuienter(); - dialog_changefdd(hWnd, 1); - winuileave(); - break; - - case IDM_FDD2EJECT: - diskdrv_setfdd(1, NULL, 0); - toolwin_setfdd(1, NULL); - break; - - case IDM_SASI1OPEN: - winuienter(); - dialog_changehdd(hWnd, 0); - winuileave(); - break; - - case IDM_SASI1EJECT: - diskdrv_sethdd(0, NULL); - break; - - case IDM_SASI2OPEN: - winuienter(); - dialog_changehdd(hWnd, 1); - winuileave(); - break; - - case IDM_SASI2EJECT: - diskdrv_sethdd(1, NULL); - break; - - case IDM_WINDOW: - changescreen(scrnmode & (~SCRNMODE_FULLSCREEN)); - break; - - case IDM_FULLSCREEN: - changescreen(scrnmode | SCRNMODE_FULLSCREEN); - break; - - case IDM_ROLNORMAL: - xmenu_setroltate(0); - changescreen(scrnmode & (~SCRNMODE_ROTATEMASK)); - break; - - case IDM_ROLLEFT: - xmenu_setroltate(1); - changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | - SCRNMODE_ROTATELEFT); - break; - - case IDM_ROLRIGHT: - xmenu_setroltate(2); - changescreen((scrnmode & (~SCRNMODE_ROTATEMASK)) | - SCRNMODE_ROTATERIGHT); - break; - - case IDM_DISPSYNC: - xmenu_setdispmode(np2cfg.DISPSYNC ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_RASTER: - xmenu_setraster(np2cfg.RASTER ^ 1); - if (np2cfg.RASTER) { - changescreen(scrnmode | SCRNMODE_HIGHCOLOR); - } - else { - changescreen(scrnmode & (~SCRNMODE_HIGHCOLOR)); - } - update |= SYS_UPDATECFG; - break; - - case IDM_NOWAIT: - xmenu_setwaitflg(np2oscfg.NOWAIT ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_AUTOFPS: - xmenu_setframe(0); - update |= SYS_UPDATECFG; - break; - - case IDM_60FPS: - xmenu_setframe(1); - update |= SYS_UPDATECFG; - break; - - case IDM_30FPS: - xmenu_setframe(2); - update |= SYS_UPDATECFG; - break; - - case IDM_20FPS: - xmenu_setframe(3); - update |= SYS_UPDATECFG; - break; - - case IDM_15FPS: - xmenu_setframe(4); - update |= SYS_UPDATECFG; - break; - - case IDM_SCREENOPT: - winuienter(); - dialog_scropt(hWnd); - winuileave(); - break; - - case IDM_KEY: - xmenu_setkey(0); - keystat_resetjoykey(); - break; - - case IDM_JOY1: - xmenu_setkey(1); - keystat_resetjoykey(); - break; - - case IDM_JOY2: - xmenu_setkey(2); - keystat_resetjoykey(); - break; - - case IDM_XSHIFT: - xmenu_setxshift(np2cfg.XSHIFT ^ 1); - keystat_forcerelease(0x70); - break; - - case IDM_XCTRL: - xmenu_setxshift(np2cfg.XSHIFT ^ 2); - keystat_forcerelease(0x74); - break; - - case IDM_XGRPH: - xmenu_setxshift(np2cfg.XSHIFT ^ 4); - keystat_forcerelease(0x73); - break; - - case IDM_F12MOUSE: - xmenu_setf12copy(0); - winkbd_resetf12(); - update |= SYS_UPDATECFG; - break; - - case IDM_F12COPY: - xmenu_setf12copy(1); - winkbd_resetf12(); - update |= SYS_UPDATECFG; - break; - - case IDM_F12STOP: - xmenu_setf12copy(2); - winkbd_resetf12(); - update |= SYS_UPDATECFG; - break; - - case IDM_F12EQU: - xmenu_setf12copy(3); - winkbd_resetf12(); - update |= SYS_UPDATECFG; - break; - - case IDM_F12COMMA: - xmenu_setf12copy(4); - winkbd_resetf12(); - update |= SYS_UPDATECFG; - break; - - case IDM_BEEPOFF: - xmenu_setbeepvol(0); - beep_setvol(0); - update |= SYS_UPDATECFG; - break; - - case IDM_BEEPLOW: - xmenu_setbeepvol(1); - beep_setvol(1); - update |= SYS_UPDATECFG; - break; - - case IDM_BEEPMID: - xmenu_setbeepvol(2); - beep_setvol(2); - update |= SYS_UPDATECFG; - break; - - case IDM_BEEPHIGH: - xmenu_setbeepvol(3); - beep_setvol(3); - update |= SYS_UPDATECFG; - break; - - case IDM_NOSOUND: - xmenu_setsound(0); - update |= SYS_UPDATECFG; - break; - - case IDM_PC9801_14: - xmenu_setsound(1); - update |= SYS_UPDATECFG; - break; - - case IDM_PC9801_26K: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 6; - sw ^= 2; - } - else { - sw = 2; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; - - case IDM_PC9801_86: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 2) { - sw &= 6; - sw ^= 4; - } - else if (!(sw & 4)) { - sw = 4; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; - - case IDM_PC9801_118: - xmenu_setsound(8); - update |= SYS_UPDATECFG; - break; - - case IDM_CHIBIOTO: - { - BYTE sw; - sw = np2cfg.SOUND_SW; - if (sw & 4) { - sw &= 0x14; - sw ^= 0x10; - } - else { - sw = 0x14; - } - xmenu_setsound(sw); - update |= SYS_UPDATECFG; - } - break; - - case IDM_SPEAKBOARD: - xmenu_setsound(0x20); - update |= SYS_UPDATECFG; - break; - - case IDM_SPARKBOARD: - xmenu_setsound(0x40); - update |= SYS_UPDATECFG; - break; - - case IDM_AMD98: - xmenu_setsound(0x80); - update |= SYS_UPDATECFG; - break; - - case IDM_SNDOPT: - winuienter(); - dialog_sndopt(hWnd); - winuileave(); - break; - - case IDM_SEEKSND: - xmenu_setmotorflg(np2cfg.MOTOR ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_MEM640: - xmenu_setextmem(0); - update |= SYS_UPDATECFG; - break; - - case IDM_MEM16: - xmenu_setextmem(1); - update |= SYS_UPDATECFG; - break; - - case IDM_MEM36: - xmenu_setextmem(3); - update |= SYS_UPDATECFG; - break; - - case IDM_MEM76: - xmenu_setextmem(7); - update |= SYS_UPDATECFG; - break; - - case IDM_MOUSE: - mousemng_toggle(MOUSEPROC_SYSTEM); - xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_SERIAL1: - winuienter(); - dialog_serial(hWnd); - winuileave(); - break; - - case IDM_MPUPC98: - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_MPUPC98), - hWnd, (DLGPROC)MidiDialogProc); - winuileave(); - break; - - case IDM_MIDIPANIC: // ver0.29 - rs232c_midipanic(); - mpu98ii_midipanic(); - pc9861k_midipanic(); - break; - - case IDM_BMPSAVE: - winuienter(); - dialog_writebmp(hWnd); - winuileave(); - break; - - case IDM_S98LOGGING: - winuienter(); - dialog_s98(hWnd); - winuileave(); - break; - - case IDM_DISPCLOCK: - xmenu_setdispclk(np2oscfg.DISPCLK ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_DISPFRAME: - xmenu_setdispclk(np2oscfg.DISPCLK ^ 2); - update |= SYS_UPDATECFG; - break; - - case IDM_CALENDAR: - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_CALENDAR), - hWnd, (DLGPROC)ClndDialogProc); - winuileave(); - break; - - case IDM_ALTENTER: - xmenu_setshortcut(np2oscfg.shortcut ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_ALTF4: - xmenu_setshortcut(np2oscfg.shortcut ^ 2); - update |= SYS_UPDATECFG; - break; - - case IDM_JOYX: - xmenu_setbtnmode(np2cfg.BTN_MODE ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_RAPID: - xmenu_setbtnrapid(np2cfg.BTN_RAPID ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_MSRAPID: - xmenu_setmsrapid(np2cfg.MOUSERAPID ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_SSTP: - xmenu_setsstp(np2oscfg.sstp ^ 1); - update |= SYS_UPDATECFG; - break; - - case IDM_I286SAVE: - debugsub_status(); - break; - - case IDM_HELP: - ShellExecute(hWnd, NULL, file_getcd(np2help), - NULL, NULL, SW_SHOWNORMAL); - break; - - case IDM_ABOUT: - sstpmsg_about(); - if (sstp_result() != SSTP_SENDING) { - winuienter(); - DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUT), - hWnd, (DLGPROC)AboutDialogProc); - winuileave(); - } - break; - - default: - if ((LOWORD(wParam) >= IDM_FLAGSAVE) && - (LOWORD(wParam) < IDM_FLAGSAVE + STATSAVEMAX)) { - char ext[4]; - wsprintf(ext, np2flagext, - (LOWORD(wParam) - IDM_FLAGSAVE) % 100); - flagsave(ext); - } - if ((LOWORD(wParam) >= IDM_FLAGLOAD) && - (LOWORD(wParam) < IDM_FLAGLOAD + STATSAVEMAX)) { - char ext[4]; - wsprintf(ext, np2flagext, - (LOWORD(wParam) - IDM_FLAGLOAD) % 100); - flagload(ext, "Status Load", TRUE); - } - break; - } - sysmng_update(update); + np2cmd(hWnd, LOWORD(wParam)); break; case WM_ACTIVATE: @@ -925,7 +1081,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT GetClientRect(hWnd, &rect); width = rect.right - rect.left; height = rect.bottom - rect.top; - hbmp = LoadBitmap(hinst, "NP2BMP"); + hbmp = LoadBitmap(hinst, _T("NP2BMP")); GetObject(hbmp, sizeof(BITMAP), &bmp); hbrush = (HBRUSH)SelectObject(hdc, GetStockObject(BLACK_BRUSH)); @@ -951,14 +1107,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case WM_MOVE: - if (!scrnmng_isfullscreen()) { - if (!(GetWindowLong(hWnd, GWL_STYLE) & - (WS_MAXIMIZE | WS_MINIMIZE))) { - GetWindowRect(hWnd, &rc); - np2oscfg.winx = rc.left; - np2oscfg.winy = rc.top; - sysmng_update(SYS_UPDATEOSCFG); - } + if ((!scrnmng_isfullscreen()) && + (!(GetWindowLong(hWnd, GWL_STYLE) & + (WS_MAXIMIZE | WS_MINIMIZE)))) { + GetWindowRect(hWnd, &rc); + np2oscfg.winx = rc.left; + np2oscfg.winy = rc.top; + sysmng_update(SYS_UPDATEOSCFG); } break; @@ -1077,7 +1232,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } break; - case WM_MBUTTONDOWN: // ver0.26 + case WM_MBUTTONDOWN: mousemng_toggle(MOUSEPROC_SYSTEM); xmenu_setmouse(np2oscfg.MOUSE_SW ^ 1); sysmng_update(SYS_UPDATECFG); @@ -1085,8 +1240,11 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT case WM_RBUTTONDOWN: if (!mousemng_buttonevent(MOUSEMNG_RIGHTDOWN)) { - if (scrnmng_isfullscreen()) { - POINT p; + if (!scrnmng_isfullscreen()) { + np2popup(hWnd, lParam); + } + else { + POINT p; if ((GetCursorPos(&p)) && (p.y >= 466) && (np2oscfg.clk_x)) { np2oscfg.clk_fnt++; @@ -1111,6 +1269,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT np2oscfg.wintype = 0; } wlex = np2_winlocexallwin(hWnd); + winlocex_setholdwnd(wlex, hWnd); np2class_windowtype(hWnd, np2oscfg.wintype); winlocex_move(wlex); winlocex_destroy(wlex); @@ -1125,14 +1284,13 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } else if (sstpconfirm_exit()) { winuienter(); - if (MessageBox(hWnd, "Sure?", "Exit", + if (MessageBox(hWnd, _T("Sure?"), _T("Exit"), MB_ICONQUESTION | MB_YESNO) == IDYES) { b = TRUE; } winuileave(); } if (b) { - keydisp_destroy(); viewer_allclose(); DestroyWindow(hWnd); } @@ -1157,6 +1315,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT break; case NP2CMD_RESET: + juliet_YMF288Reset(); pccore_cfgupdate(); pccore_reset(); break; @@ -1203,24 +1362,32 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT } +static void framereset(UINT cnt) { + + framecnt = 0; + scrnmng_dispclock(); + kdispwin_draw((UINT8)cnt); + skbdwin_process(); + mdbgwin_process(); + toolwin_draw((UINT8)cnt); + viewer_allreload(FALSE); + if (np2oscfg.DISPCLK & 3) { + if (sysmng_workclockrenewal()) { + sysmng_updatecaption(3); + } + } +} + static void processwait(UINT cnt) { if (timing_getcount() >= cnt) { timing_setcount(0); - framecnt = 0; - scrnmng_dispclock(); - keydisp_draw((BYTE)cnt); - toolwin_draw((BYTE)cnt); - viewer_allreload(FALSE); - if (np2oscfg.DISPCLK & 3) { - if (sysmng_workclockrenewal()) { - sysmng_updatecaption(3); - } - } + framereset(cnt); } else { Sleep(1); } + soundmng_sync(); } @@ -1228,29 +1395,34 @@ int WINAPI WinMain(HINSTANCE hInstance, LPSTR lpszCmdLine, int nCmdShow) { WNDCLASS wc; MSG msg; - HMENU hMenu; - HWND hwndorg; + HWND hWnd; UINT i; + DWORD style; #ifdef OPENING_WAIT UINT32 tick; #endif + BOOL xrollkey; + + _MEM_INIT(); - GetModuleFileName(NULL, modulefile, sizeof(modulefile)); + GetModuleFileName(NULL, modulefile, NELEMENTS(modulefile)); dosio_init(); file_setcd(modulefile); - np2arg_analize(lpszCmdLine); + np2arg_analize(); initload(); toolwin_readini(); - keydisp_readini(); + kdispwin_readini(); + skbdwin_readini(); + mdbgwin_readini(); rand_setseed((unsigned)time(NULL)); - CopyMemory(szClassName, np2oscfg.winid, 3); + CopyMemory(szClassName, np2oscfg.winid, 3 * sizeof(OEMCHAR)); - if ((hwndorg = FindWindow(szClassName, NULL)) != NULL) { + if ((hWnd = FindWindow(szClassName, NULL)) != NULL) { sstpmsg_running(); - ShowWindow(hwndorg, SW_RESTORE); - SetForegroundWindow(hwndorg); + ShowWindow(hWnd, SW_RESTORE); + SetForegroundWindow(hWnd); dosio_term(); return(FALSE); } @@ -1261,10 +1433,12 @@ int WINAPI WinMain(HINSTANCE hInstance, mmxflag += (np2oscfg.disablemmx)?MMXFLAG_DISABLE:0; TRACEINIT(); - if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { // ver0.28 + xrollkey = (np2oscfg.xrollkey == 0); + if (np2oscfg.KEYBOARD >= KEY_TYPEMAX) { int keytype = GetKeyboardType(1); if ((keytype & 0xff00) == 0x0d00) { np2oscfg.KEYBOARD = KEY_PC98; + xrollkey = !xrollkey; } else if (!keytype) { np2oscfg.KEYBOARD = KEY_KEY101; @@ -1273,7 +1447,9 @@ int WINAPI WinMain(HINSTANCE hInstance, np2oscfg.KEYBOARD = KEY_KEY106; } } - keystat_reset(); + winkbd_roll(xrollkey); + winkbd_setf12(np2oscfg.F12COPY); + keystat_initialize(); np2class_initialize(hInstance); if (!hPreInst) { @@ -1292,66 +1468,59 @@ int WINAPI WinMain(HINSTANCE hInstance, } } toolwin_initapp(hInstance); - keydisp_initialize(hPreInst); - viewer_init(hPreInst); // ver0.30 + kdispwin_initialize(hPreInst); + skbdwin_initialize(hPreInst); + mdbgwin_initialize(hPreInst); + viewer_init(hPreInst); - hWndMain = CreateWindow(szClassName, np2oscfg.titles, - WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | - WS_THICKFRAME | WS_MINIMIZEBOX, + mousemng_initialize(); + + style = WS_OVERLAPPED | WS_SYSMENU | WS_CAPTION | WS_MINIMIZEBOX; + if (np2oscfg.thickframe) { + style |= WS_THICKFRAME; + } + hWnd = CreateWindowEx(0, szClassName, np2oscfg.titles, style, np2oscfg.winx, np2oscfg.winy, 640, 400, NULL, NULL, hInstance, NULL); + hWndMain = hWnd; scrnmng_initialize(); - xmenu_setsound(np2cfg.SOUND_SW); - xmenu_setbeepvol(np2cfg.BEEP_VOL); - xmenu_setkey(0); - xmenu_setbtnrapid(np2cfg.BTN_RAPID); - xmenu_setbtnmode(np2cfg.BTN_MODE); - xmenu_setmsrapid(np2cfg.MOUSERAPID); + xmenu_setroltate(0); + xmenu_setdispmode(np2cfg.DISPSYNC); + xmenu_setraster(np2cfg.RASTER); xmenu_setwaitflg(np2oscfg.NOWAIT); xmenu_setframe(np2oscfg.DRAW_SKIP); - xmenu_setdispmode(np2cfg.DISPSYNC); - xmenu_setdispclk(np2oscfg.DISPCLK); - xmenu_seti286save(np2oscfg.I286SAVE); - xmenu_setmotorflg(np2cfg.MOTOR); - xmenu_setroltate(0); + + xmenu_setkey(0); xmenu_setxshift(0); xmenu_setf12copy(np2oscfg.F12COPY); + xmenu_setbeepvol(np2cfg.BEEP_VOL); + xmenu_setsound(np2cfg.SOUND_SW); + xmenu_setjastsound(np2oscfg.jastsnd); + xmenu_setmotorflg(np2cfg.MOTOR); xmenu_setextmem(np2cfg.EXTMEM); - xmenu_setraster(np2cfg.RASTER); - xmenu_setshortcut(np2oscfg.shortcut); // ver0.30 - xmenu_setsstp(np2oscfg.sstp); xmenu_setmouse(np2oscfg.MOUSE_SW); - ShowWindow(hWndMain, nCmdShow); - UpdateWindow(hWndMain); + xmenu_setshortcut(np2oscfg.shortcut); + xmenu_setdispclk(np2oscfg.DISPCLK); + xmenu_setbtnmode(np2cfg.BTN_MODE); + xmenu_setbtnrapid(np2cfg.BTN_RAPID); + xmenu_setmsrapid(np2cfg.MOUSERAPID); + xmenu_setsstp(np2oscfg.sstp); + + ShowWindow(hWnd, nCmdShow); + UpdateWindow(hWnd); #ifdef OPENING_WAIT tick = GetTickCount(); #endif - // めにゅー追加 - if (np2oscfg.statsave) { - char buf[16]; - hMenu = GetMenu(hWndMain); - hStat = CreatePopupMenu(); - for (i=0; i