/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but; char dlgname_gdos[64], dlgname_acsi[64], dlgname_ide[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ /* Boot from harddisk? */ if (ConfigureParams.HardDisk.bBootFromHardDisk) diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; else diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; /* ACSI hard disk image: */ if (ConfigureParams.HardDisk.bUseHardDiskImage) File_ShrinkName(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeHardDiskImage) File_ShrinkName(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage, diskdlg[DISKDLG_IDENAME].w); else dlgname_ide[0] = '\0'; diskdlg[DISKDLG_IDENAME].txt = dlgname_ide; /* GEMDOS hard disk directory: */ if (ConfigureParams.HardDisk.bUseHardDiskDirectories) File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_ACSIEJECT: ConfigureParams.HardDisk.bUseHardDiskImage = FALSE; dlgname_acsi[0] = '\0'; break; case DISKDLG_ACSIBROWSE: if (SDLGui_FileConfSelect(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_ACSINAME].w, FALSE)) ConfigureParams.HardDisk.bUseHardDiskImage = TRUE; break; case DISKDLG_IDEEJECT: ConfigureParams.HardDisk.bUseIdeHardDiskImage = FALSE; dlgname_ide[0] = '\0'; break; case DISKDLG_IDEBROWSE: if (SDLGui_FileConfSelect(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage, diskdlg[DISKDLG_IDENAME].w, FALSE)) ConfigureParams.HardDisk.bUseIdeHardDiskImage = TRUE; break; case DISKDLG_GEMDOSEJECT: ConfigureParams.HardDisk.bUseHardDiskDirectories = FALSE; dlgname_gdos[0] = '\0'; break; case DISKDLG_GEMDOSBROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w)) ConfigureParams.HardDisk.bUseHardDiskDirectories = TRUE; break; } } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); }
/** * 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_AUTORUN].state &= ~SG_SELECTED; name = DISKA_NAME; /* Filename */ if (!name)dlgname[0][0] = '\0'; else File_ShrinkName(dlgname[0], name,floppydlg[FLOPPYDLG_DISKA].w); floppydlg[FLOPPYDLG_DISKA].txt = dlgname[0]; name = DISKB_NAME; /* Filename */ if (!name)dlgname[1][0] = '\0'; else File_ShrinkName(dlgname[1], name,floppydlg[FLOPPYDLG_DISKB].w); floppydlg[FLOPPYDLG_DISKB].txt = dlgname[1]; name = TAPE_NAME; /* Filename */ if (!name)dlgname[2][0] = '\0'; else File_ShrinkName(dlgname[2], name,floppydlg[FLOPPYDLG_DISK2].w); floppydlg[FLOPPYDLG_DISK2].txt = dlgname[2]; name = CART_NAME; /* 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'; DiskImage_RemoveDisk(0); break; case FLOPPYDLG_BROWSEA: /* Choose a new disk A: */ DlgDisk_BrowseDisk(dlgname[0], 0, FLOPPYDLG_DISKA); if (strlen(szDiskFileName[0]) > 0){ if (GenericInterface_InsertDiskImage(0, szDiskFileName[0])) { printf("Error loading drivea:%s\n", szDiskFileName[0]); } else { if(floppydlg[FLOPPYDLG_AUTORUN].state & SG_SELECTED){ char AutoType_String[256]; char *pBuffer = malloc(512*5); int nAutoRunResult = AMSDOS_GenerateAutorunCommand(pBuffer,AutoType_String); if(nAutoRunResult==0){ printf("auto(%s)\n",AutoType_String); AutoType_SetString(AutoType_String, TRUE, TRUE); } else printf("error auto(%d)\n",nAutoRunResult); free(pBuffer); } sprintf(DISKA_NAME,"%s",szDiskFileName[0]); } } break; case FLOPPYDLG_EJECTB: /* Eject disk in drive B: */ Floppy_SetDiskFileNameNone(1); dlgname[1][0] = '\0'; DiskImage_RemoveDisk(1); break; case FLOPPYDLG_BROWSEB: /* Choose a new disk B: */ DlgDisk_BrowseDisk(dlgname[1], 1, FLOPPYDLG_DISKB); if (strlen(szDiskFileName[1]) > 0){ if (GenericInterface_InsertDiskImage(1, szDiskFileName[1])) { printf("Error loading driveb:%s\n", szDiskFileName[1]); } else sprintf(DISKB_NAME,"%s",szDiskFileName[1]); } case FLOPPYDLG_EJECT2: /* Eject tape */ Floppy_SetDiskFileNameNone(2); dlgname[2][0] = '\0'; Tape_Remove(); sprintf(TAPE_NAME,"\0"); break; case FLOPPYDLG_BROWSE2: /* Choose a new tape */ DlgDisk_BrowseDisk(dlgname[2], 2, FLOPPYDLG_DISK2); if (strlen(szDiskFileName[2]) > 0){ if (GenericInterface_InsertTape(szDiskFileName[2])) { printf("Error loading Tape:%s\n", szDiskFileName[2]); } else { sprintf(TAPE_NAME,"%s",szDiskFileName[2]); AutoType_SetString( "|TAPE\nRUN\"\n\n", TRUE, TRUE); } } break; case FLOPPYDLG_EJECT3: /* Eject cart */ Floppy_SetDiskFileNameNone(3); dlgname[3][0] = '\0'; GenericInterface_RemoveCartridge(); sprintf(CART_NAME,"\0"); break; case FLOPPYDLG_BROWSE3: /* Choose a new cart */ DlgDisk_BrowseDisk(dlgname[3], 3, FLOPPYDLG_DISK3); if (strlen(szDiskFileName[3]) > 0){ if(strcmp (szDiskFileName[3],"/home/tech/Bureau/GIT/arnold/roms/parados.rom") == 0){ GenericInterface_LoadRom(7, szDiskFileName[3]); CPC_Reset(); break; } if (GenericInterface_InsertCartridge(szDiskFileName[3])) { printf("Error loading cart:%s\n",szDiskFileName[3]); } else sprintf(CART_NAME,"%s",szDiskFileName[3]); // 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); }
/** * Show and process the floppy disk image dialog. */ void DlgFloppy_Main(void) { int32_t but, i; char *newdisk; char dlgname[MAX_FLOPPYDRIVES][64], dlgdiskdir[64]; SDLGui_CenterDlg(floppydlg); /* Set up dialog to actual values: */ /* Disk name 0: */ if(currprefs.floppyslots[1 - 1].df!=NULL) File_ShrinkName(dlgname[0], currprefs.floppyslots[0].df,floppydlg[FLOPPYDLG_DISKA].w); else dlgname[0][0] = '\0'; floppydlg[FLOPPYDLG_DISKA].txt = dlgname[0]; /* Disk name 1: */ if(currprefs.floppyslots[2 - 1].df!=NULL) File_ShrinkName(dlgname[1], currprefs.floppyslots[1].df,floppydlg[FLOPPYDLG_DISKB].w); else dlgname[1][0] = '\0'; floppydlg[FLOPPYDLG_DISKB].txt = dlgname[1]; /* Disk name 2: */ if(currprefs.floppyslots[3 - 1].df!=NULL) File_ShrinkName(dlgname[2], currprefs.floppyslots[2].df,floppydlg[FLOPPYDLG_DISK2].w); else dlgname[0][0] = '\0'; floppydlg[FLOPPYDLG_DISK2].txt = dlgname[2]; /* Disk name 3: */ if(currprefs.floppyslots[4 - 1].df!=NULL) File_ShrinkName(dlgname[3],currprefs.floppyslots[3].df,floppydlg[FLOPPYDLG_DISK3].w); else dlgname[1][0] = '\0'; 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'; changed_prefs.floppyslots[0].df[0] = 0; DISK_check_change(); disk_eject(0); break; case FLOPPYDLG_BROWSEA: /* Choose a new disk A: */ DlgDisk_BrowseDisk(dlgname[0], 0, FLOPPYDLG_DISKA); if (strlen(szDiskFileName[0]) > 0){ if (currprefs.nr_floppies-1 < 0 ) { currprefs.nr_floppies = 0 + 1; } //check whether drive is enabled if (currprefs.floppyslots[0].dfxtype < 0) { changed_prefs.floppyslots[0 ].dfxtype = 0; DISK_check_change(); } strcpy (changed_prefs.floppyslots[0 ].df,szDiskFileName[0]); DISK_check_change(); //disk_eject(0); //disk_insert (0, changed_prefs.floppyslots[0 ].df, false); } break; case FLOPPYDLG_EJECTB: /* Eject disk in drive B: */ Floppy_SetDiskFileNameNone(1); dlgname[1][0] = '\0'; changed_prefs.floppyslots[1].df[0] = 0; DISK_check_change(); disk_eject(1); break; case FLOPPYDLG_BROWSEB: /* Choose a new disk B: */ DlgDisk_BrowseDisk(dlgname[1], 1, FLOPPYDLG_DISKB); if (strlen(szDiskFileName[1]) > 0){ if (currprefs.nr_floppies-1 < 1 ) { currprefs.nr_floppies = 1 + 1; } //check whether drive is enabled if (currprefs.floppyslots[1].dfxtype < 0) { changed_prefs.floppyslots[1 ].dfxtype = 0; DISK_check_change(); } strcpy (changed_prefs.floppyslots[1 ].df,szDiskFileName[1]); DISK_check_change(); } case FLOPPYDLG_EJECT2: /* Eject disk in drive A: */ Floppy_SetDiskFileNameNone(2); dlgname[2][0] = '\0'; changed_prefs.floppyslots[2].df[0] = 0; DISK_check_change(); disk_eject(2); break; case FLOPPYDLG_BROWSE2: /* Choose a new disk A: */ DlgDisk_BrowseDisk(dlgname[2], 0, FLOPPYDLG_DISK2); if (strlen(szDiskFileName[2]) > 0){ if (currprefs.nr_floppies-1 < 2 ) { currprefs.nr_floppies = 2 + 1; } //check whether drive is enabled if (currprefs.floppyslots[2].dfxtype < 0) { changed_prefs.floppyslots[2 ].dfxtype = 0; DISK_check_change(); } strcpy (changed_prefs.floppyslots[2 ].df,szDiskFileName[2]); DISK_check_change(); //disk_eject(0); //disk_insert (0, changed_prefs.floppyslots[0 ].df, false); } break; case FLOPPYDLG_EJECT3: /* Eject disk in drive B: */ Floppy_SetDiskFileNameNone(3); dlgname[3][0] = '\0'; changed_prefs.floppyslots[3].df[0] = 0; DISK_check_change(); disk_eject(3); break; case FLOPPYDLG_BROWSE3: /* Choose a new disk B: */ DlgDisk_BrowseDisk(dlgname[3], 1, FLOPPYDLG_DISKB); if (strlen(szDiskFileName[3]) > 0){ if (currprefs.nr_floppies-1 < 3 ) { currprefs.nr_floppies = 3 + 1; } //check whether drive is enabled if (currprefs.floppyslots[3].dfxtype < 0) { changed_prefs.floppyslots[3 ].dfxtype = 0; DISK_check_change(); } strcpy (changed_prefs.floppyslots[3 ].df,szDiskFileName[3]); DISK_check_change(); } break; case FLOPPYDLG_BROWSEIMG: DlgDisk_BrowseDir(dlgdiskdir, /*ConfigureParams.DiskImage.*/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); }
/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but, i; char dlgname_gdos[64], dlgname_acsi[64]; char dlgname_ide_master[64], dlgname_ide_slave[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ printf("skip: %d\n", ConfigureParams.HardDisk.nHardDiskDrive); /* Skip ACSI/IDE partitions? */ if (ConfigureParams.HardDisk.nHardDiskDrive == DRIVE_SKIP) diskdlg[DISKDLG_DRIVESKIP].state |= SG_SELECTED; else diskdlg[DISKDLG_DRIVESKIP].state &= ~SG_SELECTED; /* Boot from harddisk? */ if (ConfigureParams.HardDisk.bBootFromHardDisk) diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; else diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; /* ACSI hard disk image: */ if (ConfigureParams.Acsi[0].bUseDevice) File_ShrinkName(dlgname_acsi, ConfigureParams.Acsi[0].sDeviceFile, diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE master hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage) File_ShrinkName(dlgname_ide_master, ConfigureParams.HardDisk.szIdeMasterHardDiskImage, diskdlg[DISKDLG_IDEMASTERNAME].w); else dlgname_ide_master[0] = '\0'; diskdlg[DISKDLG_IDEMASTERNAME].txt = dlgname_ide_master; /* IDE slave hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage) File_ShrinkName(dlgname_ide_slave, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage, diskdlg[DISKDLG_IDESLAVENAME].w); else dlgname_ide_slave[0] = '\0'; diskdlg[DISKDLG_IDESLAVENAME].txt = dlgname_ide_slave; /* GEMDOS hard disk directory: */ if (ConfigureParams.HardDisk.bUseHardDiskDirectories) File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Write protection */ for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++) { diskdlg[i].state &= ~SG_SELECTED; } diskdlg[DISKDLG_PROTOFF+ConfigureParams.HardDisk.nWriteProtection].state |= SG_SELECTED; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_ACSIEJECT: ConfigureParams.Acsi[0].bUseDevice = false; dlgname_acsi[0] = '\0'; break; case DISKDLG_ACSIBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_acsi, ConfigureParams.Acsi[0].sDeviceFile, diskdlg[DISKDLG_ACSINAME].w, false)) ConfigureParams.Acsi[0].bUseDevice = true; break; case DISKDLG_IDEMASTEREJECT: ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = false; dlgname_ide_master[0] = '\0'; break; case DISKDLG_IDEMASTERBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_ide_master, ConfigureParams.HardDisk.szIdeMasterHardDiskImage, diskdlg[DISKDLG_IDEMASTERNAME].w, false)) ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = true; break; case DISKDLG_IDESLAVEEJECT: ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = false; dlgname_ide_slave[0] = '\0'; break; case DISKDLG_IDESLAVEBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_ide_slave, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage, diskdlg[DISKDLG_IDESLAVENAME].w, false)) ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = true; break; case DISKDLG_GEMDOSEJECT: ConfigureParams.HardDisk.bUseHardDiskDirectories = false; dlgname_gdos[0] = '\0'; break; case DISKDLG_GEMDOSBROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w)) ConfigureParams.HardDisk.bUseHardDiskDirectories = true; break; } gui_poll_events(); } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++) { if (diskdlg[i].state & SG_SELECTED) { ConfigureParams.HardDisk.nWriteProtection = i-DISKDLG_PROTOFF; break; } } ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); if (diskdlg[DISKDLG_DRIVESKIP].state & SG_SELECTED) ConfigureParams.HardDisk.nHardDiskDrive = DRIVE_SKIP; else if (ConfigureParams.HardDisk.nHardDiskDrive == DRIVE_SKIP) ConfigureParams.HardDisk.nHardDiskDrive = DRIVE_C; }
/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but, i; char dlgname_gdos[64], dlgname_acsi[64]; char dlgname_ide_master[64], dlgname_ide_slave[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ /* Boot from harddisk? */ /* ACSI hard disk image: */ if (bUseHardDiskImage[0]) File_ShrinkName(dlgname_acsi, szHardDiskImage[0], diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE master hard disk image: */ if (bUseHardDiskImage[1]) File_ShrinkName(dlgname_ide_master, szHardDiskImage[1], diskdlg[DISKDLG_IDEMASTERNAME].w); else dlgname_ide_master[0] = '\0'; diskdlg[DISKDLG_IDEMASTERNAME].txt = dlgname_ide_master; /* IDE slave hard disk image: */ if (bUseHardDiskImage[2]) File_ShrinkName(dlgname_ide_slave, szHardDiskImage[2], diskdlg[DISKDLG_IDESLAVENAME].w); else dlgname_ide_slave[0] = '\0'; diskdlg[DISKDLG_IDESLAVENAME].txt = dlgname_ide_slave; /* GEMDOS hard disk directory: */ if (bUseHardDiskImage[3]) File_ShrinkName(dlgname_gdos, szHardDiskImage[4], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_HD0EJECT: bUseHardDiskImage[0] = false; dlgname_acsi[0] = '\0'; if(szHardDiskImage[0]!=0) kill_filesys_unitconfig (&currprefs, 0); break; case DISKDLG_HD0BROWSE: if (SDLGui_FileConfSelect(dlgname_acsi, szHardDiskImage[0], diskdlg[DISKDLG_ACSINAME].w, false)){ bUseHardDiskImage[0] = true; mount_hdf(0,szHardDiskImage[0]); } break; case DISKDLG_HD1EJECT: bUseHardDiskImage[1] = false; dlgname_ide_master[0] = '\0'; if(szHardDiskImage[1]!=0) kill_filesys_unitconfig (&currprefs, 1); break; case DISKDLG_HD1BROWSE: if (SDLGui_FileConfSelect(dlgname_ide_master, szHardDiskImage[1], diskdlg[DISKDLG_IDEMASTERNAME].w, false)){ bUseHardDiskImage[1] = true; mount_hdf(1,szHardDiskImage[1]);} break; case DISKDLG_HD2EJECT: bUseHardDiskImage[2]= false; dlgname_ide_slave[0] = '\0'; if(szHardDiskImage[2]!=0) kill_filesys_unitconfig (&currprefs, 2); break; case DISKDLG_HD2BROWSE: if (SDLGui_FileConfSelect(dlgname_ide_slave, szHardDiskImage[2], diskdlg[DISKDLG_IDESLAVENAME].w, false)){ bUseHardDiskImage[2] = true; mount_hdf(2,szHardDiskImage[2]);} break; case DISKDLG_HD3EJECT: bUseHardDiskImage[3]= false; dlgname_gdos[0] = '\0'; if(szHardDiskImage[3]!=0) kill_filesys_unitconfig (&currprefs, 3); break; case DISKDLG_HD3BROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, szHardDiskImage[3], diskdlg[DISKDLG_GEMDOSNAME].w)){ bUseHardDiskImage[3]= true; mount_hdf(3,szHardDiskImage[3]);} break; } gui_poll_events(); } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }
/** * 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; } } */ }