1
0

selector lamps

This commit is contained in:
Aiden
2026-05-28 10:12:08 +10:00
parent 4364d0ed48
commit 4ebbb963bd
7 changed files with 604 additions and 149 deletions

View File

@@ -858,6 +858,31 @@
"value": 8192, "value": 8192,
"value_hex": "0x2000" "value_hex": "0x2000"
}, },
{
"cmd0_frame": "00 01 13 10 20 78",
"value": 4128,
"value_hex": "0x1020"
},
{
"cmd0_frame": "00 01 13 40 40 48",
"value": 16448,
"value_hex": "0x4040"
},
{
"cmd0_frame": "00 01 13 80 40 88",
"value": 32832,
"value_hex": "0x8040"
},
{
"cmd0_frame": "00 01 13 00 20 68",
"value": 32,
"value_hex": "0x0020"
},
{
"cmd0_frame": "00 01 13 00 40 08",
"value": 64,
"value_hex": "0x0040"
},
{ {
"cmd0_frame": "00 01 13 00 00 48", "cmd0_frame": "00 01 13 00 00 48",
"value": 0, "value": 0,
@@ -1066,6 +1091,75 @@
"current_value_table_candidate" "current_value_table_candidate"
] ]
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 6B 00 00 30",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 107,
"dispatch_index_hex": "0x06B",
"entry_address_hex": "H'297C",
"selector": 107,
"selector_hex": "0x06B",
"target": 12146,
"target_hex": "H'2F72",
"target_label_or_hex": "H'2F72"
},
"name": "standard_lamp_lane",
"reasons": [
"when F731.7 is set, command 5 on this selector clears F731.7/F790.7",
"Bench-visible STANDARD lamp lane found from ROM-derived F6D4.6 handler candidate.",
"selector dispatches to H'2F72"
],
"score": 11,
"seed_frames": [
{
"cmd0_frame": "00 00 6B 80 00 B1",
"value": 32768,
"value_hex": "0x8000"
}
],
"selector": 107,
"selector_hex": "0x06B",
"tables": []
},
{
"accesses": [],
"cmd1_read_frame": "01 00 15 00 00 4E",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 21,
"dispatch_index_hex": "0x015",
"entry_address_hex": "H'28D0",
"selector": 21,
"selector_hex": "0x015",
"target": 11833,
"target_hex": "H'2E39",
"target_label_or_hex": "H'2E39"
},
"name": "call_and_red_tally_lamp_lane",
"reasons": [
"observed RCP autonomous report frame(s): 00 00 15 80 00 CF, 00 00 15 00 00 4F",
"Bench-visible CALL lamp and red tally lane; local CALL handler mirrors F6DB.5 into E800[0x0015].15.",
"selector dispatches to H'2E39"
],
"score": 9,
"seed_frames": [
{
"cmd0_frame": "00 00 15 80 00 CF",
"value": 32768,
"value_hex": "0x8000"
},
{
"cmd0_frame": "00 00 15 00 00 4F",
"value": 0,
"value_hex": "0x0000"
}
],
"selector": 21,
"selector_hex": "0x015",
"tables": []
},
{ {
"accesses": [ "accesses": [
{ {
@@ -1146,31 +1240,6 @@
"current_value_table_candidate" "current_value_table_candidate"
] ]
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 6B 00 00 30",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 107,
"dispatch_index_hex": "0x06B",
"entry_address_hex": "H'297C",
"selector": 107,
"selector_hex": "0x06B",
"target": 12146,
"target_hex": "H'2F72",
"target_label_or_hex": "H'2F72"
},
"name": "connection_latch_clear_candidate",
"reasons": [
"when F731.7 is set, command 5 on this selector clears F731.7/F790.7",
"selector dispatches to H'2F72"
],
"score": 7,
"seed_frames": [],
"selector": 107,
"selector_hex": "0x06B",
"tables": []
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 6C 00 00 37", "cmd1_read_frame": "01 00 6C 00 00 37",
@@ -1221,6 +1290,36 @@
"selector_hex": "0x06D", "selector_hex": "0x06D",
"tables": [] "tables": []
}, },
{
"accesses": [
{
"access": "read",
"address_hex": "H'17A7",
"function": "loc_1795",
"instruction": "BTST.W #15, @H'E220",
"table": "primary_value_table_candidate"
}
],
"cmd1_read_frame": "01 01 90 00 00 CA",
"name": "knee_auto_lamp_or_page_status_lane",
"reasons": [
"primary_value_table_candidate read in loc_1795: BTST.W #15, @H'E220",
"Bench-visible KNEE AUTO source; ROM notes indicate timed KNEE/detail page interaction."
],
"score": 7,
"seed_frames": [
{
"cmd0_frame": "00 01 90 80 00 4B",
"value": 32768,
"value_hex": "0x8000"
}
],
"selector": 272,
"selector_hex": "0x110",
"tables": [
"primary_value_table_candidate"
]
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 13 00 00 48", "cmd1_read_frame": "01 00 13 00 00 48",
@@ -1264,6 +1363,93 @@
"selector_hex": "0x013", "selector_hex": "0x013",
"tables": [] "tables": []
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 17 00 00 4C",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 23,
"dispatch_index_hex": "0x017",
"entry_address_hex": "H'28D4",
"selector": 23,
"selector_hex": "0x017",
"target": 11909,
"target_hex": "H'2E85",
"target_label_or_hex": "H'2E85"
},
"name": "bars_lamp_lane",
"reasons": [
"Bench-visible BARS lamp/latch lane; low writes do not reliably clear the visible latch.",
"selector dispatches to H'2E85"
],
"score": 6,
"seed_frames": [
{
"cmd0_frame": "00 00 17 80 00 CD",
"value": 32768,
"value_hex": "0x8000"
},
{
"cmd0_frame": "00 00 17 40 00 0D",
"value": 16384,
"value_hex": "0x4000"
},
{
"cmd0_frame": "00 00 17 00 00 4D",
"value": 0,
"value_hex": "0x0000"
}
],
"selector": 23,
"selector_hex": "0x017",
"tables": []
},
{
"accesses": [],
"cmd1_read_frame": "01 00 1A 00 00 41",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 26,
"dispatch_index_hex": "0x01A",
"entry_address_hex": "H'28DA",
"selector": 26,
"selector_hex": "0x01A",
"target": 11972,
"target_hex": "H'2EC4",
"target_label_or_hex": "H'2EC4"
},
"name": "monitor_selector_lamps",
"reasons": [
"Bench-visible MONITOR selector cluster found from ROM-derived button-output sweep.",
"selector dispatches to H'2EC4"
],
"score": 6,
"seed_frames": [
{
"cmd0_frame": "00 00 1A 08 08 40",
"value": 2056,
"value_hex": "0x0808"
},
{
"cmd0_frame": "00 00 1A 20 20 40",
"value": 8224,
"value_hex": "0x2020"
},
{
"cmd0_frame": "00 00 1A 40 40 40",
"value": 16448,
"value_hex": "0x4040"
},
{
"cmd0_frame": "00 00 1A 80 80 40",
"value": 32896,
"value_hex": "0x8080"
}
],
"selector": 26,
"selector_hex": "0x01A",
"tables": []
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 24 00 00 7F", "cmd1_read_frame": "01 00 24 00 00 7F",
@@ -1325,31 +1511,6 @@
"selector_hex": "0x007", "selector_hex": "0x007",
"tables": [] "tables": []
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 15 00 00 4E",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 21,
"dispatch_index_hex": "0x015",
"entry_address_hex": "H'28D0",
"selector": 21,
"selector_hex": "0x015",
"target": 11833,
"target_hex": "H'2E39",
"target_label_or_hex": "H'2E39"
},
"name": "call_button_report_candidate",
"reasons": [
"observed RCP autonomous report frame(s): 00 00 15 80 00 CF, 00 00 15 00 00 4F",
"selector dispatches to H'2E39"
],
"score": 5,
"seed_frames": [],
"selector": 21,
"selector_hex": "0x015",
"tables": []
},
{ {
"accesses": [ "accesses": [
{ {
@@ -1493,6 +1654,21 @@
"value": 32768, "value": 32768,
"value_hex": "0x8000" "value_hex": "0x8000"
}, },
{
"cmd0_frame": "00 01 03 40 00 18",
"value": 16384,
"value_hex": "0x4000"
},
{
"cmd0_frame": "00 01 03 20 00 78",
"value": 8192,
"value_hex": "0x2000"
},
{
"cmd0_frame": "00 01 03 00 04 5C",
"value": 4,
"value_hex": "0x0004"
},
{ {
"cmd0_frame": "00 01 03 00 00 58", "cmd0_frame": "00 01 03 00 00 58",
"value": 0, "value": 0,
@@ -1503,6 +1679,40 @@
"selector_hex": "0x083", "selector_hex": "0x083",
"tables": [] "tables": []
}, },
{
"accesses": [],
"cmd1_read_frame": "01 01 0F 00 00 55",
"name": "shutter_display_status_lane",
"reasons": [
"Bench-visible shutter/status display lane; local F6D0.6/F6D0.7 handlers also queue this selector."
],
"score": 4,
"seed_frames": [
{
"cmd0_frame": "00 01 0F 80 00 D4",
"value": 32768,
"value_hex": "0x8000"
},
{
"cmd0_frame": "00 01 0F 20 00 74",
"value": 8192,
"value_hex": "0x2000"
},
{
"cmd0_frame": "00 01 0F 08 00 5C",
"value": 2048,
"value_hex": "0x0800"
},
{
"cmd0_frame": "00 01 0F 10 00 44",
"value": 4096,
"value_hex": "0x1000"
}
],
"selector": 143,
"selector_hex": "0x08F",
"tables": []
},
{ {
"accesses": [ "accesses": [
{ {
@@ -1595,29 +1805,6 @@
"primary_value_table_candidate" "primary_value_table_candidate"
] ]
}, },
{
"accesses": [
{
"access": "read",
"address_hex": "H'17A7",
"function": "loc_1795",
"instruction": "BTST.W #15, @H'E220",
"table": "primary_value_table_candidate"
}
],
"cmd1_read_frame": "01 01 90 00 00 CA",
"name": "state_selector_candidate",
"reasons": [
"primary_value_table_candidate read in loc_1795: BTST.W #15, @H'E220"
],
"score": 3,
"seed_frames": [],
"selector": 272,
"selector_hex": "0x110",
"tables": [
"primary_value_table_candidate"
]
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 12 00 00 49", "cmd1_read_frame": "01 00 12 00 00 49",
@@ -1666,30 +1853,6 @@
"selector_hex": "0x016", "selector_hex": "0x016",
"tables": [] "tables": []
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 17 00 00 4C",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 23,
"dispatch_index_hex": "0x017",
"entry_address_hex": "H'28D4",
"selector": 23,
"selector_hex": "0x017",
"target": 11909,
"target_hex": "H'2E85",
"target_label_or_hex": "H'2E85"
},
"name": "state_selector_candidate",
"reasons": [
"selector dispatches to H'2E85"
],
"score": 2,
"seed_frames": [],
"selector": 23,
"selector_hex": "0x017",
"tables": []
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 18 00 00 43", "cmd1_read_frame": "01 00 18 00 00 43",
@@ -1714,30 +1877,6 @@
"selector_hex": "0x018", "selector_hex": "0x018",
"tables": [] "tables": []
}, },
{
"accesses": [],
"cmd1_read_frame": "01 00 1A 00 00 41",
"dispatch_target": {
"decoded_code": false,
"dispatch_index": 26,
"dispatch_index_hex": "0x01A",
"entry_address_hex": "H'28DA",
"selector": 26,
"selector_hex": "0x01A",
"target": 11972,
"target_hex": "H'2EC4",
"target_label_or_hex": "H'2EC4"
},
"name": "state_selector_candidate",
"reasons": [
"selector dispatches to H'2EC4"
],
"score": 2,
"seed_frames": [],
"selector": 26,
"selector_hex": "0x01A",
"tables": []
},
{ {
"accesses": [], "accesses": [],
"cmd1_read_frame": "01 00 25 00 00 7E", "cmd1_read_frame": "01 00 25 00 00 7E",
@@ -2004,7 +2143,7 @@
} }
], ],
"summary": { "summary": {
"candidate_count": 43, "candidate_count": 44,
"confidence": "medium", "confidence": "medium",
"core_model": "The RCP likely waits for the CCU to seed mirrored state tables, then uses those selector values to update LCD text, panel lamps, and report state changes." "core_model": "The RCP likely waits for the CCU to seed mirrored state tables, then uses those selector values to update LCD text, panel lamps, and report state changes."
}, },

View File

@@ -43,6 +43,18 @@ Highest-Value Selector Candidates:
- ROM default table writes E000/E800 selector 0x040 to 0xFFFF and bench tests repeatedly touched the 0x40 family - ROM default table writes E000/E800 selector 0x040 to 0xFFFF and bench tests repeatedly touched the 0x40 family
seed frames: 0xFFFF -> 00 00 40 FF FF 1A; 0x4030 -> 00 00 40 40 30 6A seed frames: 0xFFFF -> 00 00 40 FF FF 1A; 0x4030 -> 00 00 40 40 30 6A
readback frame: 01 00 40 00 00 1B readback frame: 01 00 40 00 00 1B
- 0x06B standard_lamp_lane: score=11 tables=none
- when F731.7 is set, command 5 on this selector clears F731.7/F790.7
- Bench-visible STANDARD lamp lane found from ROM-derived F6D4.6 handler candidate.
- selector dispatches to H'2F72
seed frames: 0x8000 -> 00 00 6B 80 00 B1
readback frame: 01 00 6B 00 00 30
- 0x015 call_and_red_tally_lamp_lane: score=9 tables=none
- observed RCP autonomous report frame(s): 00 00 15 80 00 CF, 00 00 15 00 00 4F
- Bench-visible CALL lamp and red tally lane; local CALL handler mirrors F6DB.5 into E800[0x0015].15.
- selector dispatches to H'2E39
seed frames: 0x8000 -> 00 00 15 80 00 CF; 0x0000 -> 00 00 15 00 00 4F
readback frame: 01 00 15 00 00 4E
- 0x081 state_selector_candidate: score=9 tables=primary_value_table_candidate, current_value_table_candidate - 0x081 state_selector_candidate: score=9 tables=primary_value_table_candidate, current_value_table_candidate
- primary_value_table_candidate read in vec_ad_adi_3D99: MOV:G.W @H'E102, R0 - primary_value_table_candidate read in vec_ad_adi_3D99: MOV:G.W @H'E102, R0
- primary_value_table_candidate read in vec_ad_adi_3D99: CMP:G.W @H'E102, R1 - primary_value_table_candidate read in vec_ad_adi_3D99: CMP:G.W @H'E102, R1
@@ -53,10 +65,6 @@ Highest-Value Selector Candidates:
- primary_value_table_candidate read in loc_2650: CMP:G.W @H'E124, R0 - primary_value_table_candidate read in loc_2650: CMP:G.W @H'E124, R0
- current_value_table_candidate write in loc_2650: MOV:G.W R0, @H'E924 - current_value_table_candidate write in loc_2650: MOV:G.W R0, @H'E924
readback frame: 01 01 12 00 00 48 readback frame: 01 01 12 00 00 48
- 0x06B connection_latch_clear_candidate: score=7 tables=none
- when F731.7 is set, command 5 on this selector clears F731.7/F790.7
- selector dispatches to H'2F72
readback frame: 01 00 6B 00 00 30
- 0x06C command5_be70_candidate: score=7 tables=none - 0x06C command5_be70_candidate: score=7 tables=none
- continuation command 5 calls BE70 for selector 0x006C - continuation command 5 calls BE70 for selector 0x006C
- selector dispatches to H'2FAF - selector dispatches to H'2FAF
@@ -65,6 +73,11 @@ Highest-Value Selector Candidates:
- continuation command 5 calls BE70 for selector 0x006D - continuation command 5 calls BE70 for selector 0x006D
- selector dispatches to H'3015 - selector dispatches to H'3015
readback frame: 01 00 6D 00 00 36 readback frame: 01 00 6D 00 00 36
- 0x110 knee_auto_lamp_or_page_status_lane: score=7 tables=primary_value_table_candidate
- primary_value_table_candidate read in loc_1795: BTST.W #15, @H'E220
- Bench-visible KNEE AUTO source; ROM notes indicate timed KNEE/detail page interaction.
seed frames: 0x8000 -> 00 01 90 80 00 4B
readback frame: 01 01 90 00 00 CA
- 0x013 slave_and_iris_mblack_link_lamps: score=6 tables=none - 0x013 slave_and_iris_mblack_link_lamps: score=6 tables=none
- Selector 0x0013 is a two-bit lamp/status word. ROM dispatch H'2E06 reads current table word H'E826 and fans bit 15 and bit 14 into panel latch RAM. - Selector 0x0013 is a two-bit lamp/status word. ROM dispatch H'2E06 reads current table word H'E826 and fans bit 15 and bit 14 into panel latch RAM.
- 0x8000 SLAVE lamp: sets F791.6 and F713.4 - 0x8000 SLAVE lamp: sets F791.6 and F713.4
@@ -72,6 +85,16 @@ Highest-Value Selector Candidates:
- selector dispatches to H'2E06 - selector dispatches to H'2E06
seed frames: 0x8000 -> 00 00 13 80 00 C9; 0x4000 -> 00 00 13 40 00 09; 0x0000 -> 00 00 13 00 00 49 seed frames: 0x8000 -> 00 00 13 80 00 C9; 0x4000 -> 00 00 13 40 00 09; 0x0000 -> 00 00 13 00 00 49
readback frame: 01 00 13 00 00 48 readback frame: 01 00 13 00 00 48
- 0x017 bars_lamp_lane: score=6 tables=none
- Bench-visible BARS lamp/latch lane; low writes do not reliably clear the visible latch.
- selector dispatches to H'2E85
seed frames: 0x8000 -> 00 00 17 80 00 CD; 0x4000 -> 00 00 17 40 00 0D; 0x0000 -> 00 00 17 00 00 4D
readback frame: 01 00 17 00 00 4C
- 0x01A monitor_selector_lamps: score=6 tables=none
- Bench-visible MONITOR selector cluster found from ROM-derived button-output sweep.
- selector dispatches to H'2EC4
seed frames: 0x0808 -> 00 00 1A 08 08 40; 0x2020 -> 00 00 1A 20 20 40; 0x4040 -> 00 00 1A 40 40 40
readback frame: 01 00 1A 00 00 41
- 0x024 lcd_selector_button_lamp: score=6 tables=none - 0x024 lcd_selector_button_lamp: score=6 tables=none
- Bench-visible LCD selector-button lamp lane. - Bench-visible LCD selector-button lamp lane.
- selector dispatches to H'2F0C - selector dispatches to H'2F0C
@@ -81,10 +104,6 @@ Highest-Value Selector Candidates:
- observed RCP autonomous report frame(s): 00 00 07 80 00 DD - observed RCP autonomous report frame(s): 00 00 07 80 00 DD
- selector dispatches to H'2DC3 - selector dispatches to H'2DC3
readback frame: 01 00 07 00 00 5C readback frame: 01 00 07 00 00 5C
- 0x015 call_button_report_candidate: score=5 tables=none
- observed RCP autonomous report frame(s): 00 00 15 80 00 CF, 00 00 15 00 00 4F
- selector dispatches to H'2E39
readback frame: 01 00 15 00 00 4E
- 0x023 state_selector_candidate: score=5 tables=primary_value_table_candidate - 0x023 state_selector_candidate: score=5 tables=primary_value_table_candidate
- primary_value_table_candidate write in loc_400C: CLR.W @H'E046 - primary_value_table_candidate write in loc_400C: CLR.W @H'E046
- selector dispatches to H'2EE6 - selector dispatches to H'2EE6
@@ -108,16 +127,6 @@ Highest-Value Selector Candidates:
- Bench-visible IRIS seven-segment/display lane. - Bench-visible IRIS seven-segment/display lane.
seed frames: 0x8000 -> 00 01 02 80 00 D9; 0x4000 -> 00 01 02 40 00 19; 0x0000 -> 00 01 02 00 00 59 seed frames: 0x8000 -> 00 01 02 80 00 D9; 0x4000 -> 00 01 02 40 00 19; 0x0000 -> 00 01 02 00 00 59
readback frame: 01 01 02 00 00 58 readback frame: 01 01 02 00 00 58
- 0x083 combined_iris_shutter_master_gain_status_lane: score=4 tables=none
- Bench-visible combined status/readout lane; clear behavior appears latched or copied elsewhere.
seed frames: 0x8000 -> 00 01 03 80 00 D8; 0x0000 -> 00 01 03 00 00 58
readback frame: 01 01 03 00 00 59
- 0x002 state_selector_candidate: score=3 tables=primary_value_table_candidate
- primary_value_table_candidate read in loc_2650: BTST.W #13, @H'E004
readback frame: 01 00 02 00 00 59
- 0x0A7 state_selector_candidate: score=3 tables=primary_value_table_candidate
- primary_value_table_candidate read in loc_1705: BTST.W #15, @H'E14E
readback frame: 01 01 27 00 00 7D
Display Text Hints: Display Text Hints:
- CONNECT: 0 hit(s) - CONNECT: 0 hit(s)

View File

@@ -204,18 +204,26 @@ extern volatile u8 MEM8[0x10000];
* frames: active report 00 00 13 40 00 09; clear report 00 00 13 00 00 49; ACK 05 00 13 00 00 4C; mirror active 00 00 13 40 00 09; mirror clear 00 00 13 00 00 49 * frames: active report 00 00 13 40 00 09; clear report 00 00 13 00 00 49; ACK 05 00 13 00 00 4C; mirror active 00 00 13 40 00 09; mirror clear 00 00 13 00 00 49
* local trigger candidates: provisional_iris_mblack_link_button_toggle_report F006.7 / F6DB.7: When F6DB.7 is asserted and F731 <= 3, the ROM toggles current-table bit 14 at H'E826 based on F791.5, then queues selector 0x0013 through loc_3E54.; H'1FE8/H'1FFB: Adjacent local helpers set or clear current-table bit 15 at H'E826 and queue selector 0x0013. * local trigger candidates: provisional_iris_mblack_link_button_toggle_report F006.7 / F6DB.7: When F6DB.7 is asserted and F731 <= 3, the ROM toggles current-table bit 14 at H'E826 based on F791.5, then queues selector 0x0013 through loc_3E54.; H'1FE8/H'1FFB: Adjacent local helpers set or clear current-table bit 15 at H'E826 and queue selector 0x0013.
* evidence: bench: 00 00 13 80 00 C9 lights far-right SLAVE lamp, bench: 00 00 13 40 00 09 lights IRIS/M.BLACK LINK lamp, ROM: H'2E06-H'2E32 tests H'E826 bits 15/14 and sets/clears F791/F713/F716 latch bits * evidence: bench: 00 00 13 80 00 C9 lights far-right SLAVE lamp, bench: 00 00 13 40 00 09 lights IRIS/M.BLACK LINK lamp, ROM: H'2E06-H'2E32 tests H'E826 bits 15/14 and sets/clears F791/F713/F716 latch bits
* - 0x0015 call_and_red_tally_lamp_lane: Bench-visible CALL lamp and red tally lane; local CALL handler mirrors F6DB.5 into E800[0x0015].15.
* current word: H'E82A; dispatch: handler unknown
* observed values: 0x8000 CALL lamp and red tally on; 0x0000 CALL inactive/clear report
* evidence: bench: 00 00 15 80 00 CF lights CALL and red tally, ROM: H'20A1-H'20BA reads F6DB.5, writes H'E82A, and queues selector 0x0015
* - 0x0017 bars_lamp_lane: Bench-visible BARS lamp/latch lane; low writes do not reliably clear the visible latch.
* current word: H'E82E; dispatch: handler unknown
* observed values: 0x8000 BARS lamp on; 0x4000 BARS lamp/latch on; 0x0000 BARS low write; visible latch may remain
* evidence: bench: 00 00 17 80 00 CD lights BARS, bench: 00 00 17 40 00 0D also lights the BARS latch in neighbor sweep, ROM: H'1EDE can queue selector 0x0017 from F6D4.2
* - 0x001A monitor_selector_lamps: Bench-visible MONITOR selector cluster found from ROM-derived button-output sweep.
* current word: H'E834; dispatch: handler unknown
* observed values: 0x0808 MONITOR ENC lamp; 0x2020 MONITOR B lamp; 0x4040 MONITOR G lamp; 0x8080 MONITOR R lamp
* evidence: bench: 00 00 1A 08 08 40 lights MONITOR ENC, bench: 00 00 1A 20 20 40 lights MONITOR B, bench: 00 00 1A 40 40 40 lights MONITOR G, bench: 00 00 1A 80 80 40 lights MONITOR R, ROM: H'1CB2-H'1D56 writes packed values to H'E834 and queues selector 0x001A
* - 0x0024 lcd_selector_button_lamp: Bench-visible LCD selector-button lamp lane. * - 0x0024 lcd_selector_button_lamp: Bench-visible LCD selector-button lamp lane.
* current word: H'E848; dispatch: dispatch unknown * current word: H'E848; dispatch: dispatch unknown
* observed values: 0x8000 LCD selector-button lamp visible; 0x0000 lamp remained visible at 0.5 s in isolation run * observed values: 0x8000 LCD selector-button lamp visible; 0x0000 lamp remained visible at 0.5 s in isolation run
* - 0x0082 iris_readout_lane: Bench-visible IRIS seven-segment/display lane. * - 0x006B standard_lamp_lane: Bench-visible STANDARD lamp lane found from ROM-derived F6D4.6 handler candidate.
* current word: H'E904; dispatch: dispatch unknown * current word: H'E8D6; dispatch: handler unknown
* observed values: 0x8000 IRIS display OP; 0x4000 IRIS display 1.4; 0x0000 IRIS display blank * observed values: 0x8000 STANDARD lamp on
* - 0x0083 combined_iris_shutter_master_gain_status_lane: Bench-visible combined status/readout lane; clear behavior appears latched or copied elsewhere. * evidence: bench: 00 00 6B 80 00 B1 lights STANDARD, ROM: H'2048 can write H'E8D6=0x8000 and queue selector 0x006B from F6D4.6
* current word: H'E906; dispatch: dispatch unknown * - ... 5 more panel selector annotations
* observed values: 0x8000 IRIS AUTO, SHUTTER OFF, MASTER GAIN -3; 0x0000 same visible state remained at 0.5 s
* - 0x0093 white_balance_black_flare_mode_lane: Bench-visible white-balance and black/flare lamp lane.
* current word: H'E926; dispatch: dispatch unknown
* observed values: 0x8000 BLACK/FLARE MANUAL plus white-balance PRESET; 0x4000 BLACK/FLARE MANUAL plus white-balance AUTO; 0x2000 BLACK/FLARE MANUAL plus white-balance MANUAL; 0x0000 BLACK/FLARE MANUAL plus white-balance MANUAL
* state variable candidates: * state variable candidates:
* - event_queue_read_cursor_candidate H'F9B4: reads 1, writes 2; bits 5 * - event_queue_read_cursor_candidate H'F9B4: reads 1, writes 2; bits 5
* evidence: H'BE78, H'BE95, H'BE99 * evidence: H'BE78, H'BE95, H'BE99
@@ -406,6 +414,42 @@ static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 valu
/* SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06. */ /* SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06. */
} }
break; break;
case 0x0015u:
/* 0x0015 call_and_red_tally_lamp_lane; current word H'E82A; handler unknown. */
if (value == 0x8000u) {
/* CALL lamp and red tally on. */
}
if (value == 0x0000u) {
/* CALL inactive/clear report. */
}
break;
case 0x0017u:
/* 0x0017 bars_lamp_lane; current word H'E82E; handler unknown. */
if (value == 0x8000u) {
/* BARS lamp on. */
}
if (value == 0x4000u) {
/* BARS lamp/latch on. */
}
if (value == 0x0000u) {
/* BARS low write; visible latch may remain. */
}
break;
case 0x001Au:
/* 0x001A monitor_selector_lamps; current word H'E834; handler unknown. */
if (value == 0x0808u) {
/* MONITOR ENC lamp. */
}
if (value == 0x2020u) {
/* MONITOR B lamp. */
}
if (value == 0x4040u) {
/* MONITOR G lamp. */
}
if (value == 0x8080u) {
/* MONITOR R lamp. */
}
break;
case 0x0024u: case 0x0024u:
/* 0x0024 lcd_selector_button_lamp; current word H'E848; dispatch unknown. */ /* 0x0024 lcd_selector_button_lamp; current word H'E848; dispatch unknown. */
if (value == 0x8000u) { if (value == 0x8000u) {
@@ -415,6 +459,12 @@ static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 valu
/* lamp remained visible at 0.5 s in isolation run. */ /* lamp remained visible at 0.5 s in isolation run. */
} }
break; break;
case 0x006Bu:
/* 0x006B standard_lamp_lane; current word H'E8D6; handler unknown. */
if (value == 0x8000u) {
/* STANDARD lamp on. */
}
break;
case 0x0082u: case 0x0082u:
/* 0x0082 iris_readout_lane; current word H'E904; dispatch unknown. */ /* 0x0082 iris_readout_lane; current word H'E904; dispatch unknown. */
if (value == 0x8000u) { if (value == 0x8000u) {
@@ -432,10 +482,34 @@ static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 valu
if (value == 0x8000u) { if (value == 0x8000u) {
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN -3. */ /* IRIS AUTO, SHUTTER OFF, MASTER GAIN -3. */
} }
if (value == 0x4000u) {
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN 0. */
}
if (value == 0x2000u) {
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN 3. */
}
if (value == 0x0004u) {
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN HP. */
}
if (value == 0x0000u) { if (value == 0x0000u) {
/* same visible state remained at 0.5 s. */ /* same visible state remained at 0.5 s. */
} }
break; break;
case 0x008Fu:
/* 0x008F shutter_display_status_lane; current word H'E91E; dispatch unknown. */
if (value == 0x8000u) {
/* IRIS AUTO plus shutter value beginning with 1. */
}
if (value == 0x2000u) {
/* IRIS AUTO plus shutter 00.0. */
}
if (value == 0x0800u) {
/* IRIS AUTO plus shutter EVS. */
}
if (value == 0x1000u) {
/* IRIS AUTO plus shutter OFF. */
}
break;
case 0x0093u: case 0x0093u:
/* 0x0093 white_balance_black_flare_mode_lane; current word H'E926; dispatch unknown. */ /* 0x0093 white_balance_black_flare_mode_lane; current word H'E926; dispatch unknown. */
if (value == 0x8000u) { if (value == 0x8000u) {
@@ -447,10 +521,31 @@ static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 valu
if (value == 0x2000u) { if (value == 0x2000u) {
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */ /* BLACK/FLARE MANUAL plus white-balance MANUAL. */
} }
if (value == 0x1020u) {
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
}
if (value == 0x4040u) {
/* BLACK/FLARE AUTO plus white-balance AUTO. */
}
if (value == 0x8040u) {
/* BLACK/FLARE AUTO plus white-balance PRESET. */
}
if (value == 0x0020u) {
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
}
if (value == 0x0040u) {
/* BLACK/FLARE AUTO plus white-balance MANUAL. */
}
if (value == 0x0000u) { if (value == 0x0000u) {
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */ /* BLACK/FLARE MANUAL plus white-balance MANUAL. */
} }
break; break;
case 0x0110u:
/* 0x0110 knee_auto_lamp_or_page_status_lane; current word H'EA20; dispatch unknown. */
if (value == 0x8000u) {
/* KNEE AUTO lamp/status on. */
}
break;
default: default:
break; break;
} }

View File

@@ -90,6 +90,18 @@ command-0 high-nibble writes in the `0x0008`-`0x001A` pocket, despite the older
broad run that made MASTER flash. Treat that older observation as a real broad run that made MASTER flash. Treat that older observation as a real
bench-visible event but not yet an isolated selector mapping. bench-visible event but not yet an isolated selector mapping.
Later refinement: the ROM-derived fresh-boot output sweep found a clean
STANDARD trigger at `0x006B = 0x8000` (`00 00 6B 80 00 B1`). It also reclassed
the formerly vague `0x001A` pocket as the MONITOR selector cluster:
| Selector/value | Visible effect |
| --- | --- |
| `0x001A = 0x0808` | MONITOR ENC |
| `0x001A = 0x2020` | MONITOR B |
| `0x001A = 0x4040` | MONITOR G |
| `0x001A = 0x8080` | MONITOR R |
| `0x006B = 0x8000` | STANDARD |
### `panel-atlas-big-visual-sweep-0001-017f-highbits` ### `panel-atlas-big-visual-sweep-0001-017f-highbits`
The broad webcam sweep and fresh-boot isolation pass produced these confirmed The broad webcam sweep and fresh-boot isolation pass produced these confirmed

View File

@@ -180,6 +180,59 @@ one command-0 selector/value from the ROM-derived candidate list, and captures a
single webcam image 0.5 s later. It is intentionally slower than a continuous single webcam image 0.5 s later. It is intentionally slower than a continuous
sweep but should avoid most latch/carryover ambiguity. sweep but should avoid most latch/carryover ambiguity.
Run result notes from `captures/panel-atlas-rom-button-output-candidates-v1-webcam-shots/`:
| Case | Frame | Selector/value | Visible result |
| --- | --- | --- | --- |
| 001 | `00 00 13 40 00 09` | `0x0013 = 0x4000` | IRIS/M.BLACK LINK |
| 002 | `00 00 13 80 00 C9` | `0x0013 = 0x8000` | SLAVE |
| 003 | `00 00 15 80 00 CF` | `0x0015 = 0x8000` | CALL and red tally |
| 004 | `00 00 17 80 00 CD` | `0x0017 = 0x8000` | BARS |
| 005 | `00 01 90 80 00 4B` | `0x0110 = 0x8000` | KNEE AUTO |
| 006 | `00 00 1A 08 08 40` | `0x001A = 0x0808` | MONITOR ENC |
| 007 | `00 00 1A 20 20 40` | `0x001A = 0x2020` | MONITOR B |
| 008 | `00 00 1A 40 40 40` | `0x001A = 0x4040` | MONITOR G |
| 009 | `00 00 1A 80 80 40` | `0x001A = 0x8080` | MONITOR R |
| 010 | `00 00 6B 80 00 B1` | `0x006B = 0x8000` | STANDARD |
| 011 | `00 01 03 00 04 5C` | `0x0083 = 0x0004` | IRIS AUTO, SHUTTER OFF, MASTER GAIN HP |
| 012 | `00 01 03 40 00 18` | `0x0083 = 0x4000` | IRIS AUTO, SHUTTER OFF, MASTER GAIN 0 |
| 013 | `00 01 03 20 00 78` | `0x0083 = 0x2000` | IRIS AUTO, SHUTTER OFF, MASTER GAIN 3 |
| 014 | `00 01 0F 80 00 D4` | `0x008F = 0x8000` | IRIS AUTO, SHUTTER begins with `1...` |
| 015 | `00 01 0F 20 00 74` | `0x008F = 0x2000` | IRIS AUTO, SHUTTER `00.0` |
| 016 | `00 01 0F 08 00 5C` | `0x008F = 0x0800` | IRIS AUTO, SHUTTER EVS |
| 017 | `00 01 0F 10 00 44` | `0x008F = 0x1000` | IRIS AUTO, SHUTTER OFF |
| 018 | `00 01 13 10 20 78` | `0x0093 = 0x1020` | BLACK/FLARE MANUAL, white balance MANUAL |
| 019 | `00 01 13 40 40 48` | `0x0093 = 0x4040` | BLACK/FLARE AUTO, white balance AUTO |
| 020 | `00 01 13 80 40 88` | `0x0093 = 0x8040` | BLACK/FLARE AUTO, white balance PRESET |
| 021 | `00 01 13 00 20 68` | `0x0093 = 0x0020` | BLACK/FLARE MANUAL, white balance MANUAL |
| 022 | `00 01 13 00 40 08` | `0x0093 = 0x0040` | BLACK/FLARE AUTO, white balance MANUAL |
| 023 | `00 01 1A 08 00 49` | `0x009A = 0x0800` | no panel change observed |
| 024 | `00 01 37 20 00 4C` | `0x00B7 = 0x2000` | no panel change observed |
The run directory contains 28 candidate photos. The user-supplied ordered notes
covered the first 24, so cases 025-028 still need visual review before assigning
meanings:
| Case | Frame | Selector/value | Candidate |
| --- | --- | --- | --- |
| 025 | `00 01 39 40 00 22` | `0x00B9 = 0x4000` | F6DC.7 handler value candidate |
| 026 | `00 01 44 80 00 9F` | `0x00C4 = 0x8000` | F6D4.0 bundle selector candidate |
| 027 | `00 01 46 80 00 9D` | `0x00C6 = 0x8000` | F6D4.0 bundle selector candidate |
| 028 | `00 01 78 80 00 A3` | `0x00F8 = 0x8000` | F6D4.1 handler candidate |
Key refinements from this run:
- `0x001A` is now best labeled as the MONITOR selector cluster: `ENC`, `B`, `G`,
and `R` appeared cleanly from the four packed values.
- `0x006B = 0x8000` is the first clean STANDARD lamp trigger.
- `0x0083` is a MASTER GAIN/status display word, with values observed for `HP`,
`0`, and `3`, while also lighting IRIS AUTO and showing SHUTTER OFF.
- `0x008F` carries local shutter display/value states beyond the earlier
EVS/OFF bits.
- `0x0093` now has stronger white-balance plus BLACK/FLARE field mapping:
high/mid bit combinations select WB AUTO/PRESET/MANUAL and BLACK/FLARE
AUTO/MANUAL together.
## Broad Visual Sweep Workflow ## Broad Visual Sweep Workflow
For exploratory lamp/readout mining, use the generated big sweep rather than For exploratory lamp/readout mining, use the generated big sweep rather than

View File

@@ -105,6 +105,73 @@ PANEL_SELECTOR_SEMANTICS: tuple[JsonObject, ...] = (
{"value": 0x0000, "value_hex": "0x0000", "meaning": "SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06", "confidence": "high"}, {"value": 0x0000, "value_hex": "0x0000", "meaning": "SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06", "confidence": "high"},
], ],
}, },
{
"selector": 0x0015,
"selector_hex": "0x0015",
"name": "call_and_red_tally_lamp_lane",
"summary": "Bench-visible CALL lamp and red tally lane; local CALL handler mirrors F6DB.5 into E800[0x0015].15.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x0015 * 2,
"primary_word_address_hex": "H'E02A",
"current_word_address": CURRENT_TABLE_BASE + 0x0015 * 2,
"current_word_address_hex": "H'E82A",
"dispatch_handler": "handler unknown",
"confidence": "bench-high",
"evidence": [
"bench: 00 00 15 80 00 CF lights CALL and red tally",
"ROM: H'20A1-H'20BA reads F6DB.5, writes H'E82A, and queues selector 0x0015",
],
"value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "CALL lamp and red tally on", "confidence": "bench-high"},
{"value": 0x0000, "value_hex": "0x0000", "meaning": "CALL inactive/clear report", "confidence": "bench-high"},
],
},
{
"selector": 0x0017,
"selector_hex": "0x0017",
"name": "bars_lamp_lane",
"summary": "Bench-visible BARS lamp/latch lane; low writes do not reliably clear the visible latch.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x0017 * 2,
"primary_word_address_hex": "H'E02E",
"current_word_address": CURRENT_TABLE_BASE + 0x0017 * 2,
"current_word_address_hex": "H'E82E",
"dispatch_handler": "handler unknown",
"confidence": "bench-high",
"evidence": [
"bench: 00 00 17 80 00 CD lights BARS",
"bench: 00 00 17 40 00 0D also lights the BARS latch in neighbor sweep",
"ROM: H'1EDE can queue selector 0x0017 from F6D4.2",
],
"value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "BARS lamp on", "confidence": "bench-high"},
{"value": 0x4000, "value_hex": "0x4000", "meaning": "BARS lamp/latch on", "confidence": "bench-medium-high"},
{"value": 0x0000, "value_hex": "0x0000", "meaning": "BARS low write; visible latch may remain", "confidence": "bench-medium"},
],
},
{
"selector": 0x001A,
"selector_hex": "0x001A",
"name": "monitor_selector_lamps",
"summary": "Bench-visible MONITOR selector cluster found from ROM-derived button-output sweep.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x001A * 2,
"primary_word_address_hex": "H'E034",
"current_word_address": CURRENT_TABLE_BASE + 0x001A * 2,
"current_word_address_hex": "H'E834",
"dispatch_handler": "handler unknown",
"confidence": "bench-high",
"evidence": [
"bench: 00 00 1A 08 08 40 lights MONITOR ENC",
"bench: 00 00 1A 20 20 40 lights MONITOR B",
"bench: 00 00 1A 40 40 40 lights MONITOR G",
"bench: 00 00 1A 80 80 40 lights MONITOR R",
"ROM: H'1CB2-H'1D56 writes packed values to H'E834 and queues selector 0x001A",
],
"value_meanings": [
{"value": 0x0808, "value_hex": "0x0808", "meaning": "MONITOR ENC lamp", "confidence": "bench-high"},
{"value": 0x2020, "value_hex": "0x2020", "meaning": "MONITOR B lamp", "confidence": "bench-high"},
{"value": 0x4040, "value_hex": "0x4040", "meaning": "MONITOR G lamp", "confidence": "bench-high"},
{"value": 0x8080, "value_hex": "0x8080", "meaning": "MONITOR R lamp", "confidence": "bench-high"},
],
},
{ {
"selector": 0x0024, "selector": 0x0024,
"selector_hex": "0x0024", "selector_hex": "0x0024",
@@ -120,6 +187,25 @@ PANEL_SELECTOR_SEMANTICS: tuple[JsonObject, ...] = (
{"value": 0x0000, "value_hex": "0x0000", "meaning": "lamp remained visible at 0.5 s in isolation run", "confidence": "bench-low"}, {"value": 0x0000, "value_hex": "0x0000", "meaning": "lamp remained visible at 0.5 s in isolation run", "confidence": "bench-low"},
], ],
}, },
{
"selector": 0x006B,
"selector_hex": "0x006B",
"name": "standard_lamp_lane",
"summary": "Bench-visible STANDARD lamp lane found from ROM-derived F6D4.6 handler candidate.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x006B * 2,
"primary_word_address_hex": "H'E0D6",
"current_word_address": CURRENT_TABLE_BASE + 0x006B * 2,
"current_word_address_hex": "H'E8D6",
"dispatch_handler": "handler unknown",
"confidence": "bench-high",
"evidence": [
"bench: 00 00 6B 80 00 B1 lights STANDARD",
"ROM: H'2048 can write H'E8D6=0x8000 and queue selector 0x006B from F6D4.6",
],
"value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "STANDARD lamp on", "confidence": "bench-high"},
],
},
{ {
"selector": 0x0082, "selector": 0x0082,
"selector_hex": "0x0082", "selector_hex": "0x0082",
@@ -148,9 +234,36 @@ PANEL_SELECTOR_SEMANTICS: tuple[JsonObject, ...] = (
"confidence": "bench-medium-high", "confidence": "bench-medium-high",
"value_meanings": [ "value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "IRIS AUTO, SHUTTER OFF, MASTER GAIN -3", "confidence": "bench-medium-high"}, {"value": 0x8000, "value_hex": "0x8000", "meaning": "IRIS AUTO, SHUTTER OFF, MASTER GAIN -3", "confidence": "bench-medium-high"},
{"value": 0x4000, "value_hex": "0x4000", "meaning": "IRIS AUTO, SHUTTER OFF, MASTER GAIN 0", "confidence": "bench-high"},
{"value": 0x2000, "value_hex": "0x2000", "meaning": "IRIS AUTO, SHUTTER OFF, MASTER GAIN 3", "confidence": "bench-high"},
{"value": 0x0004, "value_hex": "0x0004", "meaning": "IRIS AUTO, SHUTTER OFF, MASTER GAIN HP", "confidence": "bench-high"},
{"value": 0x0000, "value_hex": "0x0000", "meaning": "same visible state remained at 0.5 s", "confidence": "bench-low"}, {"value": 0x0000, "value_hex": "0x0000", "meaning": "same visible state remained at 0.5 s", "confidence": "bench-low"},
], ],
}, },
{
"selector": 0x008F,
"selector_hex": "0x008F",
"name": "shutter_display_status_lane",
"summary": "Bench-visible shutter/status display lane; local F6D0.6/F6D0.7 handlers also queue this selector.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x008F * 2,
"primary_word_address_hex": "H'E11E",
"current_word_address": CURRENT_TABLE_BASE + 0x008F * 2,
"current_word_address_hex": "H'E91E",
"confidence": "bench-high",
"evidence": [
"bench: 00 01 0F 80 00 D4 shows IRIS AUTO and shutter value beginning with 1",
"bench: 00 01 0F 20 00 74 shows IRIS AUTO and shutter 00.0",
"bench: 00 01 0F 08 00 5C shows IRIS AUTO and shutter EVS",
"bench: 00 01 0F 10 00 44 shows IRIS AUTO and shutter OFF",
"ROM: H'24E8/H'252E write H'E91E and queue selector 0x008F from F6D0.7/F6D0.6",
],
"value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "IRIS AUTO plus shutter value beginning with 1", "confidence": "bench-medium-high"},
{"value": 0x2000, "value_hex": "0x2000", "meaning": "IRIS AUTO plus shutter 00.0", "confidence": "bench-high"},
{"value": 0x0800, "value_hex": "0x0800", "meaning": "IRIS AUTO plus shutter EVS", "confidence": "bench-high"},
{"value": 0x1000, "value_hex": "0x1000", "meaning": "IRIS AUTO plus shutter OFF", "confidence": "bench-high"},
],
},
{ {
"selector": 0x0093, "selector": 0x0093,
"selector_hex": "0x0093", "selector_hex": "0x0093",
@@ -165,9 +278,32 @@ PANEL_SELECTOR_SEMANTICS: tuple[JsonObject, ...] = (
{"value": 0x8000, "value_hex": "0x8000", "meaning": "BLACK/FLARE MANUAL plus white-balance PRESET", "confidence": "bench-high"}, {"value": 0x8000, "value_hex": "0x8000", "meaning": "BLACK/FLARE MANUAL plus white-balance PRESET", "confidence": "bench-high"},
{"value": 0x4000, "value_hex": "0x4000", "meaning": "BLACK/FLARE MANUAL plus white-balance AUTO", "confidence": "bench-high"}, {"value": 0x4000, "value_hex": "0x4000", "meaning": "BLACK/FLARE MANUAL plus white-balance AUTO", "confidence": "bench-high"},
{"value": 0x2000, "value_hex": "0x2000", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"}, {"value": 0x2000, "value_hex": "0x2000", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"},
{"value": 0x1020, "value_hex": "0x1020", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"},
{"value": 0x4040, "value_hex": "0x4040", "meaning": "BLACK/FLARE AUTO plus white-balance AUTO", "confidence": "bench-high"},
{"value": 0x8040, "value_hex": "0x8040", "meaning": "BLACK/FLARE AUTO plus white-balance PRESET", "confidence": "bench-high"},
{"value": 0x0020, "value_hex": "0x0020", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"},
{"value": 0x0040, "value_hex": "0x0040", "meaning": "BLACK/FLARE AUTO plus white-balance MANUAL", "confidence": "bench-high"},
{"value": 0x0000, "value_hex": "0x0000", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"}, {"value": 0x0000, "value_hex": "0x0000", "meaning": "BLACK/FLARE MANUAL plus white-balance MANUAL", "confidence": "bench-high"},
], ],
}, },
{
"selector": 0x0110,
"selector_hex": "0x0110",
"name": "knee_auto_lamp_or_page_status_lane",
"summary": "Bench-visible KNEE AUTO source; ROM notes indicate timed KNEE/detail page interaction.",
"primary_word_address": PRIMARY_TABLE_BASE + 0x0110 * 2,
"primary_word_address_hex": "H'E220",
"current_word_address": CURRENT_TABLE_BASE + 0x0110 * 2,
"current_word_address_hex": "H'EA20",
"confidence": "bench-high",
"evidence": [
"bench: 00 01 90 80 00 4B lights KNEE AUTO",
"ROM: KNEE notes identify E000[0x0110].15 as a strong KNEE AUTO/timed display source",
],
"value_meanings": [
{"value": 0x8000, "value_hex": "0x8000", "meaning": "KNEE AUTO lamp/status on", "confidence": "bench-high"},
],
},
) )

View File

@@ -53,6 +53,17 @@ class PanelSelectorSemanticsTest(unittest.TestCase):
self.assertEqual(state_machine["active_mirror_frame"], "00 00 13 40 00 09") self.assertEqual(state_machine["active_mirror_frame"], "00 00 13 40 00 09")
self.assertEqual(state_machine["clear_mirror_frame"], "00 00 13 00 00 49") self.assertEqual(state_machine["clear_mirror_frame"], "00 00 13 00 00 49")
def test_rom_button_output_sweep_meanings_are_available(self):
monitor_text = " ".join(describe_selector_value(0x001A, 0x4040))
standard_text = " ".join(describe_selector_value(0x006B, 0x8000))
shutter_text = " ".join(describe_selector_value(0x008F, 0x2000))
white_balance_text = " ".join(describe_selector_value(0x0093, 0x8040))
self.assertIn("MONITOR G", monitor_text)
self.assertIn("STANDARD", standard_text)
self.assertIn("shutter 00.0", shutter_text)
self.assertIn("white-balance PRESET", white_balance_text)
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()