| version 1.1, 2003/10/16 17:58:58 | version 1.4, 2003/10/30 12:45:38 | 
| Line 4 | Line 4 | 
 | #include        "np2.h" | #include        "np2.h" | 
 | #include        "dosio.h" | #include        "dosio.h" | 
 | #include        "sysmng.h" | #include        "sysmng.h" | 
 | #include        "pccore.h" |  | 
 | #include        "dialog.h" | #include        "dialog.h" | 
 | #include        "dialogs.h" | #include        "dialogs.h" | 
 |  | #include        "pccore.h" | 
 |  |  | 
 |  |  | 
 | static const char str_2halfmhz[] = "2.4576MHz"; | static const char str_2halfmhz[] = "2.4576MHz"; | 
| Line 16  static const UINT32 mulval[10] = {1, 2, | Line 16  static const UINT32 mulval[10] = {1, 2, | 
 | static const char str_clockfmt[] = "%2u.%.4u"; | static const char str_clockfmt[] = "%2u.%.4u"; | 
 |  |  | 
 |  |  | 
| static void SetClock(HWND hWnd) { | static void setclock(HWND hWnd, UINT multiple) { | 
 |  |  | 
| DWORD   dval; | UINT32  clock; | 
 | char    work[32]; | char    work[32]; | 
 | int             val; |  | 
 |  |  | 
 | GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work)); | GetDlgItemText(hWnd, IDC_BASECLOCK, work, sizeof(work)); | 
 | if (work[0] == '1') { | if (work[0] == '1') { | 
| dval = PCBASECLOCK20 / 100; | clock = PCBASECLOCK20 / 100; | 
 | } | } | 
 | else { | else { | 
| dval = PCBASECLOCK25 / 100; | clock = PCBASECLOCK25 / 100; | 
 | } | } | 
| GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); | if (multiple == 0) { | 
| val = milstr_solveINT(work); | GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); | 
| if (val < 1) { | multiple = (UINT)milstr_solveINT(work); | 
| val = 1; |  | 
 | } | } | 
| else if (val > 32) { | if (multiple < 1) { | 
| val = 32; | multiple = 1; | 
 | } | } | 
| dval *= val; | else if (multiple > 32) { | 
| wsprintf(work, str_clockfmt, dval / 10000, dval % 10000); | multiple = 32; | 
|  | } | 
|  | clock *= multiple; | 
|  | wsprintf(work, str_clockfmt, clock / 10000, clock % 10000); | 
 | SetDlgItemText(hWnd, IDC_CLOCKMSG, work); | SetDlgItemText(hWnd, IDC_CLOCKMSG, work); | 
 | } | } | 
 |  |  | 
 |  |  | 
 | LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { | LRESULT CALLBACK CfgDialogProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { | 
 |  |  | 
 | char    work[128]; | char    work[128]; | 
 | BYTE    bval; | BYTE    bval; | 
 | WORD    wval; | WORD    wval; | 
| DWORD   dval; | UINT32  dval; | 
| int             val; | UINT    val; | 
 | UINT    update; | UINT    update; | 
 |  |  | 
 | switch (msg) { | switch (msg) { | 
| Line 79  LRESULT CALLBACK CfgDialogProc(HWND hWnd | Line 79  LRESULT CALLBACK CfgDialogProc(HWND hWnd | 
 | wsprintf(work, str_u, np2cfg.delayms); | wsprintf(work, str_u, np2cfg.delayms); | 
 | SetDlgItemText(hWnd, IDC_SOUNDBUF, work); | SetDlgItemText(hWnd, IDC_SOUNDBUF, work); | 
 |  |  | 
 |  | if (mmxflag & MMXFLAG_NOTSUPPORT) { | 
 |  | EnableWindow(GetDlgItem(hWnd, IDC_DISABLEMMX), FALSE); | 
 |  | SetDlgItemCheck(hWnd, IDC_DISABLEMMX, TRUE); | 
 |  | } | 
 |  | else { | 
 |  | SetDlgItemCheck(hWnd, IDC_DISABLEMMX, np2oscfg.disablemmx); | 
 |  | } | 
 | SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm); | SetDlgItemCheck(hWnd, IDC_COMFIRM, np2oscfg.comfirm); | 
 | SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume); | SetDlgItemCheck(hWnd, IDC_RESUME, np2oscfg.resume); | 
| SetClock(hWnd); | setclock(hWnd, 0); | 
 | SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK)); | SetFocus(GetDlgItem(hWnd, IDC_BASECLOCK)); | 
 | return(FALSE); | return(FALSE); | 
 |  |  | 
| Line 96  LRESULT CALLBACK CfgDialogProc(HWND hWnd | Line 103  LRESULT CALLBACK CfgDialogProc(HWND hWnd | 
 | else { | else { | 
 | dval = PCBASECLOCK25; | dval = PCBASECLOCK25; | 
 | } | } | 
| if (dval != np2cfg.baseclock) { | if (np2cfg.baseclock != dval) { | 
 | np2cfg.baseclock = dval; | np2cfg.baseclock = dval; | 
 | update |= SYS_UPDATECFG | SYS_UPDATECLOCK; | update |= SYS_UPDATECFG | SYS_UPDATECLOCK; | 
 | } | } | 
 |  |  | 
 | GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); | GetDlgItemText(hWnd, IDC_MULTIPLE, work, sizeof(work)); | 
| val = milstr_solveINT(work); | val = (UINT)milstr_solveINT(work); | 
 | if (val < 1) { | if (val < 1) { | 
 | val = 1; | val = 1; | 
 | } | } | 
 | else if (val > 32) { | else if (val > 32) { | 
 | val = 32; | val = 32; | 
 | } | } | 
| if (np2cfg.multiple != (DWORD)val) { | if (np2cfg.multiple != val) { | 
 | np2cfg.multiple = val; | np2cfg.multiple = val; | 
 | update |= SYS_UPDATECFG | SYS_UPDATECLOCK; | update |= SYS_UPDATECFG | SYS_UPDATECLOCK; | 
 | } | } | 
| Line 130  LRESULT CALLBACK CfgDialogProc(HWND hWnd | Line 137  LRESULT CALLBACK CfgDialogProc(HWND hWnd | 
 | } | } | 
 |  |  | 
 | GetDlgItemText(hWnd, IDC_SOUNDBUF, work, sizeof(work)); | GetDlgItemText(hWnd, IDC_SOUNDBUF, work, sizeof(work)); | 
| val = milstr_solveINT(work); | val = (UINT)milstr_solveINT(work); | 
 | if (val < 100) { | if (val < 100) { | 
 | val = 100; | val = 100; | 
 | } | } | 
 | else if (val > 1000) { | else if (val > 1000) { | 
 | val = 1000; | val = 1000; | 
 | } | } | 
| if (np2cfg.delayms != (WORD)val) { | if (np2cfg.delayms != (UINT16)val) { | 
 | soundrenewal = 1; | soundrenewal = 1; | 
| np2cfg.delayms = (WORD)val; | np2cfg.delayms = (UINT16)val; | 
 | update |= SYS_UPDATECFG | SYS_UPDATESBUF; | update |= SYS_UPDATECFG | SYS_UPDATESBUF; | 
 | } | } | 
 |  |  | 
 |  | if (!(mmxflag & MMXFLAG_NOTSUPPORT)) { | 
 |  | bval = GetDlgItemCheck(hWnd, IDC_DISABLEMMX); | 
 |  | if (np2oscfg.disablemmx != bval) { | 
 |  | np2oscfg.disablemmx = bval; | 
 |  | mmxflag &= ~MMXFLAG_DISABLE; | 
 |  | mmxflag |= (bval)?MMXFLAG_DISABLE:0; | 
 |  | update |= SYS_UPDATEOSCFG; | 
 |  | } | 
 |  | } | 
 |  |  | 
 | bval = GetDlgItemCheck(hWnd, IDC_COMFIRM); | bval = GetDlgItemCheck(hWnd, IDC_COMFIRM); | 
 | if (np2oscfg.comfirm != bval) { | if (np2oscfg.comfirm != bval) { | 
 | np2oscfg.comfirm = bval; | np2oscfg.comfirm = bval; | 
| Line 163  LRESULT CALLBACK CfgDialogProc(HWND hWnd | Line 180  LRESULT CALLBACK CfgDialogProc(HWND hWnd | 
 | break; | break; | 
 |  |  | 
 | case IDC_BASECLOCK: | case IDC_BASECLOCK: | 
 |  | setclock(hWnd, 0); | 
 |  | return(FALSE); | 
 |  |  | 
 | case IDC_MULTIPLE: | case IDC_MULTIPLE: | 
| SetClock(hWnd); | if (HIWORD(wp) == CBN_SELCHANGE) { | 
|  | val = (UINT)SendDlgItemMessage(hWnd, IDC_MULTIPLE, | 
|  | CB_GETCURSEL, 0, 0); | 
|  | if (val < sizeof(mulval)/sizeof(UINT32)) { | 
|  | setclock(hWnd, mulval[val]); | 
|  | } | 
|  | } | 
|  | else { | 
|  | setclock(hWnd, 0); | 
|  | } | 
 | return(FALSE); | return(FALSE); | 
 |  |  | 
 | default: | default: |