| version 1.1, 2003/10/23 10:57:49 | version 1.3, 2004/01/22 04:59:49 | 
| Line 1 | Line 1 | 
 | #include        "compiler.h" | #include        "compiler.h" | 
| // #include     "strres.h" | #include        "strres.h" | 
 | #include        "resource.h" | #include        "resource.h" | 
| // #include     "sysmng.h" | #include        "dosio.h" | 
 | #include        "dialog.h" | #include        "dialog.h" | 
 | #include        "dialogs.h" | #include        "dialogs.h" | 
 | #include        "pccore.h" | #include        "pccore.h" | 
| Line 35  void dialog_changehdd(BYTE drv) { | Line 35  void dialog_changehdd(BYTE drv) { | 
 |  |  | 
 | // ---- newdisk | // ---- newdisk | 
 |  |  | 
| #if 0 | static const char str_newdisk[] = "newdisk.d88"; | 
 |  |  | 
| static const char str_newdisk[] = "newdisk"; | typedef struct { | 
| static const UINT32 hddsizetbl[5] = {20, 41, 65, 80, 128}; | BYTE    fdtype; | 
|  | char    label[16+1]; | 
| static  BYTE    makefdtype = DISKTYPE_2HD << 4; | } NEWDISK; | 
| static  char    disklabel[16+1]; |  | 
| static  UINT    hddsize; | static int NewHddDlgProc(UINT *hddsize) { | 
|  |  | 
| static LRESULT CALLBACK NewHddDlgProc(HWND hWnd, UINT msg, | DialogPtr       hDlg; | 
| WPARAM wp, LPARAM lp) { | Str255          sizestr; | 
|  | int                     done; | 
| UINT    val; | short           item; | 
| char    work[32]; | char            work[16]; | 
|  |  | 
| switch (msg) { | hDlg = GetNewDialog(IDD_NEWHDDDISK, NULL, (WindowPtr)-1); | 
| case WM_INITDIALOG: | if (!hDlg) { | 
| SETLISTUINT32(hWnd, IDC_HDDSIZE, hddsizetbl); | return(0); | 
| SetFocus(GetDlgItem(hWnd, IDC_HDDSIZE)); | } | 
| return(FALSE); |  | 
|  | mkstr255(sizestr, "41"); | 
| case WM_COMMAND: | SetDialogItemText(GetDlgItem(hDlg, IDC_HDDSIZE), sizestr); | 
| switch (LOWORD(wp)) { | SelectDialogItemText(hDlg, IDC_HDDSIZE, 0x0000, 0x7fff); | 
| case IDOK: | SetDialogDefaultItem(hDlg, IDOK); | 
| GetWindowText(GetDlgItem(hWnd, IDC_HDDSIZE), | SetDialogCancelItem(hDlg, IDCANCEL); | 
| work, sizeof(work)); |  | 
| val = (UINT)milstr_solveINT(work); | done = 0; | 
| if (val < 0) { | while(!done) { | 
| val = 0; | ModalDialog(NULL, &item); | 
| } | switch(item) { | 
| else if (val > 512) { | case IDOK: | 
| val = 512; | GetDialogItemText(GetDlgItem(hDlg, IDC_HDDSIZE), sizestr); | 
| } | mkcstr(work, sizeof(work), sizestr); | 
| hddsize = val; | *hddsize = milstr_solveINT(work); | 
| EndDialog(hWnd, IDOK); | done = IDOK; | 
| break; | break; | 
|  |  | 
| case IDCANCEL: | case IDCANCEL: | 
| EndDialog(hWnd, IDCANCEL); | done = IDCANCEL; | 
| break; | break; | 
|  | } | 
| default: |  | 
| return(FALSE); |  | 
| } |  | 
| break; |  | 
|  |  | 
| case WM_CLOSE: |  | 
| PostMessage(hWnd, WM_COMMAND, IDCANCEL, 0); |  | 
| break; |  | 
|  |  | 
| default: |  | 
| return(FALSE); |  | 
 | } | } | 
| return(TRUE); | DisposeDialog(hDlg); | 
|  | return(done); | 
 | } | } | 
 |  |  | 
| static LRESULT CALLBACK NewdiskDlgProc(HWND hWnd, UINT msg, | static int NewdiskDlgProc(NEWDISK *newdisk) { | 
| WPARAM wp, LPARAM lp) { |  | 
|  |  | 
| WORD    res; |  | 
|  |  | 
| switch (msg) { |  | 
| case WM_INITDIALOG: |  | 
| switch(makefdtype) { |  | 
| case (DISKTYPE_2DD << 4): |  | 
| res = IDC_MAKE2DD; |  | 
| break; |  | 
|  |  | 
| case (DISKTYPE_2HD << 4): |  | 
| res = IDC_MAKE2HD; |  | 
| break; |  | 
|  |  | 
| default: |  | 
| res = IDC_MAKE144; |  | 
| break; |  | 
| } |  | 
| SetDlgItemCheck(hWnd, res, 1); |  | 
| SetFocus(GetDlgItem(hWnd, IDC_DISKLABEL)); |  | 
| return(FALSE); |  | 
|  |  | 
| case WM_COMMAND: |  | 
| switch (LOWORD(wp)) { |  | 
| case IDOK: |  | 
| GetWindowText(GetDlgItem(hWnd, IDC_DISKLABEL), |  | 
| disklabel, sizeof(disklabel)); |  | 
| if (milstr_kanji1st(disklabel, sizeof(disklabel) - 1)) { |  | 
| disklabel[sizeof(disklabel) - 1] = '\0'; |  | 
| } |  | 
| if (GetDlgItemCheck(hWnd, IDC_MAKE2DD)) { |  | 
| makefdtype = (DISKTYPE_2DD << 4); |  | 
| } |  | 
| else if (GetDlgItemCheck(hWnd, IDC_MAKE2HD)) { |  | 
| makefdtype = (DISKTYPE_2HD << 4); |  | 
| } |  | 
| else { |  | 
| makefdtype = (DISKTYPE_2HD << 4) + 1; |  | 
| } |  | 
| 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: | DialogPtr               hDlg; | 
| return(FALSE); | int                             media; | 
|  | int                             done; | 
|  | short                   item; | 
|  | Str255                  disklabel; | 
|  | ControlHandle   btn[2]; | 
|  |  | 
|  | hDlg = GetNewDialog(IDD_NEWFDDDISK, NULL, (WindowPtr)-1); | 
|  | if (!hDlg) { | 
|  | return(0); | 
|  | } | 
|  |  | 
|  | SelectDialogItemText(hDlg, IDC_DISKLABEL, 0x0000, 0x7fff); | 
|  | btn[0] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2DD); | 
|  | btn[1] = (ControlHandle)GetDlgItem(hDlg, IDC_MAKE2HD); | 
|  | SetControlValue(btn[0], 0); | 
|  | SetControlValue(btn[1], 1); | 
|  | media = 1; | 
|  | SetDialogDefaultItem(hDlg, IDOK); | 
|  | SetDialogCancelItem(hDlg, IDCANCEL); | 
|  |  | 
|  | done = 0; | 
|  | while(!done) { | 
|  | ModalDialog(NULL, &item); | 
|  | switch(item) { | 
|  | case IDOK: | 
|  | if (media == 0) { | 
|  | newdisk->fdtype = (DISKTYPE_2DD << 4); | 
|  | } | 
|  | else if (media == 1) { | 
|  | newdisk->fdtype = (DISKTYPE_2HD << 4); | 
|  | } | 
|  | else { | 
|  | newdisk->fdtype = (DISKTYPE_2HD << 4) + 1; | 
|  | } | 
|  | GetDialogItemText(GetDlgItem(hDlg, IDC_DISKLABEL), disklabel); | 
|  | mkcstr(newdisk->label, sizeof(newdisk->label), disklabel); | 
|  | done = IDOK; | 
|  | break; | 
|  |  | 
|  | case IDCANCEL: | 
|  | done = IDCANCEL; | 
|  | break; | 
|  |  | 
|  | case IDC_DISKLABEL: | 
|  | break; | 
|  |  | 
|  | case IDC_MAKE2DD: | 
|  | SetControlValue(btn[0], 1); | 
|  | SetControlValue(btn[1], 0); | 
|  | media = 0; | 
|  | break; | 
|  |  | 
|  | case IDC_MAKE2HD: | 
|  | SetControlValue(btn[0], 0); | 
|  | SetControlValue(btn[1], 1); | 
|  | media = 1; | 
|  | break; | 
|  | } | 
 | } | } | 
| return(TRUE); | DisposeDialog(hDlg); | 
|  | return(done); | 
 | } | } | 
 |  |  | 
| void dialog_newdisk(HWND hWnd) { | void dialog_newdisk(void) { | 
 |  |  | 
| char            path[MAX_PATH]; | char    path[MAX_PATH]; | 
| const char              *p; | UINT    hddsize; | 
| HINSTANCE       hinst; | NEWDISK disk; | 
|  |  | 
| file_cpyname(path, fddfolder, sizeof(path)); |  | 
| file_cutname(path); |  | 
| file_catname(path, str_newdisk, sizeof(path)); |  | 
 |  |  | 
| p = dlgs_selectwritefile(hWnd, &newdiskui, path, NULL, 0); | if (!dlgs_selectwritefile(path, sizeof(path), str_newdisk)) { | 
| if (p == NULL) { |  | 
 | return; | return; | 
 | } | } | 
| hinst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE); | if (!file_cmpname(file_getext(path), str_thd)) { | 
| if (!file_cmpname(file_getext((char *)p), str_thd)) { | hddsize = 0; | 
|  | if (NewHddDlgProc(&hddsize) == IDOK) { | 
|  | newdisk_thd(path, hddsize); | 
|  | } | 
|  | } | 
|  | else if (!file_cmpname(file_getext(path), str_hdd)) { | 
 | hddsize = 0; | hddsize = 0; | 
| if (DialogBox(hinst, MAKEINTRESOURCE(IDD_NEWHDDDISK), | if (NewHddDlgProc(&hddsize) == IDOK) { | 
| hWnd, (DLGPROC)NewHddDlgProc) == IDOK) { | newdisk_vhd(path, hddsize); | 
| newdisk_hdd(p, hddsize);        // (hddsize < 5) || (hddsize > 256) |  | 
 | } | } | 
 | } | } | 
 | else { | else { | 
| if (DialogBox(hinst, | if (NewdiskDlgProc(&disk) == IDOK) { | 
| MAKEINTRESOURCE(np2cfg.usefd144?IDD_NEWDISK2:IDD_NEWDISK), | newdisk_fdd(path, disk.fdtype, disk.label); | 
| hWnd, (DLGPROC)NewdiskDlgProc) == IDOK) { |  | 
| newdisk_fdd(p, makefdtype, disklabel); |  | 
 | } | } | 
 | } | } | 
 | } | } | 
 | #endif |  | 
 |  |  |