Say how to launch an app, and record how the way in was found

F then 7 opens the F4HWN APPS menu and MENU runs the selected app, which is upstream's own wording in UVStudio's locales/en.js and what App/apps/app_menu.c does (KEY_MENU on an installed row calls APP_LaunchOverlay, which runs until the app exits; EXIT leaves). Verified in the emulator with Tetris.app installed through the page's endpoint: F,7 reads the app region eight times and shows the boxed menu; MENU reads once inside slot 0's code and the game's screen replaces the radio's; DOWN moves the piece and the game is still there two seconds later. The page's own hint now says so.

Worth recording: twenty keys short and long, the whole 79-entry settings menu and the multiboot menu all left the app region untouched -- the multiboot menu reads firmware slots, not apps. The entry point was written down in the flasher's translation file, not in the firmware source: when a feature's way in is missing, the host tool that installs it is the document.
This commit is contained in:
mckero committed 2026-10-01 17:30:35 +08:00
1 parent b855b0b047
commit dbc8fb7661
1 file changed
+2 -1
+2 -1
View File
@@ -979,7 +979,8 @@ def render_index(scale: int) -> str:
<button id="appask" title="ask the running firmware what it sees in each app slot">Ask the radio</button> <button id="appask" title="ask the running firmware what it sees in each app slot">Ask the radio</button>
<span class="hint">the Labs edition's apps live in the same external flash (16 slots <span class="hint">the Labs edition's apps live in the same external flash (16 slots
from 0x102000; the firmware's menu lists the first eight, numbered 1..8). Pick a .app for a slot to from 0x102000; the firmware's menu lists the first eight, numbered 1..8). Pick a .app for a slot to
install it — no serial port and no browser permission are involved</span> install it — no serial port and no browser permission are involved — then press F then 7 on the
radio and MENU to run it</span>
</div> </div>
<table id="apptable"><tbody></tbody></table> <table id="apptable"><tbody></tbody></table>
<div class="screenwrap" id="screenwrap"> <div class="screenwrap" id="screenwrap">