The always-present part of the boot filesystem image: the Unix-shaped directory tree (`/bin`, `/home`, `/home/demo`, `/home/src`), a readme, and the example assembly sources. Compiled binaries (editor, demos, assembler) are appended by [`FullStackApp::build_boot_fs_image`] when available.
()
| 1307 | fn launch_selected_config(&mut self, now: f64, debug: bool) { |
| 1308 | self.launch_selected_config_inner(now, debug, false); |
| 1309 | } |
| 1310 | |
| 1311 | fn launch_selected_config_inner(&mut self, now: f64, debug: bool, allow_reuse: bool) { |
| 1312 | self.save_dirty_before_run(); |
| 1313 | let Some(config) = self.selected_config().cloned() else { |
| 1314 | self.status_message = Some("no run config selected".to_owned()); |
| 1315 | self.terminal.start("Run", "fsc run".to_owned()); |
| 1316 | self.terminal |
| 1317 | .push(ConsoleStream::Error, "No run configuration is selected."); |
| 1318 | self.terminal_open = self.settings.open_terminal_on_run; |
| 1319 | return; |
| 1320 | }; |
| 1321 | let run_target = self |
| 1322 | .config_root(&config) |
| 1323 | .map(|path| path.to_string()) |
| 1324 | .unwrap_or_else(|| config.name.clone()); |
| 1325 | let command = if debug { |
| 1326 | format!("fsc run {run_target} # debug session") |
| 1327 | } else { |
| 1328 | format!("fsc run {run_target}") |
| 1329 | }; |
| 1330 | self.terminal.start("Run", command); |
| 1331 | self.terminal_open = self.settings.open_terminal_on_run; |
| 1332 | |
| 1333 | if let Some(root) = self.config_root(&config) |
| 1334 | && self.workspace.open_document(root).is_ok() |
| 1335 | { |
| 1336 | self.reset_layer_for_active_file(); |
| 1337 | } |
| 1338 | self.refresh_build_target(); |
| 1339 | self.refresh_stage_cache(); |
| 1340 | |
| 1341 | self.live = None; |
| 1342 | self.vm_result = None; |
| 1343 | self.machine_texture = None; |
| 1344 | self.machine_texture_fill_count = None; |
| 1345 | self.reset_machine_views(); |
| 1346 | if allow_reuse |
| 1347 | && self.settings.restart_reuses_build |
| 1348 | && self.try_relaunch_cached(&config, now, debug) |
| 1349 | { |
| 1350 | return; |
| 1351 | } |
| 1352 | self.terminal |
| 1353 | .push(ConsoleStream::Info, "Building run target."); |
| 1354 | let engine = SessionEngine::new(self.workspace.fs()); |
| 1355 | match config.kind { |
| 1356 | // Hosted and freestanding share the launch path; the session |
| 1357 | // constructor picks the bare-metal VM from the config kind. |
| 1358 | RunKind::Hosted | RunKind::Freestanding => match engine.build_config(&config) { |
| 1359 | Ok(build) => { |