| version 1.5, 2003/10/30 12:45:38 | version 1.19, 2007/11/11 07:11:28 | 
| Line 2 | Line 2 | 
 | #include        "strres.h" | #include        "strres.h" | 
 | #include        "resource.h" | #include        "resource.h" | 
 | #include        "np2.h" | #include        "np2.h" | 
 |  | #include        "oemtext.h" | 
 | #include        "dosio.h" | #include        "dosio.h" | 
 | #include        "sysmng.h" | #include        "sysmng.h" | 
 | #include        "toolwin.h" | #include        "toolwin.h" | 
| Line 12 | Line 13 | 
 | #include        "fddfile.h" | #include        "fddfile.h" | 
 | #include        "newdisk.h" | #include        "newdisk.h" | 
 |  |  | 
|  | static const FSPARAM fpFDD = | 
| static const char fddui_title[] = "Select floppy image"; | { | 
| static const char fddui_filter[] =                                                                              \ | MAKEINTRESOURCE(IDS_FDDTITLE), | 
| "D88 image files (*.D88;*.D98)\0"                                       \ | MAKEINTRESOURCE(IDS_FDDEXT), | 
| "*.d88;*.88d;*.d98;*.98d\0"                     \ | MAKEINTRESOURCE(IDS_FDDFILTER), | 
| "Floppy disk images (*.XDF;*.HDM;*.DUP;*.2HD)\0"        \ | 3 | 
| "*.xdf;*.hdm;*.dup;*.2hd;*.tfd\0"       \ | }; | 
| "All supported Files\0"                                                         \ |  | 
| "*.d88;*.88d;*.d98;*.98d;"                      \ | #if defined(SUPPORT_SASI) | 
| "*.xdf;*.hdm;*.dup;*.2hd;*.tfd\0"       \ | static const FSPARAM fpSASI = | 
| "All files (*.*)\0*.*\0"; | { | 
| static const FILESEL fddui = {fddui_title, str_d88, fddui_filter, 3}; | MAKEINTRESOURCE(IDS_SASITITLE), | 
|  | MAKEINTRESOURCE(IDS_HDDEXT), | 
| static const char hddui_title[] = "Select HDD image"; | MAKEINTRESOURCE(IDS_HDDFILTER), | 
| static const char hddui_filter[] =                                                                              \ | 4 | 
| "T98 harddisk image files (*.THD)\0"                            \ | }; | 
| "*.thd\0"                                                       \ | #else   // defined(SUPPORT_SASI) | 
| "Anex86 harddisk image files (*.HDI)\0"                         \ | static const FSPARAM fpSASI = | 
| "*.hdi\0"                                                       \ | { | 
| "All supported Files\0"                                                         \ | MAKEINTRESOURCE(IDS_HDDTITLE), | 
| "*.thd;*.hdi\0"; | MAKEINTRESOURCE(IDS_HDDEXT), | 
| static const FILESEL hddui = {hddui_title, str_thd, hddui_filter, 3}; | MAKEINTRESOURCE(IDS_HDDFILTER), | 
|  | 4 | 
| static const char newdisk_title[] = "Create disk image"; | }; | 
| static const char newdisk_filter[] =                                                                    \ | #endif  // defined(SUPPORT_SASI) | 
| "D88 image files (*.D88;*.88D)\0"                                       \ |  | 
| "*.d88;*.88d\0"                                 \ | #if defined(SUPPORT_IDEIO) | 
| "T98 harddisk image files (*.THD)\0"                            \ | static const FSPARAM fpISO = | 
| "*.thd\0"; | { | 
| static const FILESEL newdiskui = {newdisk_title, str_d88, newdisk_filter, 1}; | MAKEINTRESOURCE(IDS_ISOTITLE), | 
|  | MAKEINTRESOURCE(IDS_ISOEXT), | 
|  | MAKEINTRESOURCE(IDS_ISOFILTER), | 
|  | 3 | 
|  | }; | 
|  | #endif  // defined(SUPPORT_IDEIO) | 
|  |  | 
|  | #if defined(SUPPORT_SCSI) | 
|  | static const FSPARAM fpSCSI = | 
|  | { | 
|  | MAKEINTRESOURCE(IDS_SCSITITLE), | 
|  | MAKEINTRESOURCE(IDS_SCSIEXT), | 
|  | MAKEINTRESOURCE(IDS_SCSIFILTER), | 
|  | 1 | 
|  | }; | 
|  | #endif  // defined(SUPPORT_SCSI) | 
|  |  | 
|  | #if defined(SUPPORT_SCSI) | 
|  | static const FSPARAM fpNewDisk = | 
|  | { | 
|  | MAKEINTRESOURCE(IDS_NEWDISKTITLE), | 
|  | MAKEINTRESOURCE(IDS_NEWDISKEXT), | 
|  | MAKEINTRESOURCE(IDS_NEWDISKFILTER), | 
|  | 1 | 
|  | }; | 
|  | #else   // defined(SUPPORT_SCSI) | 
|  | static const FSPARAM fpNewDisk = | 
|  | { | 
|  | MAKEINTRESOURCE(IDS_NEWDISKTITLE), | 
|  | MAKEINTRESOURCE(IDS_NEWDISKEXT), | 
|  | MAKEINTRESOURCE(IDS_NEWDISKFILTER2), | 
|  | 1 | 
|  | }; | 
|  | #endif  // defined(SUPPORT_SCSI) | 
 |  |  | 
 |  |  | 
 | // ---- | // ---- | 
 |  |  | 
| void dialog_changefdd(HWND hWnd, BYTE drv) { | void dialog_changefdd(HWND hWnd, REG8 drv) { | 
 |  |  | 
| const char      *p; | const OEMCHAR   *p; | 
| char    path[MAX_PATH]; | OEMCHAR         path[MAX_PATH]; | 
| int             readonly; | int                     readonly; | 
 |  |  | 
 | if (drv < 4) { | if (drv < 4) { | 
 | p = fdd_diskname(drv); | p = fdd_diskname(drv); | 
 | if ((p == NULL) || (p[0] == '\0')) { | if ((p == NULL) || (p[0] == '\0')) { | 
 | p = fddfolder; | p = fddfolder; | 
 | } | } | 
| file_cpyname(path, p, sizeof(path)); | file_cpyname(path, p, NELEMENTS(path)); | 
| if (dlgs_selectfile(hWnd, &fddui, path, sizeof(path), &readonly)) { | if (dlgs_openfile(hWnd, &fpFDD, path, NELEMENTS(path), &readonly)) | 
| file_cpyname(fddfolder, path, sizeof(fddfolder)); | { | 
|  | file_cpyname(fddfolder, path, NELEMENTS(fddfolder)); | 
 | sysmng_update(SYS_UPDATEOSCFG); | sysmng_update(SYS_UPDATEOSCFG); | 
 | diskdrv_setfdd(drv, path, readonly); | diskdrv_setfdd(drv, path, readonly); | 
 | toolwin_setfdd(drv, path); | toolwin_setfdd(drv, path); | 
| Line 67  const char *p; | Line 102  const char *p; | 
 | } | } | 
 | } | } | 
 |  |  | 
| void dialog_changehdd(HWND hWnd, BYTE drv) { | void dialog_changehdd(HWND hWnd, REG8 drv) { | 
|  |  | 
| const char      *p; |  | 
| char    path[MAX_PATH]; |  | 
 |  |  | 
| if (drv < 2) { | UINT            num; | 
| p = np2cfg.hddfile[drv]; | const OEMCHAR   *p; | 
| if ((p == NULL) || (p[0] == '\0')) { | PCFSPARAM       pfp; | 
| p = hddfolder; | OEMCHAR         path[MAX_PATH]; | 
|  |  | 
|  | p = diskdrv_getsxsi(drv); | 
|  | num = drv & 0x0f; | 
|  | pfp = NULL; | 
|  | if (!(drv & 0x20))                      // SASI/IDE | 
|  | { | 
|  | if (num < 2) | 
|  | { | 
|  | pfp = &fpSASI; | 
 | } | } | 
| file_cpyname(path, p, sizeof(path)); | #if defined(SUPPORT_IDEIO) | 
| if (dlgs_selectfile(hWnd, &hddui, path, sizeof(path), NULL)) { | else if (num == 2) | 
| file_cpyname(hddfolder, path, sizeof(hddfolder)); | { | 
| sysmng_update(SYS_UPDATEOSCFG); | pfp = &fpISO; | 
| diskdrv_sethdd(drv, path); |  | 
 | } | } | 
 |  | #endif | 
 |  | } | 
 |  | #if defined(SUPPORT_SCSI) | 
 |  | else                                            // SCSI | 
 |  | { | 
 |  | if (num < 4) | 
 |  | { | 
 |  | pfp = &fpSCSI; | 
 |  | } | 
 |  | } | 
 |  | #endif | 
 |  | if (pfp == NULL) | 
 |  | { | 
 |  | return; | 
 |  | } | 
 |  | if ((p == NULL) || (p[0] == '\0')) | 
 |  | { | 
 |  | p = hddfolder; | 
 |  | } | 
 |  | file_cpyname(path, p, NELEMENTS(path)); | 
 |  | if (dlgs_openfile(hWnd, pfp, path, NELEMENTS(path), NULL)) | 
 |  | { | 
 |  | file_cpyname(hddfolder, path, NELEMENTS(hddfolder)); | 
 |  | sysmng_update(SYS_UPDATEOSCFG); | 
 |  | diskdrv_sethdd(drv, path); | 
 | } | } | 
 | } | } | 
 |  |  | 
 |  |  | 
 | // ---- newdisk | // ---- newdisk | 
 |  |  | 
| static const char str_newdisk[] = "newdisk"; | static const OEMCHAR str_newdisk[] = OEMTEXT("newdisk"); | 
 | static const UINT32 hddsizetbl[5] = {20, 41, 65, 80, 128}; | static const UINT32 hddsizetbl[5] = {20, 41, 65, 80, 128}; | 
 |  |  | 
| static  BYTE    makefdtype = DISKTYPE_2HD << 4; | static const UINT16 sasires[6] = { | 
| static  char    disklabel[16+1]; | IDC_NEWSASI5MB, IDC_NEWSASI10MB, | 
|  | IDC_NEWSASI15MB, IDC_NEWSASI20MB, | 
|  | IDC_NEWSASI30MB, IDC_NEWSASI40MB}; | 
|  |  | 
|  | static  UINT8   makefdtype = DISKTYPE_2HD << 4; | 
|  | static  OEMCHAR disklabel[16+1]; | 
 | static  UINT    hddsize; | static  UINT    hddsize; | 
 |  | static  UINT    hddminsize; | 
 |  | static  UINT    hddmaxsize; | 
 |  |  | 
 | static LRESULT CALLBACK NewHddDlgProc(HWND hWnd, UINT msg, | static LRESULT CALLBACK NewHddDlgProc(HWND hWnd, UINT msg, | 
 | WPARAM wp, LPARAM lp) { | WPARAM wp, LPARAM lp) { | 
 |  |  | 
 | UINT    val; | UINT    val; | 
| char    work[32]; | TCHAR   work[32]; | 
 |  |  | 
 | switch (msg) { | switch (msg) { | 
 | case WM_INITDIALOG: | case WM_INITDIALOG: | 
 | SETLISTUINT32(hWnd, IDC_HDDSIZE, hddsizetbl); | SETLISTUINT32(hWnd, IDC_HDDSIZE, hddsizetbl); | 
 |  | wsprintf(work, _T("(%d-%dMB)"), hddminsize, hddmaxsize); | 
 |  | SetWindowText(GetDlgItem(hWnd, IDC_HDDLIMIT), work); | 
 | SetFocus(GetDlgItem(hWnd, IDC_HDDSIZE)); | SetFocus(GetDlgItem(hWnd, IDC_HDDSIZE)); | 
 | return(FALSE); | return(FALSE); | 
 |  |  | 
 | case WM_COMMAND: | case WM_COMMAND: | 
| switch (LOWORD(wp)) { | switch(LOWORD(wp)) { | 
 | case IDOK: | case IDOK: | 
 | GetWindowText(GetDlgItem(hWnd, IDC_HDDSIZE), | GetWindowText(GetDlgItem(hWnd, IDC_HDDSIZE), | 
| work, sizeof(work)); | work, NELEMENTS(work)); | 
| val = (UINT)milstr_solveINT(work); | val = (UINT)miltchar_solveINT(work); | 
| if (val < 0) { | if (val < hddminsize) { | 
| val = 0; | val = hddminsize; | 
 | } | } | 
| else if (val > 512) { | else if (val > hddmaxsize) { | 
| val = 512; | val = hddmaxsize; | 
|  | } | 
|  | hddsize = val; | 
|  | EndDialog(hWnd, IDOK); | 
|  | break; | 
|  |  | 
|  | case IDCANCEL: | 
|  | EndDialog(hWnd, IDCANCEL); | 
|  | break; | 
|  |  | 
|  | default: | 
|  | return(FALSE); | 
|  | } | 
|  | break; | 
|  |  | 
|  | case WM_CLOSE: | 
|  | PostMessage(hWnd, WM_COMMAND, IDCANCEL, 0); | 
|  | break; | 
|  |  | 
|  | default: | 
|  | return(FALSE); | 
|  | } | 
|  | return(TRUE); | 
|  | } | 
|  |  | 
|  | static LRESULT CALLBACK NewSASIDlgProc(HWND hWnd, UINT msg, | 
|  | WPARAM wp, LPARAM lp) { | 
|  |  | 
|  | UINT    val; | 
|  |  | 
|  | switch (msg) { | 
|  | case WM_INITDIALOG: | 
|  | SetFocus(GetDlgItem(hWnd, IDC_NEWSASI5MB)); | 
|  | return(FALSE); | 
|  |  | 
|  | case WM_COMMAND: | 
|  | switch(LOWORD(wp)) { | 
|  | case IDOK: | 
|  | for (val=0; val<6; val++) { | 
|  | if (GetDlgItemCheck(hWnd, sasires[val])) { | 
|  | break; | 
|  | } | 
|  | } | 
|  | if (val > 3) { | 
|  | val++; | 
 | } | } | 
 | hddsize = val; | hddsize = val; | 
 | EndDialog(hWnd, IDOK); | EndDialog(hWnd, IDOK); | 
| Line 146  static LRESULT CALLBACK NewHddDlgProc(HW | Line 264  static LRESULT CALLBACK NewHddDlgProc(HW | 
 | static LRESULT CALLBACK NewdiskDlgProc(HWND hWnd, UINT msg, | static LRESULT CALLBACK NewdiskDlgProc(HWND hWnd, UINT msg, | 
 | WPARAM wp, LPARAM lp) { | WPARAM wp, LPARAM lp) { | 
 |  |  | 
| WORD    res; | UINT16  res; | 
|  | #if defined(OSLANG_UTF8) | 
|  | TCHAR   buf[17]; | 
|  | #endif | 
 |  |  | 
 | switch (msg) { | switch (msg) { | 
 | case WM_INITDIALOG: | case WM_INITDIALOG: | 
| Line 168  static LRESULT CALLBACK NewdiskDlgProc(H | Line 289  static LRESULT CALLBACK NewdiskDlgProc(H | 
 | return(FALSE); | return(FALSE); | 
 |  |  | 
 | case WM_COMMAND: | case WM_COMMAND: | 
| switch (LOWORD(wp)) { | switch(LOWORD(wp)) { | 
 | case IDOK: | case IDOK: | 
 |  | #if defined(OSLANG_UTF8) | 
 |  | GetWindowText(GetDlgItem(hWnd, IDC_DISKLABEL), | 
 |  | buf, NELEMENTS(buf)); | 
 |  | tchartooem(disklabel, NELEMENTS(disklabel), buf, -1); | 
 |  | #else | 
 | GetWindowText(GetDlgItem(hWnd, IDC_DISKLABEL), | GetWindowText(GetDlgItem(hWnd, IDC_DISKLABEL), | 
| disklabel, sizeof(disklabel)); | disklabel, NELEMENTS(disklabel)); | 
| if (milstr_kanji1st(disklabel, sizeof(disklabel) - 1)) { | if (milstr_kanji1st(disklabel, NELEMENTS(disklabel) - 1)) { | 
| disklabel[sizeof(disklabel) - 1] = '\0'; | disklabel[NELEMENTS(disklabel) - 1] = '\0'; | 
 | } | } | 
 |  | #endif | 
 | if (GetDlgItemCheck(hWnd, IDC_MAKE2DD)) { | if (GetDlgItemCheck(hWnd, IDC_MAKE2DD)) { | 
 | makefdtype = (DISKTYPE_2DD << 4); | makefdtype = (DISKTYPE_2DD << 4); | 
 | } | } | 
| Line 208  static LRESULT CALLBACK NewdiskDlgProc(H | Line 335  static LRESULT CALLBACK NewdiskDlgProc(H | 
 |  |  | 
 | void dialog_newdisk(HWND hWnd) { | void dialog_newdisk(HWND hWnd) { | 
 |  |  | 
| char            path[MAX_PATH]; | OEMCHAR         path[MAX_PATH]; | 
 | HINSTANCE       hinst; | HINSTANCE       hinst; | 
 |  | const OEMCHAR   *ext; | 
 |  |  | 
| file_cpyname(path, fddfolder, sizeof(path)); | file_cpyname(path, fddfolder, NELEMENTS(path)); | 
 | file_cutname(path); | file_cutname(path); | 
| file_catname(path, str_newdisk, sizeof(path)); | file_catname(path, str_newdisk, NELEMENTS(path)); | 
 |  |  | 
| if (!dlgs_selectwritefile(hWnd, &newdiskui, path, sizeof(path))) { | if (!dlgs_createfile(hWnd, &fpNewDisk, path, NELEMENTS(path))) | 
|  | { | 
 | return; | return; | 
 | } | } | 
| hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); | hinst = (HINSTANCE)GetWindowLongPtr(hWnd, GWLP_HINSTANCE); | 
| if (!file_cmpname(file_getext(path), str_thd)) { | ext = file_getext(path); | 
|  | if (!file_cmpname(ext, str_thd)) { | 
|  | hddsize = 0; | 
|  | hddminsize = 5; | 
|  | hddmaxsize = 256; | 
|  | if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWHDDDISK), | 
|  | hWnd, (DLGPROC)NewHddDlgProc) == IDOK) { | 
|  | newdisk_thd(path, hddsize); | 
|  | } | 
|  | } | 
|  | else if (!file_cmpname(ext, str_nhd)) { | 
|  | hddsize = 0; | 
|  | hddminsize = 5; | 
|  | hddmaxsize = 512; | 
|  | if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWHDDDISK), | 
|  | hWnd, (DLGPROC)NewHddDlgProc) == IDOK) { | 
|  | newdisk_nhd(path, hddsize); | 
|  | } | 
|  | } | 
|  | else if (!file_cmpname(ext, str_hdi)) { | 
|  | hddsize = 7; | 
|  | if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWSASI), | 
|  | hWnd, (DLGPROC)NewSASIDlgProc) == IDOK) { | 
|  | newdisk_hdi(path, hddsize); | 
|  | } | 
|  | } | 
|  | #if defined(SUPPORT_SCSI) | 
|  | else if (!file_cmpname(ext, str_hdd)) { | 
 | hddsize = 0; | hddsize = 0; | 
 |  | hddminsize = 2; | 
 |  | hddmaxsize = 512; | 
 | if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWHDDDISK), | if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWHDDDISK), | 
 | hWnd, (DLGPROC)NewHddDlgProc) == IDOK) { | hWnd, (DLGPROC)NewHddDlgProc) == IDOK) { | 
| newdisk_hdd(path, hddsize);     // (hddsize < 5) || (hddsize > 256) | newdisk_vhd(path, hddsize); | 
 | } | } | 
 | } | } | 
| else { | #endif | 
|  | else if ((!file_cmpname(ext, str_d88)) || | 
|  | (!file_cmpname(ext, str_d98)) || | 
|  | (!file_cmpname(ext, str_88d)) || | 
|  | (!file_cmpname(ext, str_98d))) { | 
 | if (DialogBox(hinst, | if (DialogBox(hinst, | 
| MAKEINTRESOURCE(np2cfg.usefd144?IDD_NEWDISK2:IDD_NEWDISK), | MAKEINTRESOURCE((np2cfg.usefd144)?IDD_NEWDISK2:IDD_NEWDISK), | 
 | hWnd, (DLGPROC)NewdiskDlgProc) == IDOK) { | hWnd, (DLGPROC)NewdiskDlgProc) == IDOK) { | 
 | newdisk_fdd(path, makefdtype, disklabel); | newdisk_fdd(path, makefdtype, disklabel); | 
 | } | } |