diff --git a/src/constants.ts b/src/constants.ts index dad90e0..9dd52ad 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -18,6 +18,7 @@ export const IPC_COMMANDS = { ZOOM_RESET: "ZOOM_RESET", // Machine instructions MACHINE_START: "MACHINE_START", + MACHINE_BOOT_FROM_SCRATCH: "MACHINE_BOOT_FROM_SCRATCH", MACHINE_RESTART: "MACHINE_RESTART", MACHINE_STOP: "MACHINE_STOP", MACHINE_RESET: "MACHINE_RESET", diff --git a/src/main/menu.ts b/src/main/menu.ts index 0bb5da3..4330c58 100644 --- a/src/main/menu.ts +++ b/src/main/menu.ts @@ -125,29 +125,6 @@ async function createMenu({ isRunning } = { isRunning: false }) { { label: "Machine", submenu: [ - { - label: "Send Ctrl+Alt+Del", - click: () => send(IPC_COMMANDS.MACHINE_CTRL_ALT_DEL), - enabled: isRunning, - }, - { - label: "Send Alt+F4", - click: () => send(IPC_COMMANDS.MACHINE_ALT_F4), - enabled: isRunning, - }, - { - label: "Send Alt+Enter", - click: () => send(IPC_COMMANDS.MACHINE_ALT_ENTER), - enabled: isRunning, - }, - { - label: "Send Esc", - click: () => send(IPC_COMMANDS.MACHINE_ESC), - enabled: isRunning, - }, - { - type: "separator", - }, isRunning ? { label: "Stop", @@ -157,6 +134,11 @@ async function createMenu({ isRunning } = { isRunning: false }) { label: "Start", click: () => send(IPC_COMMANDS.MACHINE_START), }, + { + label: "Start without state", + click: () => send(IPC_COMMANDS.MACHINE_BOOT_FROM_SCRATCH), + enabled: !isRunning, + }, { label: "Restart", click: () => send(IPC_COMMANDS.MACHINE_RESTART), @@ -184,6 +166,29 @@ async function createMenu({ isRunning } = { isRunning: false }) { { type: "separator", }, + { + label: "Send Ctrl+Alt+Del", + click: () => send(IPC_COMMANDS.MACHINE_CTRL_ALT_DEL), + enabled: isRunning, + }, + { + label: "Send Alt+F4", + click: () => send(IPC_COMMANDS.MACHINE_ALT_F4), + enabled: isRunning, + }, + { + label: "Send Alt+Enter", + click: () => send(IPC_COMMANDS.MACHINE_ALT_ENTER), + enabled: isRunning, + }, + { + label: "Send Esc", + click: () => send(IPC_COMMANDS.MACHINE_ESC), + enabled: isRunning, + }, + { + type: "separator", + }, { label: "Go to Disk Image", click: () => send(IPC_COMMANDS.SHOW_DISK_IMAGE), diff --git a/src/renderer/emulator.tsx b/src/renderer/emulator.tsx index c9cc789..eb973e8 100644 --- a/src/renderer/emulator.tsx +++ b/src/renderer/emulator.tsx @@ -21,8 +21,11 @@ import { startProbe } from "./debug-harness"; const PROBE = process.env.WIN95_PROBE === "1"; const PROBE_OPTS: Record = (() => { - try { return JSON.parse(process.env.WIN95_PROBE_OPTS || "{}"); } - catch { return {}; } + try { + return JSON.parse(process.env.WIN95_PROBE_OPTS || "{}"); + } catch { + return {}; + } })(); declare let window: Win95Window; @@ -196,6 +199,10 @@ export class Emulator extends React.Component<{}, EmulatorState> { ipcRenderer.on(IPC_COMMANDS.MACHINE_STOP, this.stopEmulator); ipcRenderer.on(IPC_COMMANDS.MACHINE_RESET, this.resetEmulator); ipcRenderer.on(IPC_COMMANDS.MACHINE_START, this.startEmulator); + ipcRenderer.on( + IPC_COMMANDS.MACHINE_BOOT_FROM_SCRATCH, + this.bootFromScratch, + ); ipcRenderer.on(IPC_COMMANDS.MACHINE_RESTART, this.restartEmulator); ipcRenderer.on(IPC_COMMANDS.TOGGLE_INFO, () => {