8.1 KiB
PT2 Menu State Machine
This is a focused reference for the ROM menu/display selection machinery that drives LCD pages and panel soft-key activity.
Page Dispatch
Primary display selector:
F732holds the current display/page selector.- The high byte of
F732selects a page wrapper through493E. - The low byte is used as a page-local substate/selection, commonly through
F733.
Important dispatcher:
48FAbridges table/report state into LCD page dispatch.493E[page]points at a wrapper.- Wrappers pass a local table pointer to
5FD2.
For COPY status:
F732=H'1903selects page0x19, substate0x03,COPY IN PROGRESS.F732=H'1904selects page0x19, substate0x04,COPY COMPLETED.
For OTHERS:
493E[0x01] -> H'631C.- Local table
H'632Eincludes the OTHERS pages.
Local Entry Selection
loc_5FD2 is the local menu chooser.
Important RAM:
| RAM | Role |
|---|---|
F72C |
visible/selectable entry bitmask |
F72E |
count of visible/selectable entries |
F72F |
cached page high byte |
F733 |
selected local entry index |
FB03.7 |
no-entry/error/display suppression flag |
FB02 |
display/session timer or message timer |
Observed algorithm shape:
- If the page changed, clear
F72C/F72Eand cache the new page inF72F. - Walk the page-local handler table from the last entry down.
- For each handler, read descriptor words immediately before the handler.
- Compare the entry state descriptor against
F731. - If the entry has required selector descriptors, test
E400 + selector*2. - If requirements pass, set the entry bit in
F72Cand incrementF72E. - Clamp or reset
F733so it points at a visible entry. - If no entries are visible, set
FB03.7, setFB02=H'14, clearF72F, and returnR4=H'FFFE.
Practical meaning:
- A page can exist in ROM but be invisible/inactive until the CCU seeds the right
E400feature/status selector. - Command 6 writes the
E400-E7FFsecondary table, but only on the continuation side of the protocol.
OTHERS / COPY TO SLAVES Gates
OTHERS page map:
| Local entry | Handler | Visible text | Required secondary selector |
|---|---|---|---|
| 1 | H'6FF0 |
OTHERS / COPY TO SLAVES |
E400[0x0015] != 0 |
| 2 | H'70F6 |
OTHERS / CAM ID SET |
E400[0x0043] != 0 |
| 3 | H'7188 |
OTHERS / CAM ID IND |
E400[0x0037] != 0 |
| 4 | H'7258 |
OTHERS / CAM BARS |
E400[0x0038] != 0 |
| 5-6 | H'7328/H'73D8 |
marker/percentage pages | E400[0x0027] != 0 |
COPY TO SLAVES local action gate:
- Handler
H'6FF0watchesF770.2. - If
F770.2is clear, it only displays the OTHERS/COPY page. - If
F770.2is set andF791.7is set, it enters the local copy-start branch. - If
F770.2is set andF791.7is clear, it diverts toSET RCP/MASTER.
Root OTHERS soft-key bits:
- Root handler
H'6EE4testsE000[0x008F]atH'E11E. - Bit 11 sets
F711.6. - Bit 12 sets
F711.4.
These bits are not only OTHERS soft-key enables. Bench tests show E000[0x008F] directly changes the shutter seven-segment display and iris AUTO lamp, so treat it as a packed camera/display status selector that also feeds the OTHERS root handler.
Button / Lamp Masks
Important RAM:
| RAM | Role |
|---|---|
F711-F718 |
panel output masks used by external panel chips |
F711.4-F711.7 |
soft-key/menu-related bits seen around OTHERS/COPY |
F726 |
countdown that temporarily preserves some soft-key bits |
F770 |
local panel action/change code |
Relevant ROM behavior:
- Init clears
F711-F717and setsF718=H'FF. 5A7AclearsF711.4-F711.7ifF726 == 0.- The FRT timer path decrements
F726; when it expires, it clearsF713.6andF711.4-F711.7. - The OTHERS/COPY branch sets
F711.7andF726=H'64to keep the local key/display state alive briefly.
Bench Implications
To make the local COPY path available from the panel, the fake CCU probably needs to:
- Recover to a live
CONNECT: OKstyle session. - Seed root OTHERS soft-key bits:
00 01 0F 18 00 4C ; E000[0x008F] bits 11+12
- During a live continuation/report window, seed the COPY page visibility bit:
06 00 15 00 01 48 ; E400[0x0015] nonzero
- Still satisfy the
F791.7local copy-start gate.
The current hardest unknown is step 4: the ROM uses F791.7 in several places, but the source that sets it has not yet been identified.
Bench Observation: OTHERS Gate Probe
Run:
00 00 00 80 00 DA ; recover/seed CONNECT OK
00 01 0F 18 00 4C ; E000[0x008F] = 0x1800
06 00 15 00 01 48 ; E400[0x0015] = 0x0001, sent in active window
Observed on the real panel without touching the controls:
- LCD stayed at
CONNECT: OK. - SHUTTER seven-segment display changed to something like
EUS; manuals make this likelyEVSrendered on a seven-segment display. - Iris AUTO lamp illuminated.
- OTHERS menu did not appear by itself.
Interpretation:
- The sequence reached real UI state, not only serial parser state.
E000[0x008F]=0x1800is now a candidate shutter/mode-status value as well as an OTHERS soft-key source. Treat the earlier "soft-key bits" interpretation as incomplete.E400[0x0015]=0x0001may be the OTHERS/COPY visibility bit, but it may also affect an iris/auto feature path. Isolate before assigning a final meaning.
Recommended isolation probes:
00 01 0F 08 00 5C ; E000[0x008F] bit 11 only
00 01 0F 10 00 44 ; E000[0x008F] bit 12 only
00 01 0F 18 00 4C ; E000[0x008F] bits 11+12
06 00 15 00 00 49 ; E400[0x0015] clear/zero
06 00 15 00 01 48 ; E400[0x0015] low nonzero
06 00 15 80 00 C9 ; E400[0x0015] high nonzero
Scenario files:
scenarios/others-isolate-008f-bit11.jsonscenarios/others-isolate-008f-bit12.jsonscenarios/others-isolate-008f-bits11-12.jsonscenarios/others-isolate-e400-0015-low.jsonscenarios/others-isolate-e400-0015-high.jsonscenarios/others-isolate-008f-then-e400-clear.json
Isolation results:
| Scenario | Visible panel result | Serial result |
|---|---|---|
others-isolate-008f-bit11 |
Iris AUTO lamp on, SHUTTER seven-segment shows observed EUS, likely manual EVS |
04 01 0F 08 00 58, then repeated 02 00 02 00 00 5A |
others-isolate-008f-bit12 |
Iris AUTO lamp on, SHUTTER seven-segment shows literal letters OFF |
04 01 0F 10 00 40, then repeated 02 00 02 00 00 5A |
others-isolate-008f-bits11-12 |
Iris AUTO lamp on, SHUTTER seven-segment shows observed EUS, likely manual EVS |
04 01 0F 18 00 48, then repeated 02 00 02 00 00 5A |
others-isolate-e400-0015-low |
LCD stays CONNECT: OK only |
repeated 01 00 02 00 00 59 after command 6 |
others-isolate-e400-0015-high |
LCD stays CONNECT: OK only |
repeated 01 00 02 00 00 59 after command 6 |
others-isolate-008f-then-e400-clear |
Iris AUTO lamp on, SHUTTER seven-segment shows observed EUS, likely manual EVS |
repeated 01 00 02 00 00 59 after command 6 |
Updated interpretation:
E000[0x008F]directly affects visible shutter/iris UI state.- Bit 11 selects the observed
EUSshutter display, probably manualEVS; bit 12 selects literal shutter-display textOFF; when both are present, the likelyEVSdisplay appears to win. - The iris AUTO lamp turns on for either bit 11 or bit 12, so it may be tied to the same status selector or to the resulting display mode.
E400[0x0015]does not visibly change the panel by itself, even though command 6 does alter the report stream from02 00 02 00 00 5Ato01 00 02 00 00 59.- Keep
E400[0x0015]as a probable OTHERS/COPY visibility/report-gate candidate, but do not assign the shutter/iris effect to it.
Manual correlation:
- The RCP-TX7 operating instructions list
OTHERS (1/6: SHUTTER)with anEVSbutton, and say to use the shutter blockC.SCANorSHUTTER ON/OFFbuttons when not using EVS. - The same RCP-TX7 manual lists
EVS/ECSunder OTHERS for DXC-D30/D30P normal settings. - A later CCU/RCP manual states that when EVS is on,
EVSis displayed; when the shutter switch is off,OFFis displayed. - Therefore
E000[0x008F].11is best labeledshutter_evs_display_or_mode, andE000[0x008F].12is best labeledshutter_off_display_or_modeuntil ROM traces split display-only status from actual camera setting.