static TUI_MENU_CALLBACK(detach_tape_callback) { const char *s; if (been_activated) { tape_image_detach(1); ui_update_menus(); } s = tape_get_file_name(); if (s == NULL || *s == '\0') { return "(none)"; } else { return s; } }
void uiattach_command(HWND hwnd, WPARAM wparam) { switch (wparam & 0xffff) { case IDM_ATTACH_8: case IDM_ATTACH_9: case IDM_ATTACH_10: case IDM_ATTACH_11: uiattach_disk_dialog(hwnd, wparam); break; case IDM_DETACH_8: file_system_detach_disk(8); break; case IDM_DETACH_9: file_system_detach_disk(9); break; case IDM_DETACH_10: file_system_detach_disk(10); break; case IDM_DETACH_11: file_system_detach_disk(11); break; case IDM_DETACH_ALL: file_system_detach_disk(8); file_system_detach_disk(9); file_system_detach_disk(10); file_system_detach_disk(11); break; case IDM_ATTACH_TAPE: uiattach_tape_dialog(hwnd); break; case IDM_DETACH_TAPE: tape_image_detach(1); break; case IDM_AUTOSTART: uiattach_autostart_dialog(hwnd); break; } }
void uiattach_command(video_canvas_t *canvas, int idm) { switch (idm) { case IDM_ATTACH_8: case IDM_ATTACH_9: case IDM_ATTACH_10: case IDM_ATTACH_11: uiattach_disk_dialog(canvas, idm); break; case IDM_DETACH_8: file_system_detach_disk(8); break; case IDM_DETACH_9: file_system_detach_disk(9); break; case IDM_DETACH_10: file_system_detach_disk(10); break; case IDM_DETACH_11: file_system_detach_disk(11); break; case IDM_DETACH_ALL: file_system_detach_disk(8); file_system_detach_disk(9); file_system_detach_disk(10); file_system_detach_disk(11); break; case IDM_ATTACH_TAPE: uiattach_tape_dialog(canvas); break; case IDM_DETACH_TAPE: tape_image_detach(1); break; case IDM_AUTOSTART: uiattach_autostart_dialog(canvas); break; } }
static MRESULT EXPENTRY pm_datasette(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) { switch (msg) { case WM_INITDLG: { int val; WinSendMsg(hwnd, WM_COUNTER, (void*)ui_status.lastTapeCounter, 0); WinSendMsg(hwnd, WM_TAPESTAT, (void*)ui_status.lastTapeCtrlStat, (void*)ui_status.lastTapeStatus); WinShowDlg(hwnd, SS_SPIN, ui_status.lastTapeMotor && ui_status.lastTapeStatus); resources_get_int("DatasetteResetWithCPU", &val); WinCheckButton(hwnd, CB_RESETWCPU, val); resources_get_int("DatasetteZeroGapDelay", &val); WinSetDlgSpinVal(hwnd, SPB_DELAY, (val/100)); resources_get_int("DatasetteSpeedTuning", &val); WinSetDlgSpinVal(hwnd, SPB_GAP, val); } break; case WM_COUNTER: WinSetDlgSpinVal(hwnd, SPB_COUNT, (ULONG)mp1); return FALSE; case WM_TAPESTAT: WinEnableControl(hwnd, PB_RECORD, mp2 && (int)mp1!=DATASETTE_CONTROL_RECORD); WinEnableControl(hwnd, PB_REWIND, mp2 && (int)mp1!=DATASETTE_CONTROL_REWIND); WinEnableControl(hwnd, PB_STOP, mp2 && (int)mp1!=DATASETTE_CONTROL_STOP); WinEnableControl(hwnd, PB_START, mp2 && (int)mp1!=DATASETTE_CONTROL_START); WinEnableControl(hwnd, PB_FORWARD, mp2 && (int)mp1!=DATASETTE_CONTROL_FORWARD); WinEnableControl(hwnd, PB_RESET, mp2!=0); WinEnableControl(hwnd, PB_RESETCNT, mp2!=0); WinEnableControl(hwnd, SPB_COUNT, mp2!=0); if (!mp2) WinShowDlg(hwnd, SS_SPIN, 0); return FALSE; case WM_SPINNING: WinShowDlg(hwnd, SS_SPIN, mp1 && mp2); return FALSE; case WM_COMMAND: switch (LONGFROMMP(mp1)) { case PB_STOP: case PB_START: case PB_FORWARD: case PB_REWIND: case PB_RECORD: case PB_RESET: case PB_RESETCNT: datasette_control(LONGFROMMP(mp1)&0xf); return FALSE; case PB_TATTACH: ViceFileDialog(hwnd, 0x0201, FDS_OPEN_DIALOG); return FALSE; case PB_TDETACH: tape_image_detach(1); return FALSE; } break; case WM_CONTROL: switch (SHORT1FROMMP(mp1)) { case CB_RESETWCPU: toggle("DatasetteResetWithCPU"); break; case SPB_DELAY: if (SHORT2FROMMP(mp1)==SPBN_ENDSPIN) { const ULONG val = WinGetSpinVal((HWND)mp2); resources_set_int("DatasetteZeroGapDelay", val*100); } break; case SPB_GAP: if (SHORT2FROMMP(mp1)==SPBN_ENDSPIN) { const ULONG val = WinGetSpinVal((HWND)mp2); resources_set_int("DatasetteSpeedTuning", val); } break; } break; } return WinDefDlgProc (hwnd, msg, mp1, mp2); }
/** * Show and process the floppy disk image dialog. */ void DlgFloppy_Main(void) { int but, i; char *newdisk; char dlgname[MAX_FLOPPYDRIVES][64], dlgdiskdir[64]; SDLGui_CenterDlg(floppydlg); /* Set up dialog to actual values: */ const char *name; floppydlg[FLOPPYDLG_ATTACH2FLIPLIST].state &= ~SG_SELECTED; name = file_system_get_disk_name(8); /* Filename */ if (!name)dlgname[0][0] = '\0'; else File_ShrinkName(dlgname[0], name,floppydlg[FLOPPYDLG_DISKA].w); floppydlg[FLOPPYDLG_DISKA].txt = dlgname[0]; name = file_system_get_disk_name(9); /* Filename */ if (!name)dlgname[1][0] = '\0'; else File_ShrinkName(dlgname[1], name,floppydlg[FLOPPYDLG_DISKB].w); floppydlg[FLOPPYDLG_DISKB].txt = dlgname[1]; name = file_system_get_disk_name(10); /* Filename */ if (!name)dlgname[2][0] = '\0'; else File_ShrinkName(dlgname[2], name,floppydlg[FLOPPYDLG_DISK2].w); floppydlg[FLOPPYDLG_DISK2].txt = dlgname[2]; name = file_system_get_disk_name(11); /* Filename */ if (!name)dlgname[3][0] = '\0'; else File_ShrinkName(dlgname[3], name,floppydlg[FLOPPYDLG_DISK3].w); floppydlg[FLOPPYDLG_DISK3].txt = dlgname[3]; /* Default image directory: */ File_ShrinkName(dlgdiskdir,szDiskImageDirectory, floppydlg[FLOPPYDLG_IMGDIR].w); floppydlg[FLOPPYDLG_IMGDIR].txt = dlgdiskdir; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(floppydlg, NULL); switch (but) { case FLOPPYDLG_EJECTA: /* Eject disk in drive A: */ Floppy_SetDiskFileNameNone(0); dlgname[0][0] = '\0'; file_system_detach_disk(GET_DRIVE(8)); break; case FLOPPYDLG_BROWSEA: /* Choose a new disk A: */ DlgDisk_BrowseDisk(dlgname[0], 0, FLOPPYDLG_DISKA); if (strlen(szDiskFileName[0]) > 0){ int drivetype; printf("load (%s)-",szDiskFileName[0]); resources_get_int_sprintf("Drive%iType", &drivetype, GET_DRIVE(8)); printf("(Drive%iType)\n",drivetype); cartridge_detach_image(-1); tape_image_detach(1); // file_system_detach_disk(GET_DRIVE(8)); if(File_DoesFileExtensionMatch(szDiskFileName[0],"CRT")) cartridge_attach_image(CARTRIDGE_CRT, szDiskFileName[0]); else { //FIXME /* if(File_DoesFileExtensionMatch(szDiskFileName[0],"D81") && drivetype!=1581) resources_set_int_sprintf("Drive%iType", 1581, GET_DRIVE(8)); else if (drivetype!=1542 && !File_DoesFileExtensionMatch(szDiskFileName[0],"D81")) resources_set_int_sprintf("Drive%iType", 1542, GET_DRIVE(8)); */ if (floppydlg[FLOPPYDLG_ATTACH2FLIPLIST].state & SG_SELECTED){ file_system_detach_disk(GET_DRIVE(8)); printf("Attach to flip list\n"); file_system_attach_disk(8, szDiskFileName[0]); fliplist_add_image(8) ; } else { printf("autostart\n"); autostart_autodetect(szDiskFileName[0], NULL, 0, AUTOSTART_MODE_RUN); } } } break; case FLOPPYDLG_EJECTB: /* Eject disk in drive B: */ Floppy_SetDiskFileNameNone(1); dlgname[1][0] = '\0'; file_system_detach_disk(GET_DRIVE(9)); break; case FLOPPYDLG_BROWSEB: /* Choose a new disk B: */ DlgDisk_BrowseDisk(dlgname[1], 1, FLOPPYDLG_DISKB); if (strlen(szDiskFileName[1]) > 0){ file_system_detach_disk(GET_DRIVE(9)); file_system_attach_disk(9, szDiskFileName[1]); } case FLOPPYDLG_EJECT2: /* Eject disk in drive A: */ Floppy_SetDiskFileNameNone(2); dlgname[2][0] = '\0'; file_system_detach_disk(GET_DRIVE(10)); break; case FLOPPYDLG_BROWSE2: /* Choose a new disk A: */ DlgDisk_BrowseDisk(dlgname[2], 0, FLOPPYDLG_DISK2); if (strlen(szDiskFileName[2]) > 0){ //strcpy(prefs->DrivePath[2], szDiskFileName[2]); } break; case FLOPPYDLG_EJECT3: /* Eject disk in drive B: */ Floppy_SetDiskFileNameNone(3); dlgname[3][0] = '\0'; file_system_detach_disk(GET_DRIVE(11)); break; case FLOPPYDLG_BROWSE3: /* Choose a new disk B: */ DlgDisk_BrowseDisk(dlgname[3], 1, FLOPPYDLG_DISKB); if (strlen(szDiskFileName[3]) > 0){ // strcpy(prefs->DrivePath[3], szDiskFileName[3]); } break; case FLOPPYDLG_BROWSEIMG: DlgDisk_BrowseDir(dlgdiskdir,szDiskImageDirectory,floppydlg[FLOPPYDLG_IMGDIR].w); break; /* case FLOPPYDLG_CREATEIMG: newdisk = DlgNewDisk_Main(); if (newdisk) { DlgFloppy_QueryInsert(dlgname[0], FLOPPYDLG_DISKA, dlgname[1], FLOPPYDLG_DISKB, newdisk); free(newdisk); } break; */ } gui_poll_events(); } while (but != FLOPPYDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* if (floppydlg[FLOPPYDLG_AUTOSTART].state & SG_SELECTED){ if(!ThePrefs.Emul1541Proc){ prefs->Emul1541Proc = !prefs->Emul1541Proc; } } else { if(ThePrefs.Emul1541Proc){ prefs->Emul1541Proc = !prefs->Emul1541Proc; } } */ }