diff --git a/menu.cpp b/menu.cpp index 13ee387..8bbfefb 100644 --- a/menu.cpp +++ b/menu.cpp @@ -3233,26 +3233,27 @@ void HandleUI(void) menustate = MENU_8BIT_INFO; menusub = 3; } + else if (menusub <= 1 && (select || recent)) + { + if (tos_disk_is_inserted(menusub)) + { + tos_insert_disk(menusub, ""); + menustate = MENU_ST_MAIN1; + } + else + { + fs_Options = SCANO_DIR; + fs_MenuSelect = MENU_ST_FDD_FILE_SELECTED; + fs_MenuCancel = MENU_ST_MAIN1; + strcpy(fs_pFileExt, "ST"); + if (select) SelectFile(Selected_F[menusub], "ST", fs_Options, fs_MenuSelect, fs_MenuCancel); + else if (recent_init(menusub)) menustate = MENU_RECENT1; + } + } else if (select || minus || plus) { switch (menusub) { - case 0: - case 1: - if (select) - { - if (tos_disk_is_inserted(menusub)) - { - tos_insert_disk(menusub, ""); - menustate = MENU_ST_MAIN1; - } - else - { - SelectFile(Selected_F[menusub], "ST ", SCANO_DIR, MENU_ST_FDD_FILE_SELECTED, MENU_ST_MAIN1); - } - } - break; - case 2: // remove current write protect bits and increase by one tos_update_sysctrl((tos_system_ctrl() & ~(TOS_CONTROL_FDC_WR_PROT_A | TOS_CONTROL_FDC_WR_PROT_B)) @@ -3323,6 +3324,7 @@ void HandleUI(void) case MENU_ST_FDD_FILE_SELECTED: memcpy(Selected_F[menusub], selPath, sizeof(Selected_F[menusub])); + recent_update(SelectedDir, selPath, SelectedLabel, menusub); tos_insert_disk(menusub, selPath); menustate = MENU_ST_MAIN1; break; @@ -3417,31 +3419,40 @@ void HandleUI(void) saved_menustate = 0; } } + else if (menusub <= 2 && (select || recent)) + { + if (menusub <= 1) + { + fs_Options = SCANO_DIR | SCANO_UMOUNT; + fs_MenuSelect = MENU_ST_HDD_FILE_SELECTED; + fs_MenuCancel = MENU_ST_SYSTEM1; + strcpy(fs_pFileExt, "VHD"); + if (select) SelectFile(Selected_S[menusub], "VHD", fs_Options, fs_MenuSelect, fs_MenuCancel); + else if (recent_init(menusub + 500)) menustate = MENU_RECENT1; + } + else + { + if (tos_cartridge_is_inserted()) + { + tos_load_cartridge(""); + menustate = MENU_ST_SYSTEM1; + } + else + { + fs_Options = SCANO_DIR; + fs_MenuSelect = MENU_ST_SYSTEM_FILE_SELECTED; + fs_MenuCancel = MENU_ST_SYSTEM1; + strcpy(fs_pFileExt, "IMG"); + if (select) SelectFile(Selected_F[menusub], "IMG", fs_Options, fs_MenuSelect, fs_MenuCancel); + else if (recent_init(menusub)) menustate = MENU_RECENT1; + } + } + + } else if (select || plus || minus) { switch (menusub) { - case 0: - case 1: - if (select) SelectFile(Selected_S[menusub], "VHD", SCANO_DIR | SCANO_UMOUNT, MENU_ST_HDD_FILE_SELECTED, MENU_ST_SYSTEM1); - break; - - case 2: - // Cart - if (select) - { - if (tos_cartridge_is_inserted()) - { - tos_load_cartridge(""); - menustate = MENU_ST_SYSTEM1; - } - else - { - SelectFile(Selected_F[menusub], "IMG", SCANO_DIR, MENU_ST_SYSTEM_FILE_SELECTED, MENU_ST_SYSTEM1); - } - } - break; - case 3: { // RAM @@ -3539,6 +3550,7 @@ void HandleUI(void) case MENU_ST_HDD_FILE_SELECTED: printf("Insert image for disk %d\n", menusub); memcpy(Selected_S[menusub], selPath, sizeof(Selected_S[menusub])); + recent_update(SelectedDir, selPath, SelectedLabel, menusub + 500); tos_insert_disk(menusub+2, selPath); menustate = MENU_ST_SYSTEM1; break; @@ -3554,6 +3566,7 @@ void HandleUI(void) if (menusub == 2) { memcpy(Selected_F[menusub], selPath, sizeof(Selected_F[menusub])); + recent_update(SelectedDir, selPath, SelectedLabel, menusub); tos_load_cartridge(selPath); menustate = MENU_ST_SYSTEM1; } @@ -3939,7 +3952,7 @@ void HandleUI(void) if (c == KEY_BACKSPACE && (fs_Options & SCANO_UMOUNT)) { for (int i = 0; i < OsdGetSize(); i++) OsdWrite(i, "", 0, 0); - OsdWrite(OsdGetSize() / 2, " Unmounting the image", 0, 0); + OsdWrite(OsdGetSize() / 2, " Unmounting the image", 0, 0); OsdUpdate(); sleep(1); selPath[0] = 0;