mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-10-18 17:32:24 +08:00
Windows SDL 1.x: Add "restart DOS" menu command
This commit is contained in:
@@ -714,6 +714,7 @@
|
||||
#define ID_RESET_RESCALE 821
|
||||
#define ID_RESET 822
|
||||
#define ID_MTWAVE 823
|
||||
#define ID_RESTART_DOS 824
|
||||
|
||||
#if defined(WIN32)
|
||||
# define ID_WIN_SYSMENU_RESTOREMENU 0x0F00
|
||||
|
@@ -943,6 +943,7 @@ int Reflect_Menu(void) {
|
||||
name[0] = 0;
|
||||
}
|
||||
|
||||
EnableMenuItem(m_handle, ID_RESTART_DOS, dos_kernel_disabled ? MF_DISABLED : MF_ENABLED);
|
||||
EnableMenuItem(m_handle, ID_CPU_ADVANCED, GFX_GetPreventFullscreen() ? MF_DISABLED : MF_ENABLED);
|
||||
EnableMenuItem(m_handle, ID_DOS_ADVANCED, GFX_GetPreventFullscreen() ? MF_DISABLED : MF_ENABLED);
|
||||
EnableMenuItem(m_handle, ID_MIDI_ADVANCED, GFX_GetPreventFullscreen() ? MF_DISABLED : MF_ENABLED);
|
||||
@@ -1948,6 +1949,9 @@ void MSG_WM_COMMAND_handle(SDL_SysWMmsg &Message) {
|
||||
case ID_WAVE: void CAPTURE_WaveEvent(bool pressed); CAPTURE_WaveEvent(true); break;
|
||||
case ID_OPL: void OPL_SaveRawEvent(bool pressed); OPL_SaveRawEvent(true); break;
|
||||
case ID_MIDI: void CAPTURE_MidiEvent(bool pressed); CAPTURE_MidiEvent(true); break;
|
||||
case ID_RESTART_DOS:
|
||||
throw int(6);
|
||||
break;
|
||||
case ID_XMS: mem_conf("xms", 0); break;
|
||||
case ID_EMS_TRUE: mem_conf("ems", 1); break;
|
||||
case ID_EMS_FALSE: mem_conf("ems", 2); break;
|
||||
|
@@ -4983,6 +4983,11 @@ bool VM_Boot_DOSBox_Kernel() {
|
||||
DispatchVMEvent(VM_EVENT_DOS_SURPRISE_REBOOT); // <- apparently we rebooted without any notification (such as jmp'ing to FFFF:0000)
|
||||
|
||||
dos_kernel_disabled = true;
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
}
|
||||
|
||||
if (dos_kernel_disabled) {
|
||||
@@ -4993,6 +4998,11 @@ bool VM_Boot_DOSBox_Kernel() {
|
||||
void DOS_Startup(Section* sec);
|
||||
DOS_Startup(NULL);
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
void update_pc98_function_row(bool enable);
|
||||
|
||||
void DRIVES_Startup(Section *s);
|
||||
@@ -5496,6 +5506,11 @@ fresh_boot:
|
||||
reboot_machine = false;
|
||||
dos_kernel_shutdown = false;
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
/* NTS: CPU reset handler, and BIOS init, has the instruction pointer poised to run through BIOS initialization,
|
||||
* which will then "boot" into the DOSBox kernel, and then the shell, by calling VM_Boot_DOSBox_Kernel() */
|
||||
/* FIXME: throwing int() is a stupid and nondescriptive way to signal shutdown/reset. */
|
||||
@@ -5538,6 +5553,11 @@ fresh_boot:
|
||||
throw;
|
||||
}
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
if (dos_kernel_shutdown) {
|
||||
/* NTS: we take different paths depending on whether we're just shutting down DOS
|
||||
* or doing a hard reboot. */
|
||||
@@ -5598,8 +5618,18 @@ fresh_boot:
|
||||
DispatchVMEvent(VM_EVENT_DOS_EXIT_REBOOT_KERNEL);
|
||||
else
|
||||
DispatchVMEvent(VM_EVENT_DOS_EXIT_KERNEL);
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
if (run_machine) {
|
||||
bool disable_a20 = static_cast<Section_prop *>(control->GetSection("dosbox"))->Get_bool("turn off a20 gate on boot");
|
||||
|
||||
@@ -5619,6 +5649,11 @@ fresh_boot:
|
||||
goto fresh_boot;
|
||||
}
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
if (reboot_machine) {
|
||||
LOG_MSG("Rebooting the system\n");
|
||||
|
||||
@@ -5652,6 +5687,11 @@ fresh_boot:
|
||||
goto fresh_boot;
|
||||
}
|
||||
|
||||
#if defined(WIN32) && !defined(C_SDL2)
|
||||
int Reflect_Menu(void);
|
||||
Reflect_Menu();
|
||||
#endif
|
||||
|
||||
/* and then shutdown */
|
||||
GFX_ShutDown();
|
||||
|
||||
|
@@ -741,6 +741,8 @@ BEGIN
|
||||
END
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Restart DOS" ID_RESTART_DOS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Edit AUTOEXEC.BAT", ID_AUTOEXEC
|
||||
MENUITEM "Advanced", ID_DOS_ADVANCED
|
||||
END
|
||||
|
Reference in New Issue
Block a user