updates
This commit is contained in:
@@ -1820,7 +1820,7 @@
|
||||
]
|
||||
},
|
||||
"is_noop": false,
|
||||
"known_report": "0x0013",
|
||||
"known_report": "IRIS/M.BLACK LINK",
|
||||
"shadow": "F6DB",
|
||||
"source": "F006",
|
||||
"table_address": 10180,
|
||||
@@ -2881,6 +2881,38 @@
|
||||
"table_address_hex": "H'274C",
|
||||
"table_offset": 70
|
||||
},
|
||||
{
|
||||
"bank": "IRQ3 A8 panel byte path",
|
||||
"bit": 7,
|
||||
"dirty": "F6F3.3",
|
||||
"dispatcher": "1BF8",
|
||||
"handler": 8206,
|
||||
"handler_hex": "H'200E",
|
||||
"handler_summary": {
|
||||
"instruction_count_scanned": 20,
|
||||
"level_tests": [
|
||||
"F6DB.7"
|
||||
],
|
||||
"report_selectors": [
|
||||
19
|
||||
],
|
||||
"report_selectors_hex": [
|
||||
"0x0013"
|
||||
],
|
||||
"state_writes": [
|
||||
"E826"
|
||||
]
|
||||
},
|
||||
"is_noop": false,
|
||||
"known_report": "IRIS/M.BLACK LINK",
|
||||
"name": "IRIS/M.BLACK LINK",
|
||||
"selector": 19,
|
||||
"shadow": "F6DB",
|
||||
"source": "F006",
|
||||
"table_address": 10180,
|
||||
"table_address_hex": "H'27C4",
|
||||
"table_offset": 190
|
||||
},
|
||||
{
|
||||
"bank": "IRQ3 A8 panel byte path",
|
||||
"bit": 5,
|
||||
|
||||
@@ -15,6 +15,16 @@ The key table is the indirect handler table at `H'2706`, used by `loc_1C0E` afte
|
||||
- Current-level tests: F6D4.3
|
||||
- State writes: E80E
|
||||
|
||||
### IRIS/M.BLACK LINK
|
||||
|
||||
- Emitted selector: `0x0013`
|
||||
- Handler: `H'200E`
|
||||
- Edge source: `F006 -> F6DB` via `F6F3.3`
|
||||
- Trigger bit: `F6DB.7`
|
||||
- Table slot: `H'27C4` -> `H'200E`
|
||||
- Current-level tests: F6DB.7
|
||||
- State writes: E826
|
||||
|
||||
### CALL
|
||||
|
||||
- Emitted selector: `0x0015`
|
||||
|
||||
200
build/rom_0013_button_handler_linear.asm
Normal file
200
build/rom_0013_button_handler_linear.asm
Normal file
@@ -0,0 +1,200 @@
|
||||
; H8/536 ROM disassembly
|
||||
; input: ROM\M27C512@DIP28_1.BIN
|
||||
; bytes: 65536
|
||||
; vector mode: min
|
||||
; analysis: linear sweep
|
||||
;
|
||||
; Notes from the manual:
|
||||
; - H8/536 uses the H8/500 CPU instruction set.
|
||||
; - In minimum mode the reset vector at H'0000-H'0001 is a 16-bit PC.
|
||||
; - The register field is H'FE80-H'FFFF; names below come from appendix B.
|
||||
; - @aa:8 short absolute operands use BR as the upper address byte.
|
||||
; - SCI baud inference uses section 14.2.8 BRR formulas when SMR/BRR are known.
|
||||
; - LCD inference treats E-clock H'F200/H'F201 accesses as status/control and data candidates.
|
||||
|
||||
; Memory Map
|
||||
; H'0000-H'009F exception_vectors vectors
|
||||
; H'00A0-H'00FF dtc_vectors dtc_vectors
|
||||
; H'0100-H'F67F program_or_external program
|
||||
; H'F680-H'FE7F on_chip_ram ram
|
||||
; H'FE80-H'FFFF register_field registers
|
||||
|
||||
; Vectors
|
||||
; H'0000 reset -> vec_reset_1000 (H'1000)
|
||||
; H'0004 invalid_instruction -> vec_reset_1000 (H'1000)
|
||||
; H'0006 zero_divide -> vec_reset_1000 (H'1000)
|
||||
; H'0008 trap_vs -> vec_reset_1000 (H'1000)
|
||||
; H'0010 address_error -> vec_reset_1000 (H'1000)
|
||||
; H'0012 trace -> vec_reset_1000 (H'1000)
|
||||
; H'0016 nmi -> vec_nmi_4393 (H'4393)
|
||||
; H'0020 trapa_0 -> vec_reset_1000 (H'1000)
|
||||
; H'0022 trapa_1 -> vec_reset_1000 (H'1000)
|
||||
; H'0024 trapa_2 -> vec_reset_1000 (H'1000)
|
||||
; H'0026 trapa_3 -> vec_reset_1000 (H'1000)
|
||||
; H'0028 trapa_4 -> vec_reset_1000 (H'1000)
|
||||
; H'002A trapa_5 -> vec_reset_1000 (H'1000)
|
||||
; H'002C trapa_6 -> vec_reset_1000 (H'1000)
|
||||
; H'002E trapa_7 -> vec_reset_1000 (H'1000)
|
||||
; H'0030 trapa_8 -> vec_reset_1000 (H'1000)
|
||||
; H'0032 trapa_9 -> vec_reset_1000 (H'1000)
|
||||
; H'0034 trapa_a -> vec_reset_1000 (H'1000)
|
||||
; H'0036 trapa_b -> vec_reset_1000 (H'1000)
|
||||
; H'0038 trapa_c -> vec_reset_1000 (H'1000)
|
||||
; H'003A trapa_d -> vec_reset_1000 (H'1000)
|
||||
; H'003C trapa_e -> vec_reset_1000 (H'1000)
|
||||
; H'003E trapa_f -> vec_reset_1000 (H'1000)
|
||||
; H'0040 irq0 -> vec_reset_1000 (H'1000)
|
||||
; H'0042 interval_timer -> vec_interval_timer_BFC4 (H'BFC4)
|
||||
; H'0048 irq1 -> vec_reset_1000 (H'1000)
|
||||
; H'0050 irq2 -> vec_reset_1000 (H'1000)
|
||||
; H'0052 irq3 -> vec_irq3_3C30 (H'3C30)
|
||||
; H'0058 irq4 -> vec_irq4_3AC7 (H'3AC7)
|
||||
; H'005A irq5 -> vec_reset_1000 (H'1000)
|
||||
; H'0062 frt1_ocia -> vec_frt1_ocia_BEEA (H'BEEA)
|
||||
; H'006A frt2_ocia -> vec_frt2_ocia_BF23 (H'BF23)
|
||||
; H'0080 sci1_eri -> vec_sci1_eri_BB57 (H'BB57)
|
||||
; H'0082 sci1_rxi -> vec_sci1_rxi_BB67 (H'BB67)
|
||||
; H'0084 sci1_txi -> vec_sci1_txi_BA84 (H'BA84)
|
||||
; H'0090 ad_adi -> vec_ad_adi_3D99 (H'3D99)
|
||||
|
||||
; Symbols
|
||||
; mem_E026 H'E026 program_or_external memory r=4 w=0 width=word
|
||||
; mem_E02A H'E02A program_or_external memory r=1 w=0 width=word
|
||||
; mem_E046 H'E046 program_or_external memory r=0 w=1 width=word
|
||||
; mem_E110 H'E110 program_or_external memory r=1 w=0 width=word
|
||||
; mem_E134 H'E134 program_or_external memory r=1 w=0 width=word
|
||||
; mem_E824 H'E824 program_or_external memory r=0 w=1 width=word
|
||||
; mem_E826 H'E826 program_or_external memory r=0 w=4 width=word
|
||||
; mem_E82A H'E82A program_or_external memory r=0 w=1 width=word
|
||||
; mem_E8D6 H'E8D6 program_or_external memory r=0 w=1 width=word
|
||||
; ram_F6D4 H'F6D4 on_chip_ram ram r=1 w=0 width=byte
|
||||
; ram_F6DB H'F6DB on_chip_ram ram r=3 w=0 width=byte
|
||||
; ram_F713 H'F713 on_chip_ram ram r=2 w=2 width=byte
|
||||
; ram_F726 H'F726 on_chip_ram ram r=0 w=1 width=byte
|
||||
; ram_F730 H'F730 on_chip_ram ram r=1 w=0 width=byte
|
||||
; ram_F731 H'F731 on_chip_ram ram r=5 w=2 width=byte
|
||||
; ram_F732 H'F732 on_chip_ram ram r=0 w=1 width=word
|
||||
; ram_F76A H'F76A on_chip_ram ram r=0 w=1 width=word
|
||||
; ram_F76E H'F76E on_chip_ram ram r=1 w=1 width=byte
|
||||
; ram_F791 H'F791 on_chip_ram ram r=2 w=1 width=byte
|
||||
; ram_F798 H'F798 on_chip_ram ram r=0 w=2 width=byte
|
||||
; ram_FB03 H'FB03 on_chip_ram ram r=1 w=1 width=byte
|
||||
|
||||
; Board Profile
|
||||
; Board trace ties the H8/536 SCI1 pins to a MAX202 RS232 transceiver.
|
||||
; H8 pin 66 P95/TXD (TXD) -> MAX202 pin 11
|
||||
; H8 pin 67 P96/RXD (RXD) -> MAX202 pin 12
|
||||
; SCI2 pin routing is disabled by SYSCR2.P9SCI2E=0 in the observed setup.
|
||||
|
||||
; LCD/Text Scan
|
||||
; search 'CONNECT': not literal, hits=0
|
||||
|
||||
1FC0: F7 13 C5 1D ROTR.B @(H'13C5,R7)
|
||||
1FC4: E8 24 07 80 00 MOV:G.W #H'8000, @(H'24,R0)
|
||||
1FC9: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
1FCB: 5B 40 12 MOV:I.W #H'4012, R3 ; dataflow R3=H'4012
|
||||
1FCE: 1E 1E 83 BSR loc_3E54
|
||||
1FD1: 19 RTS
|
||||
1FD2: 15 F7 91 D7 BCLR.B #7, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
1FD6: 15 F7 13 D5 BCLR.B #5, @H'F713 ; refs ram_F713 in on_chip_ram
|
||||
1FDA: 1D E8 24 06 00 MOV:G.W #H'00, @H'E824 ; refs mem_E824 in program_or_external
|
||||
1FDF: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
1FE1: 5B 40 12 MOV:I.W #H'4012, R3 ; dataflow R3=H'4012
|
||||
1FE4: 1E 1E 6D BSR loc_3E54
|
||||
1FE7: 19 RTS
|
||||
1FE8: 1D E0 26 80 MOV:G.W @H'E026, R0 ; refs mem_E026 in program_or_external
|
||||
1FEC: A8 CF BSET.W #15, R0
|
||||
1FEE: 1D E8 26 90 MOV:G.W R0, @H'E826 ; refs mem_E826 in program_or_external
|
||||
1FF2: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
1FF4: 5B 00 13 MOV:I.W #H'0013, R3 ; dataflow R3=H'0013
|
||||
1FF7: 1E 1E 5A BSR loc_3E54
|
||||
1FFA: 19 RTS
|
||||
1FFB: 1D E0 26 80 MOV:G.W @H'E026, R0 ; refs mem_E026 in program_or_external
|
||||
1FFF: A8 DF BCLR.W #15, R0
|
||||
2001: 1D E8 26 90 MOV:G.W R0, @H'E826 ; refs mem_E826 in program_or_external
|
||||
2005: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
2007: 5B 00 13 MOV:I.W #H'0013, R3 ; dataflow R3=H'0013
|
||||
200A: 1E 1E 47 BSR loc_3E54
|
||||
200D: 19 RTS
|
||||
200E: 15 F6 DB F7 BTST.B #7, @H'F6DB ; refs ram_F6DB in on_chip_ram
|
||||
2012: 27 33 BEQ loc_2047
|
||||
2014: 15 F7 31 04 03 CMP:G.B #H'03, @H'F731 ; refs ram_F731 in on_chip_ram
|
||||
2019: 22 2C BHI loc_2047
|
||||
201B: 15 F7 91 F5 BTST.B #5, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
201F: 26 14 BNE loc_2035
|
||||
2021: 1D E0 26 80 MOV:G.W @H'E026, R0 ; refs mem_E026 in program_or_external
|
||||
2025: A8 CE BSET.W #14, R0
|
||||
2027: 1D E8 26 90 MOV:G.W R0, @H'E826 ; refs mem_E826 in program_or_external
|
||||
202B: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
202D: 5B 00 13 MOV:I.W #H'0013, R3 ; dataflow R3=H'0013
|
||||
2030: 1E 1E 21 BSR loc_3E54
|
||||
2033: 20 12 BRA loc_2047
|
||||
|
||||
loc_2035:
|
||||
2035: 1D E0 26 80 MOV:G.W @H'E026, R0 ; refs mem_E026 in program_or_external
|
||||
2039: A8 DE BCLR.W #14, R0
|
||||
203B: 1D E8 26 90 MOV:G.W R0, @H'E826 ; refs mem_E826 in program_or_external
|
||||
203F: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
2041: 5B 00 13 MOV:I.W #H'0013, R3 ; dataflow R3=H'0013
|
||||
2044: 1E 1E 0D BSR loc_3E54
|
||||
|
||||
loc_2047:
|
||||
2047: 19 RTS
|
||||
2048: 15 F6 D4 F6 BTST.B #6, @H'F6D4 ; refs ram_F6D4 in on_chip_ram
|
||||
204C: 27 52 BEQ loc_20A0
|
||||
204E: 15 F7 31 04 02 CMP:G.B #H'02, @H'F731 ; refs ram_F731 in on_chip_ram
|
||||
2053: 22 4B BHI loc_20A0
|
||||
2055: 15 F7 30 F7 BTST.B #7, @H'F730 ; refs ram_F730 in on_chip_ram
|
||||
2059: 27 19 BEQ loc_2074
|
||||
205B: 1D E8 D6 07 80 00 MOV:G.W #H'8000, @H'E8D6 ; refs mem_E8D6 in program_or_external
|
||||
2061: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
2063: 5B 00 6B MOV:I.W #H'006B, R3 ; dataflow R3=H'006B
|
||||
2066: 1E 1D EB BSR loc_3E54
|
||||
2069: 15 F7 31 C7 BSET.B #7, @H'F731 ; refs ram_F731 in on_chip_ram
|
||||
206D: 15 F7 98 06 C8 MOV:G.B #H'C8, @H'F798 ; refs ram_F798 in on_chip_ram
|
||||
2072: 20 2C BRA loc_20A0
|
||||
|
||||
loc_2074:
|
||||
2074: 1D F7 32 13 CLR.W @H'F732 ; refs ram_F732 in on_chip_ram
|
||||
2078: 15 FB 03 D7 BCLR.B #7, @H'FB03 ; refs ram_FB03 in on_chip_ram
|
||||
207C: 1D E0 46 13 CLR.W @H'E046 ; refs mem_E046 in program_or_external
|
||||
2080: 1D F7 6A 13 CLR.W @H'F76A ; refs ram_F76A in on_chip_ram
|
||||
2084: 1E 28 73 BSR loc_48FA
|
||||
2087: 15 F7 13 C6 BSET.B #6, @H'F713 ; refs ram_F713 in on_chip_ram
|
||||
208B: 15 F7 26 06 1E MOV:G.B #H'1E, @H'F726 ; refs ram_F726 in on_chip_ram
|
||||
2090: 15 F7 6E C6 BSET.B #6, @H'F76E ; refs ram_F76E in on_chip_ram
|
||||
2094: 15 F7 31 C7 BSET.B #7, @H'F731 ; refs ram_F731 in on_chip_ram
|
||||
2098: 15 F7 98 06 C8 MOV:G.B #H'C8, @H'F798 ; refs ram_F798 in on_chip_ram
|
||||
209D: 1E 36 38 BSR loc_56D8
|
||||
|
||||
loc_20A0:
|
||||
20A0: 19 RTS
|
||||
20A1: 1D E0 2A 80 MOV:G.W @H'E02A, R0 ; refs mem_E02A in program_or_external
|
||||
20A5: 15 F6 DB F5 BTST.B #5, @H'F6DB ; refs ram_F6DB in on_chip_ram
|
||||
20A9: 27 04 BEQ loc_20AF
|
||||
20AB: A8 CF BSET.W #15, R0
|
||||
20AD: 20 02 BRA loc_20B1
|
||||
|
||||
loc_20AF:
|
||||
20AF: A8 DF BCLR.W #15, R0
|
||||
|
||||
loc_20B1:
|
||||
20B1: 1D E8 2A 90 MOV:G.W R0, @H'E82A ; refs mem_E82A in program_or_external
|
||||
20B5: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
20B7: 5B 00 15 MOV:I.W #H'0015, R3 ; dataflow R3=H'0015
|
||||
20BA: 1E 1D 97 BSR loc_3E54
|
||||
20BD: 19 RTS
|
||||
20BE: 15 F6 DB F3 BTST.B #3, @H'F6DB ; refs ram_F6DB in on_chip_ram
|
||||
20C2: 27 2C BEQ loc_20F0
|
||||
20C4: 15 F7 31 04 03 CMP:G.B #H'03, @H'F731 ; refs ram_F731 in on_chip_ram
|
||||
20C9: 22 25 BHI loc_20F0
|
||||
20CB: 1D E1 10 16 TST.W @H'E110 ; refs mem_E110 in program_or_external
|
||||
20CF: 27 05 BEQ loc_20D6
|
||||
20D1: 1E 06 14 BSR loc_26E8
|
||||
20D4: 20 1A BRA loc_20F0
|
||||
|
||||
loc_20D6:
|
||||
20D6: 1D E1 34 80 MOV:G.W @H'E134, R0 ; refs mem_E134 in program_or_external
|
||||
20DA: A8 FB BTST.W #11, R0
|
||||
20DC: 27 04 BEQ loc_20E2
|
||||
20DE: A8 DB BCLR.W #11, R0
|
||||
7108
build/rom_0013_button_handler_linear.json
Normal file
7108
build/rom_0013_button_handler_linear.json
Normal file
File diff suppressed because it is too large
Load Diff
135
build/rom_0013_handler_linear.asm
Normal file
135
build/rom_0013_handler_linear.asm
Normal file
@@ -0,0 +1,135 @@
|
||||
; H8/536 ROM disassembly
|
||||
; input: ROM\M27C512@DIP28_1.BIN
|
||||
; bytes: 65536
|
||||
; vector mode: min
|
||||
; analysis: linear sweep
|
||||
;
|
||||
; Notes from the manual:
|
||||
; - H8/536 uses the H8/500 CPU instruction set.
|
||||
; - In minimum mode the reset vector at H'0000-H'0001 is a 16-bit PC.
|
||||
; - The register field is H'FE80-H'FFFF; names below come from appendix B.
|
||||
; - @aa:8 short absolute operands use BR as the upper address byte.
|
||||
; - SCI baud inference uses section 14.2.8 BRR formulas when SMR/BRR are known.
|
||||
; - LCD inference treats E-clock H'F200/H'F201 accesses as status/control and data candidates.
|
||||
|
||||
; Memory Map
|
||||
; H'0000-H'009F exception_vectors vectors
|
||||
; H'00A0-H'00FF dtc_vectors dtc_vectors
|
||||
; H'0100-H'F67F program_or_external program
|
||||
; H'F680-H'FE7F on_chip_ram ram
|
||||
; H'FE80-H'FFFF register_field registers
|
||||
|
||||
; Vectors
|
||||
; H'0000 reset -> vec_reset_1000 (H'1000)
|
||||
; H'0004 invalid_instruction -> vec_reset_1000 (H'1000)
|
||||
; H'0006 zero_divide -> vec_reset_1000 (H'1000)
|
||||
; H'0008 trap_vs -> vec_reset_1000 (H'1000)
|
||||
; H'0010 address_error -> vec_reset_1000 (H'1000)
|
||||
; H'0012 trace -> vec_reset_1000 (H'1000)
|
||||
; H'0016 nmi -> vec_nmi_4393 (H'4393)
|
||||
; H'0020 trapa_0 -> vec_reset_1000 (H'1000)
|
||||
; H'0022 trapa_1 -> vec_reset_1000 (H'1000)
|
||||
; H'0024 trapa_2 -> vec_reset_1000 (H'1000)
|
||||
; H'0026 trapa_3 -> vec_reset_1000 (H'1000)
|
||||
; H'0028 trapa_4 -> vec_reset_1000 (H'1000)
|
||||
; H'002A trapa_5 -> vec_reset_1000 (H'1000)
|
||||
; H'002C trapa_6 -> vec_reset_1000 (H'1000)
|
||||
; H'002E trapa_7 -> vec_reset_1000 (H'1000)
|
||||
; H'0030 trapa_8 -> vec_reset_1000 (H'1000)
|
||||
; H'0032 trapa_9 -> vec_reset_1000 (H'1000)
|
||||
; H'0034 trapa_a -> vec_reset_1000 (H'1000)
|
||||
; H'0036 trapa_b -> vec_reset_1000 (H'1000)
|
||||
; H'0038 trapa_c -> vec_reset_1000 (H'1000)
|
||||
; H'003A trapa_d -> vec_reset_1000 (H'1000)
|
||||
; H'003C trapa_e -> vec_reset_1000 (H'1000)
|
||||
; H'003E trapa_f -> vec_reset_1000 (H'1000)
|
||||
; H'0040 irq0 -> vec_reset_1000 (H'1000)
|
||||
; H'0042 interval_timer -> vec_interval_timer_BFC4 (H'BFC4)
|
||||
; H'0048 irq1 -> vec_reset_1000 (H'1000)
|
||||
; H'0050 irq2 -> vec_reset_1000 (H'1000)
|
||||
; H'0052 irq3 -> vec_irq3_3C30 (H'3C30)
|
||||
; H'0058 irq4 -> vec_irq4_3AC7 (H'3AC7)
|
||||
; H'005A irq5 -> vec_reset_1000 (H'1000)
|
||||
; H'0062 frt1_ocia -> vec_frt1_ocia_BEEA (H'BEEA)
|
||||
; H'006A frt2_ocia -> vec_frt2_ocia_BF23 (H'BF23)
|
||||
; H'0080 sci1_eri -> vec_sci1_eri_BB57 (H'BB57)
|
||||
; H'0082 sci1_rxi -> vec_sci1_rxi_BB67 (H'BB67)
|
||||
; H'0084 sci1_txi -> vec_sci1_txi_BA84 (H'BA84)
|
||||
; H'0090 ad_adi -> vec_ad_adi_3D99 (H'3D99)
|
||||
|
||||
; Symbols
|
||||
; mem_E02E H'E02E program_or_external memory r=1 w=0 width=word
|
||||
; mem_E030 H'E030 program_or_external memory r=1 w=0 width=word
|
||||
; mem_E826 H'E826 program_or_external memory r=2 w=0 width=word
|
||||
; mem_E82E H'E82E program_or_external memory r=0 w=1 width=word
|
||||
; ram_F711 H'F711 on_chip_ram ram r=4 w=4 width=byte
|
||||
; ram_F713 H'F713 on_chip_ram ram r=2 w=2 width=byte
|
||||
; ram_F716 H'F716 on_chip_ram ram r=4 w=4 width=byte
|
||||
; ram_F791 H'F791 on_chip_ram ram r=4 w=4 width=byte
|
||||
|
||||
; Board Profile
|
||||
; Board trace ties the H8/536 SCI1 pins to a MAX202 RS232 transceiver.
|
||||
; H8 pin 66 P95/TXD (TXD) -> MAX202 pin 11
|
||||
; H8 pin 67 P96/RXD (RXD) -> MAX202 pin 12
|
||||
; SCI2 pin routing is disabled by SYSCR2.P9SCI2E=0 in the observed setup.
|
||||
|
||||
; LCD/Text Scan
|
||||
; search 'CONNECT': not literal, hits=0
|
||||
|
||||
2E00: 30 FE A3 BRA loc_2CA6
|
||||
2E03: 30 FE A0 BRA loc_2CA6
|
||||
2E06: 1D E8 26 FF BTST.W #15, @H'E826 ; refs mem_E826 in program_or_external
|
||||
2E0A: 27 0A BEQ loc_2E16
|
||||
2E0C: 15 F7 91 C6 BSET.B #6, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
2E10: 15 F7 13 C4 BSET.B #4, @H'F713 ; refs ram_F713 in on_chip_ram
|
||||
2E14: 20 08 BRA loc_2E1E
|
||||
|
||||
loc_2E16:
|
||||
2E16: 15 F7 91 D6 BCLR.B #6, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
2E1A: 15 F7 13 D4 BCLR.B #4, @H'F713 ; refs ram_F713 in on_chip_ram
|
||||
|
||||
loc_2E1E:
|
||||
2E1E: 1D E8 26 FE BTST.W #14, @H'E826 ; refs mem_E826 in program_or_external
|
||||
2E22: 27 0A BEQ loc_2E2E
|
||||
2E24: 15 F7 91 C5 BSET.B #5, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
2E28: 15 F7 16 C7 BSET.B #7, @H'F716 ; refs ram_F716 in on_chip_ram
|
||||
2E2C: 20 08 BRA loc_2E36
|
||||
|
||||
loc_2E2E:
|
||||
2E2E: 15 F7 91 D5 BCLR.B #5, @H'F791 ; refs ram_F791 in on_chip_ram
|
||||
2E32: 15 F7 16 D7 BCLR.B #7, @H'F716 ; refs ram_F716 in on_chip_ram
|
||||
|
||||
loc_2E36:
|
||||
2E36: 30 FE 6D BRA loc_2CA6
|
||||
2E39: FC E0 00 81 MOV:G.W @(-H'2000,R4), R1
|
||||
2E3D: A9 FF BTST.W #15, R1
|
||||
2E3F: 26 0E BNE loc_2E4F
|
||||
2E41: A9 FE BTST.W #14, R1
|
||||
2E43: 26 0A BNE loc_2E4F
|
||||
2E45: 15 F7 11 D0 BCLR.B #0, @H'F711 ; refs ram_F711 in on_chip_ram
|
||||
2E49: 15 F7 16 D5 BCLR.B #5, @H'F716 ; refs ram_F716 in on_chip_ram
|
||||
2E4D: 20 08 BRA loc_2E57
|
||||
|
||||
loc_2E4F:
|
||||
2E4F: 15 F7 11 C0 BSET.B #0, @H'F711 ; refs ram_F711 in on_chip_ram
|
||||
2E53: 15 F7 16 C5 BSET.B #5, @H'F716 ; refs ram_F716 in on_chip_ram
|
||||
|
||||
loc_2E57:
|
||||
2E57: 30 FE 4C BRA loc_2CA6
|
||||
2E5A: FC E0 00 81 MOV:G.W @(-H'2000,R4), R1
|
||||
2E5E: A9 FF BTST.W #15, R1
|
||||
2E60: 26 06 BNE loc_2E68
|
||||
2E62: 15 F7 11 D1 BCLR.B #1, @H'F711 ; refs ram_F711 in on_chip_ram
|
||||
2E66: 20 04 BRA loc_2E6C
|
||||
|
||||
loc_2E68:
|
||||
2E68: 15 F7 11 C1 BSET.B #1, @H'F711 ; refs ram_F711 in on_chip_ram
|
||||
|
||||
loc_2E6C:
|
||||
2E6C: 30 FE 37 BRA loc_2CA6
|
||||
2E6F: 1D E0 30 81 MOV:G.W @H'E030, R1 ; refs mem_E030 in program_or_external
|
||||
2E73: 1D E0 2E 71 CMP:G.W @H'E02E, R1 ; refs mem_E02E in program_or_external
|
||||
2E77: 27 0C BEQ loc_2E85
|
||||
2E79: 1D E8 2E 91 MOV:G.W R1, @H'E82E ; refs mem_E82E in program_or_external
|
||||
2E7D: 52 80 MOV:E.B #H'80, R2 ; dataflow R2=H'80
|
||||
2E7F: 5B 00 17 MOV:I.W #H'0017, R3 ; dataflow R3=H'0017
|
||||
2590
build/rom_0013_handler_linear.json
Normal file
2590
build/rom_0013_handler_linear.json
Normal file
File diff suppressed because it is too large
Load Diff
38
build/rom_0013_table_xrefs.txt
Normal file
38
build/rom_0013_table_xrefs.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
Table/Index Cross-Reference Report for build\rom_0013_handler_linear.json
|
||||
=========================================================================
|
||||
|
||||
Static offsets are emitted only when an index register value can be derived from nearby immediate loads in the current JSON. Other indexed accesses are dynamic.
|
||||
|
||||
LCD correlation hints
|
||||
term 'CONNECT': no LCD/text candidate hits in current decompile
|
||||
term 'CONNECT: OK': no LCD/text candidate hits in current decompile
|
||||
term 'CONNECT: NOT ACT': no LCD/text candidate hits in current decompile
|
||||
term 'NOT ACT': no LCD/text candidate hits in current decompile
|
||||
term 'COMM LINK': no LCD/text candidate hits in current decompile
|
||||
term 'COMPLETED': no LCD/text candidate hits in current decompile
|
||||
caveat: LCD strings can be builder/script output; absence of a literal term does not disprove runtime composition.
|
||||
|
||||
primary_value_table_candidate H'E000-H'E3FF (negative H'2000; direct H'F900-H'F91F)
|
||||
accesses=4 reads=4 writes=0 dynamic=2
|
||||
static offsets: H'002E, H'0030
|
||||
functions: <no function>:4
|
||||
- H'2E39 read index dynamic via R4 operand @(-H'2000,R4); <no function>; MOV:G.W @(-H'2000,R4), R1
|
||||
- H'2E5A read index dynamic via R4 operand @(-H'2000,R4); <no function>; MOV:G.W @(-H'2000,R4), R1
|
||||
- H'2E6F read offset H'0030 selector 0x018 -> H'E030; <no function>; MOV:G.W @H'E030, R1
|
||||
- H'2E73 read offset H'002E selector 0x017 -> H'E02E; <no function>; CMP:G.W @H'E02E, R1
|
||||
|
||||
secondary_value_table_candidate H'E400-H'E7FF (negative H'1C00; direct H'F940-H'F95F)
|
||||
accesses=0 reads=0 writes=0 dynamic=0
|
||||
no references found in current JSON
|
||||
|
||||
current_value_table_candidate H'E800-H'EBFF (negative H'1800; direct H'F920-H'F93F)
|
||||
accesses=3 reads=2 writes=1 dynamic=0
|
||||
static offsets: H'0026, H'002E
|
||||
functions: <no function>:3
|
||||
- H'2E06 read offset H'0026 selector 0x013 -> H'E826; <no function>; BTST.W #15, @H'E826
|
||||
- H'2E1E read offset H'0026 selector 0x013 -> H'E826; <no function>; BTST.W #14, @H'E826
|
||||
- H'2E79 write offset H'002E selector 0x017 -> H'E82E; <no function>; MOV:G.W R1, @H'E82E
|
||||
|
||||
flag_table_candidate H'EC00-H'EFFF (negative H'1400; direct H'F980-H'F99F)
|
||||
accesses=0 reads=0 writes=0 dynamic=0
|
||||
no references found in current JSON
|
||||
@@ -793,6 +793,83 @@
|
||||
]
|
||||
},
|
||||
"selector_candidates": [
|
||||
{
|
||||
"accesses": [
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'17D0",
|
||||
"function": "loc_17C9",
|
||||
"instruction": "BTST.W #12, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'1802",
|
||||
"function": "loc_17FB",
|
||||
"instruction": "BTST.W #12, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'183A",
|
||||
"function": "loc_182D",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'189E",
|
||||
"function": "loc_1891",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'18F4",
|
||||
"function": "loc_18E7",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
}
|
||||
],
|
||||
"cmd1_read_frame": "01 01 13 00 00 49",
|
||||
"name": "white_balance_black_flare_mode_lane",
|
||||
"reasons": [
|
||||
"primary_value_table_candidate read in loc_17C9: BTST.W #12, @H'E126",
|
||||
"primary_value_table_candidate read in loc_17FB: BTST.W #12, @H'E126",
|
||||
"primary_value_table_candidate read in loc_182D: BTST.W #5, @H'E126",
|
||||
"primary_value_table_candidate read in loc_1891: BTST.W #5, @H'E126",
|
||||
"primary_value_table_candidate read in loc_18E7: BTST.W #5, @H'E126",
|
||||
"Bench-visible white-balance and black/flare lamp lane."
|
||||
],
|
||||
"score": 19,
|
||||
"seed_frames": [
|
||||
{
|
||||
"cmd0_frame": "00 01 13 80 00 C8",
|
||||
"value": 32768,
|
||||
"value_hex": "0x8000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 13 40 00 08",
|
||||
"value": 16384,
|
||||
"value_hex": "0x4000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 13 20 00 68",
|
||||
"value": 8192,
|
||||
"value_hex": "0x2000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 13 00 00 48",
|
||||
"value": 0,
|
||||
"value_hex": "0x0000"
|
||||
}
|
||||
],
|
||||
"selector": 147,
|
||||
"selector_hex": "0x093",
|
||||
"tables": [
|
||||
"primary_value_table_candidate"
|
||||
]
|
||||
},
|
||||
{
|
||||
"accesses": [
|
||||
{
|
||||
@@ -859,61 +936,6 @@
|
||||
"flag_table_candidate"
|
||||
]
|
||||
},
|
||||
{
|
||||
"accesses": [
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'17D0",
|
||||
"function": "loc_17C9",
|
||||
"instruction": "BTST.W #12, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'1802",
|
||||
"function": "loc_17FB",
|
||||
"instruction": "BTST.W #12, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'183A",
|
||||
"function": "loc_182D",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'189E",
|
||||
"function": "loc_1891",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
},
|
||||
{
|
||||
"access": "read",
|
||||
"address_hex": "H'18F4",
|
||||
"function": "loc_18E7",
|
||||
"instruction": "BTST.W #5, @H'E126",
|
||||
"table": "primary_value_table_candidate"
|
||||
}
|
||||
],
|
||||
"cmd1_read_frame": "01 01 13 00 00 49",
|
||||
"name": "state_selector_candidate",
|
||||
"reasons": [
|
||||
"primary_value_table_candidate read in loc_17C9: BTST.W #12, @H'E126",
|
||||
"primary_value_table_candidate read in loc_17FB: BTST.W #12, @H'E126",
|
||||
"primary_value_table_candidate read in loc_182D: BTST.W #5, @H'E126",
|
||||
"primary_value_table_candidate read in loc_1891: BTST.W #5, @H'E126",
|
||||
"primary_value_table_candidate read in loc_18E7: BTST.W #5, @H'E126"
|
||||
],
|
||||
"score": 15,
|
||||
"seed_frames": [],
|
||||
"selector": 147,
|
||||
"selector_hex": "0x093",
|
||||
"tables": [
|
||||
"primary_value_table_candidate"
|
||||
]
|
||||
},
|
||||
{
|
||||
"accesses": [
|
||||
{
|
||||
@@ -1199,6 +1221,85 @@
|
||||
"selector_hex": "0x06D",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 13 00 00 48",
|
||||
"dispatch_target": {
|
||||
"decoded_code": false,
|
||||
"dispatch_index": 19,
|
||||
"dispatch_index_hex": "0x013",
|
||||
"entry_address_hex": "H'28CC",
|
||||
"selector": 19,
|
||||
"selector_hex": "0x013",
|
||||
"target": 11782,
|
||||
"target_hex": "H'2E06",
|
||||
"target_label_or_hex": "H'2E06"
|
||||
},
|
||||
"name": "slave_and_iris_mblack_link_lamps",
|
||||
"reasons": [
|
||||
"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",
|
||||
"0x4000 IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7",
|
||||
"selector dispatches to H'2E06"
|
||||
],
|
||||
"score": 6,
|
||||
"seed_frames": [
|
||||
{
|
||||
"cmd0_frame": "00 00 13 80 00 C9",
|
||||
"value": 32768,
|
||||
"value_hex": "0x8000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 00 13 40 00 09",
|
||||
"value": 16384,
|
||||
"value_hex": "0x4000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 00 13 00 00 49",
|
||||
"value": 0,
|
||||
"value_hex": "0x0000"
|
||||
}
|
||||
],
|
||||
"selector": 19,
|
||||
"selector_hex": "0x013",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 24 00 00 7F",
|
||||
"dispatch_target": {
|
||||
"decoded_code": false,
|
||||
"dispatch_index": 36,
|
||||
"dispatch_index_hex": "0x024",
|
||||
"entry_address_hex": "H'28EE",
|
||||
"selector": 36,
|
||||
"selector_hex": "0x024",
|
||||
"target": 12044,
|
||||
"target_hex": "H'2F0C",
|
||||
"target_label_or_hex": "H'2F0C"
|
||||
},
|
||||
"name": "lcd_selector_button_lamp",
|
||||
"reasons": [
|
||||
"Bench-visible LCD selector-button lamp lane.",
|
||||
"selector dispatches to H'2F0C"
|
||||
],
|
||||
"score": 6,
|
||||
"seed_frames": [
|
||||
{
|
||||
"cmd0_frame": "00 00 24 80 00 FE",
|
||||
"value": 32768,
|
||||
"value_hex": "0x8000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 00 24 00 00 7E",
|
||||
"value": 0,
|
||||
"value_hex": "0x0000"
|
||||
}
|
||||
],
|
||||
"selector": 36,
|
||||
"selector_hex": "0x024",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 07 00 00 5C",
|
||||
@@ -1349,6 +1450,59 @@
|
||||
"selector_hex": "0x0F8",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 01 02 00 00 58",
|
||||
"name": "iris_readout_lane",
|
||||
"reasons": [
|
||||
"Bench-visible IRIS seven-segment/display lane."
|
||||
],
|
||||
"score": 4,
|
||||
"seed_frames": [
|
||||
{
|
||||
"cmd0_frame": "00 01 02 80 00 D9",
|
||||
"value": 32768,
|
||||
"value_hex": "0x8000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 02 40 00 19",
|
||||
"value": 16384,
|
||||
"value_hex": "0x4000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 02 00 00 59",
|
||||
"value": 0,
|
||||
"value_hex": "0x0000"
|
||||
}
|
||||
],
|
||||
"selector": 130,
|
||||
"selector_hex": "0x082",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 01 03 00 00 59",
|
||||
"name": "combined_iris_shutter_master_gain_status_lane",
|
||||
"reasons": [
|
||||
"Bench-visible combined status/readout lane; clear behavior appears latched or copied elsewhere."
|
||||
],
|
||||
"score": 4,
|
||||
"seed_frames": [
|
||||
{
|
||||
"cmd0_frame": "00 01 03 80 00 D8",
|
||||
"value": 32768,
|
||||
"value_hex": "0x8000"
|
||||
},
|
||||
{
|
||||
"cmd0_frame": "00 01 03 00 00 58",
|
||||
"value": 0,
|
||||
"value_hex": "0x0000"
|
||||
}
|
||||
],
|
||||
"selector": 131,
|
||||
"selector_hex": "0x083",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [
|
||||
{
|
||||
@@ -1488,30 +1642,6 @@
|
||||
"selector_hex": "0x012",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 13 00 00 48",
|
||||
"dispatch_target": {
|
||||
"decoded_code": false,
|
||||
"dispatch_index": 19,
|
||||
"dispatch_index_hex": "0x013",
|
||||
"entry_address_hex": "H'28CC",
|
||||
"selector": 19,
|
||||
"selector_hex": "0x013",
|
||||
"target": 11782,
|
||||
"target_hex": "H'2E06",
|
||||
"target_label_or_hex": "H'2E06"
|
||||
},
|
||||
"name": "state_selector_candidate",
|
||||
"reasons": [
|
||||
"selector dispatches to H'2E06"
|
||||
],
|
||||
"score": 2,
|
||||
"seed_frames": [],
|
||||
"selector": 19,
|
||||
"selector_hex": "0x013",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 16 00 00 4D",
|
||||
@@ -1608,30 +1738,6 @@
|
||||
"selector_hex": "0x01A",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 24 00 00 7F",
|
||||
"dispatch_target": {
|
||||
"decoded_code": false,
|
||||
"dispatch_index": 36,
|
||||
"dispatch_index_hex": "0x024",
|
||||
"entry_address_hex": "H'28EE",
|
||||
"selector": 36,
|
||||
"selector_hex": "0x024",
|
||||
"target": 12044,
|
||||
"target_hex": "H'2F0C",
|
||||
"target_label_or_hex": "H'2F0C"
|
||||
},
|
||||
"name": "state_selector_candidate",
|
||||
"reasons": [
|
||||
"selector dispatches to H'2F0C"
|
||||
],
|
||||
"score": 2,
|
||||
"seed_frames": [],
|
||||
"selector": 36,
|
||||
"selector_hex": "0x024",
|
||||
"tables": []
|
||||
},
|
||||
{
|
||||
"accesses": [],
|
||||
"cmd1_read_frame": "01 00 25 00 00 7E",
|
||||
@@ -1898,7 +2004,7 @@
|
||||
}
|
||||
],
|
||||
"summary": {
|
||||
"candidate_count": 41,
|
||||
"candidate_count": 43,
|
||||
"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."
|
||||
},
|
||||
|
||||
@@ -10,6 +10,13 @@ Table Model:
|
||||
- flag_table_candidate: H'EC00-H'EFFF; accesses=6 static selectors=0x000
|
||||
|
||||
Highest-Value Selector Candidates:
|
||||
- 0x093 white_balance_black_flare_mode_lane: score=19 tables=primary_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_17C9: BTST.W #12, @H'E126
|
||||
- primary_value_table_candidate read in loc_17FB: BTST.W #12, @H'E126
|
||||
- primary_value_table_candidate read in loc_182D: BTST.W #5, @H'E126
|
||||
- primary_value_table_candidate read in loc_1891: BTST.W #5, @H'E126
|
||||
seed frames: 0x8000 -> 00 01 13 80 00 C8; 0x4000 -> 00 01 13 40 00 08; 0x2000 -> 00 01 13 20 00 68
|
||||
readback frame: 01 01 13 00 00 49
|
||||
- 0x000 heartbeat_or_idle_report_candidate: score=18 tables=primary_value_table_candidate, current_value_table_candidate, flag_table_candidate
|
||||
- primary_value_table_candidate write in loc_4096: MOV:G.W #H'0080, @H'E000
|
||||
- current_value_table_candidate write in loc_4096: MOV:G.W #H'0080, @H'E800
|
||||
@@ -17,12 +24,6 @@ Highest-Value Selector Candidates:
|
||||
- idle report selector and CONNECT OK emulator condition both center on selector zero
|
||||
seed frames: 0x0080 -> 00 00 00 00 80 DA; 0x8080 -> 00 00 00 80 80 5A
|
||||
readback frame: 01 00 00 00 00 5B
|
||||
- 0x093 state_selector_candidate: score=15 tables=primary_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_17C9: BTST.W #12, @H'E126
|
||||
- primary_value_table_candidate read in loc_17FB: BTST.W #12, @H'E126
|
||||
- primary_value_table_candidate read in loc_182D: BTST.W #5, @H'E126
|
||||
- primary_value_table_candidate read in loc_1891: BTST.W #5, @H'E126
|
||||
readback frame: 01 01 13 00 00 49
|
||||
- 0x0F6 active_status_bridge_candidate: score=14 tables=primary_value_table_candidate, current_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_48FA: BTST.W #13, @H'E1EC
|
||||
- primary_value_table_candidate read in loc_48FA: MOV:G.W @H'E1EC, R0
|
||||
@@ -64,6 +65,18 @@ Highest-Value Selector Candidates:
|
||||
- continuation command 5 calls BE70 for selector 0x006D
|
||||
- selector dispatches to H'3015
|
||||
readback frame: 01 00 6D 00 00 36
|
||||
- 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.
|
||||
- 0x8000 SLAVE lamp: sets F791.6 and F713.4
|
||||
- 0x4000 IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7
|
||||
- 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
|
||||
readback frame: 01 00 13 00 00 48
|
||||
- 0x024 lcd_selector_button_lamp: score=6 tables=none
|
||||
- Bench-visible LCD selector-button lamp lane.
|
||||
- selector dispatches to H'2F0C
|
||||
seed frames: 0x8000 -> 00 00 24 80 00 FE; 0x0000 -> 00 00 24 00 00 7E
|
||||
readback frame: 01 00 24 00 00 7F
|
||||
- 0x007 camera_power_report_candidate: score=5 tables=none
|
||||
- observed RCP autonomous report frame(s): 00 00 07 80 00 DD
|
||||
- selector dispatches to H'2DC3
|
||||
@@ -91,24 +104,20 @@ Highest-Value Selector Candidates:
|
||||
- 0x0F8 connection_latch_clear_candidate: score=5 tables=none
|
||||
- when F731.7 is set, command 5 on this selector clears F731.7/F790.7
|
||||
readback frame: 01 01 78 00 00 22
|
||||
- 0x082 iris_readout_lane: score=4 tables=none
|
||||
- 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
|
||||
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
|
||||
- 0x0B7 state_selector_candidate: score=3 tables=primary_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_174D: BTST.W #13, @H'E16E
|
||||
readback frame: 01 01 37 00 00 6D
|
||||
- 0x0B9 state_selector_candidate: score=3 tables=primary_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_1795: BTST.W #13, @H'E172
|
||||
readback frame: 01 01 39 00 00 63
|
||||
- 0x110 state_selector_candidate: score=3 tables=primary_value_table_candidate
|
||||
- primary_value_table_candidate read in loc_1795: BTST.W #15, @H'E220
|
||||
readback frame: 01 01 90 00 00 CA
|
||||
- 0x012 state_selector_candidate: score=2 tables=none
|
||||
- selector dispatches to H'2E03
|
||||
readback frame: 01 00 12 00 00 49
|
||||
|
||||
Display Text Hints:
|
||||
- CONNECT: 0 hit(s)
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
typedef uint8_t u8;
|
||||
typedef uint16_t u16;
|
||||
|
||||
#define BIT(n) (1u << (n))
|
||||
extern volatile u8 MEM8[0x10000];
|
||||
|
||||
#define SCI1_SCR MEM8[0xFEDAu]
|
||||
@@ -193,6 +194,28 @@ extern volatile u8 MEM8[0x10000];
|
||||
* evidence: H'1A09, H'1A71, H'3F90, H'407F, H'BB35, H'BC79, H'BC99, H'BD1E
|
||||
* - flag_table_candidate at H'EC00 (bit_flags); observed write
|
||||
* evidence: H'4088, H'BC82, H'BC9D, H'BD22, H'BD39, H'BDE9
|
||||
* panel selector semantics:
|
||||
* - 0x0013 slave_and_iris_mblack_link_lamps: 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.
|
||||
* current word: H'E826; dispatch: H'2E06
|
||||
* 0x8000 -> SLAVE lamp: sets F791.6 and F713.4; RAM F791.6, F713.4
|
||||
* 0x4000 -> IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7; RAM F791.5, F716.7
|
||||
* observed values: 0x8000 SLAVE lamp on; 0x4000 IRIS/M.BLACK LINK lamp on; 0x0000 SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06
|
||||
* state machine: iris_mblack_link_closed_loop_state_candidate: Bench-proven closed loop: the RCP reports local IRIS/M.BLACK LINK intent, the CCU ACKs selector 0x0013, then the CCU mirrors the accepted selector state back with command 0. The mirrored state controls the next toggle direction.
|
||||
* 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.
|
||||
* 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
|
||||
* - 0x0024 lcd_selector_button_lamp: Bench-visible LCD selector-button lamp lane.
|
||||
* 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
|
||||
* - 0x0082 iris_readout_lane: Bench-visible IRIS seven-segment/display lane.
|
||||
* current word: H'E904; dispatch: dispatch unknown
|
||||
* observed values: 0x8000 IRIS display OP; 0x4000 IRIS display 1.4; 0x0000 IRIS display blank
|
||||
* - 0x0083 combined_iris_shutter_master_gain_status_lane: Bench-visible combined status/readout lane; clear behavior appears latched or copied elsewhere.
|
||||
* current word: H'E906; dispatch: dispatch unknown
|
||||
* 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:
|
||||
* - event_queue_read_cursor_candidate H'F9B4: reads 1, writes 2; bits 5
|
||||
* evidence: H'BE78, H'BE95, H'BE99
|
||||
@@ -357,12 +380,110 @@ void frt2_ocia_candidate_tick_isr(void)
|
||||
|
||||
}
|
||||
|
||||
static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 value)
|
||||
{
|
||||
/* Known bench/ROM selector labels. This helper is commentary for the decompile. */
|
||||
switch (logical_index) {
|
||||
case 0x0013u:
|
||||
/* 0x0013 slave_and_iris_mblack_link_lamps; current word H'E826; H'2E06. */
|
||||
if ((value & 0x8000u) != 0u) {
|
||||
/* SLAVE lamp: sets F791.6 and F713.4. */
|
||||
} else {
|
||||
/* SLAVE lamp: clears F791.6 and F713.4. */
|
||||
}
|
||||
if ((value & 0x4000u) != 0u) {
|
||||
/* IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7. */
|
||||
} else {
|
||||
/* IRIS/M.BLACK LINK lamp: clears F791.5 and F716.7. */
|
||||
}
|
||||
if (value == 0x8000u) {
|
||||
/* SLAVE lamp on. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* IRIS/M.BLACK LINK lamp on. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06. */
|
||||
}
|
||||
break;
|
||||
case 0x0024u:
|
||||
/* 0x0024 lcd_selector_button_lamp; current word H'E848; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* LCD selector-button lamp visible. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* lamp remained visible at 0.5 s in isolation run. */
|
||||
}
|
||||
break;
|
||||
case 0x0082u:
|
||||
/* 0x0082 iris_readout_lane; current word H'E904; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* IRIS display OP. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* IRIS display 1.4. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* IRIS display blank. */
|
||||
}
|
||||
break;
|
||||
case 0x0083u:
|
||||
/* 0x0083 combined_iris_shutter_master_gain_status_lane; current word H'E906; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN -3. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* same visible state remained at 0.5 s. */
|
||||
}
|
||||
break;
|
||||
case 0x0093u:
|
||||
/* 0x0093 white_balance_black_flare_mode_lane; current word H'E926; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance PRESET. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance AUTO. */
|
||||
}
|
||||
if (value == 0x2000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void provisional_iris_mblack_link_button_toggle_report(void)
|
||||
{
|
||||
/* Provisional name for ROM H'200E: 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. */
|
||||
/* Source F006.7 / F6DB.7; gate F731 <= 3; current state F791.5. */
|
||||
if ((MEM8[0xF6DBu] & BIT(7)) == 0u) {
|
||||
return;
|
||||
}
|
||||
if (MEM8[0xF731u] > 3u) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((MEM8[0xF791u] & BIT(5)) == 0u) {
|
||||
/* Requests selector 0x0013=0x4000: 00 00 13 40 00 09. */
|
||||
/* CCU should ACK 05 00 13 00 00 4C, then mirror 00 00 13 40 00 09. */
|
||||
} else {
|
||||
/* Requests selector 0x0013=0x0000: 00 00 13 00 00 49. */
|
||||
/* CCU should ACK 05 00 13 00 00 4C, then mirror 00 00 13 00 00 49. */
|
||||
}
|
||||
}
|
||||
|
||||
void sci1_process_candidate_protocol_command(void)
|
||||
{
|
||||
u8 command = sci1_rx_candidate_command();
|
||||
u16 logical_index = sci1_rx_candidate_logical_index();
|
||||
u16 value = sci1_rx_candidate_value();
|
||||
|
||||
sci1_candidate_panel_selector_annotation(logical_index, value);
|
||||
|
||||
bool session_active = MEM8[0xFAA2u] != 0u;
|
||||
|
||||
if (!session_active) {
|
||||
|
||||
@@ -18,32 +18,32 @@ primary_value_table_candidate H'E000-H'E3FF (negative H'2000; direct H'F900-H'F9
|
||||
accesses=31 reads=21 writes=10 dynamic=11
|
||||
static offsets: H'0000, H'0004, H'0006, H'0046, H'0080, H'0102, H'0124, H'0126, H'014E, H'016E, H'0172, H'01EC, H'0220
|
||||
functions: loc_BBAB:5, loc_2650:3, loc_4096:3, loc_1795:2, loc_19DB:2, loc_1A35:2, loc_48FA:2, vec_ad_adi_3D99:2, <no function>:1, loc_1705:1, loc_174D:1, loc_17C9:1
|
||||
- H'170C read offset H'014E -> H'E14E; loc_1705; BTST.W #15, @H'E14E
|
||||
- H'175A read offset H'016E -> H'E16E; loc_174D; BTST.W #13, @H'E16E
|
||||
- H'179C read offset H'0172 -> H'E172; loc_1795; BTST.W #13, @H'E172
|
||||
- H'17A7 read offset H'0220 -> H'E220; loc_1795; BTST.W #15, @H'E220
|
||||
- H'17D0 read offset H'0126 -> H'E126; loc_17C9; BTST.W #12, @H'E126
|
||||
- H'1802 read offset H'0126 -> H'E126; loc_17FB; BTST.W #12, @H'E126
|
||||
- H'183A read offset H'0126 -> H'E126; loc_182D; BTST.W #5, @H'E126
|
||||
- H'189E read offset H'0126 -> H'E126; loc_1891; BTST.W #5, @H'E126
|
||||
- H'18F4 read offset H'0126 -> H'E126; loc_18E7; BTST.W #5, @H'E126
|
||||
- H'170C read offset H'014E selector 0x0A7 -> H'E14E; loc_1705; BTST.W #15, @H'E14E
|
||||
- H'175A read offset H'016E selector 0x0B7 -> H'E16E; loc_174D; BTST.W #13, @H'E16E
|
||||
- H'179C read offset H'0172 selector 0x0B9 -> H'E172; loc_1795; BTST.W #13, @H'E172
|
||||
- H'17A7 read offset H'0220 selector 0x110 -> H'E220; loc_1795; BTST.W #15, @H'E220
|
||||
- H'17D0 read offset H'0126 selector 0x093 -> H'E126; loc_17C9; BTST.W #12, @H'E126
|
||||
- H'1802 read offset H'0126 selector 0x093 -> H'E126; loc_17FB; BTST.W #12, @H'E126
|
||||
- H'183A read offset H'0126 selector 0x093 -> H'E126; loc_182D; BTST.W #5, @H'E126
|
||||
- H'189E read offset H'0126 selector 0x093 -> H'E126; loc_1891; BTST.W #5, @H'E126
|
||||
- H'18F4 read offset H'0126 selector 0x093 -> H'E126; loc_18E7; BTST.W #5, @H'E126
|
||||
- H'19E3 read index dynamic via R3 operand @(-H'2000,R3); loc_19DB; MOV:G.W @(-H'2000,R3), R0
|
||||
- H'1A03 read index dynamic via R3 operand @(-H'2000,R3); loc_19DB; CMP:G.W @(-H'2000,R3), R1
|
||||
- H'1A3D read index dynamic via R3 operand @(-H'2000,R3); loc_1A35; MOV:G.W @(-H'2000,R3), R0
|
||||
- H'1A6B read index dynamic via R3 operand @(-H'2000,R3); loc_1A35; CMP:G.W @(-H'2000,R3), R0
|
||||
- H'2657 read offset H'0124 -> H'E124; loc_2650; MOV:G.W @H'E124, R0
|
||||
- H'266F read offset H'0004 -> H'E004; loc_2650; BTST.W #13, @H'E004
|
||||
- H'268B read offset H'0124 -> H'E124; loc_2650; CMP:G.W @H'E124, R0
|
||||
- H'3DDA read offset H'0102 -> H'E102; vec_ad_adi_3D99; MOV:G.W @H'E102, R0
|
||||
- H'3DFA read offset H'0102 -> H'E102; vec_ad_adi_3D99; CMP:G.W @H'E102, R1
|
||||
- H'2657 read offset H'0124 selector 0x092 -> H'E124; loc_2650; MOV:G.W @H'E124, R0
|
||||
- H'266F read offset H'0004 selector 0x002 -> H'E004; loc_2650; BTST.W #13, @H'E004
|
||||
- H'268B read offset H'0124 selector 0x092 -> H'E124; loc_2650; CMP:G.W @H'E124, R0
|
||||
- H'3DDA read offset H'0102 selector 0x081 -> H'E102; vec_ad_adi_3D99; MOV:G.W @H'E102, R0
|
||||
- H'3DFA read offset H'0102 selector 0x081 -> H'E102; vec_ad_adi_3D99; CMP:G.W @H'E102, R1
|
||||
- H'3F8C write index dynamic via R0 operand @(-H'2000,R0); <no function>; CLR.W @(-H'2000,R0)
|
||||
- H'402C write offset H'0046 -> H'E046; loc_400C; CLR.W @H'E046
|
||||
- H'402C write offset H'0046 selector 0x023 -> H'E046; loc_400C; CLR.W @H'E046
|
||||
- H'4077 write index dynamic via R0 operand @(-H'2000,R0); loc_4075; CLR.W @(-H'2000,R0)
|
||||
- H'4096 write offset H'0000 -> H'E000; loc_4096; MOV:G.W #H'0080, @H'E000
|
||||
- H'409C write offset H'0006 -> H'E006; loc_4096; MOV:G.W #H'8000, @H'E006
|
||||
- H'40A2 write offset H'0080 -> H'E080; loc_4096; MOV:G.W #H'FFFF, @H'E080
|
||||
- H'490F read offset H'01EC -> H'E1EC; loc_48FA; BTST.W #13, @H'E1EC
|
||||
- H'4915 read offset H'01EC -> H'E1EC; loc_48FA; MOV:G.W @H'E1EC, R0
|
||||
- H'4096 write offset H'0000 selector 0x000 -> H'E000; loc_4096; MOV:G.W #H'0080, @H'E000
|
||||
- H'409C write offset H'0006 selector 0x003 -> H'E006; loc_4096; MOV:G.W #H'8000, @H'E006
|
||||
- H'40A2 write offset H'0080 selector 0x040 -> H'E080; loc_4096; MOV:G.W #H'FFFF, @H'E080
|
||||
- H'490F read offset H'01EC selector 0x0F6 -> H'E1EC; loc_48FA; BTST.W #13, @H'E1EC
|
||||
- H'4915 read offset H'01EC selector 0x0F6 -> H'E1EC; loc_48FA; MOV:G.W @H'E1EC, R0
|
||||
- H'BC75 write index dynamic via R4 operand @(-H'2000,R4); loc_BBAB; MOV:G.W R0, @(-H'2000,R4)
|
||||
- H'BC95 write index dynamic via R4 operand @(-H'2000,R4); loc_BBAB; MOV:G.W R0, @(-H'2000,R4)
|
||||
- H'BCEC read index dynamic via R4 operand @(-H'2000,R4); loc_BBAB; MOV:G.W @(-H'2000,R4), R0
|
||||
@@ -66,16 +66,16 @@ current_value_table_candidate H'E800-H'EBFF (negative H'1800; direct H'F920-H'F9
|
||||
accesses=14 reads=1 writes=13 dynamic=8
|
||||
static offsets: H'0000, H'0006, H'0080, H'0102, H'0124, H'01EC
|
||||
functions: loc_4096:3, loc_BBAB:3, <no function>:1, loc_15E0:1, loc_19DB:1, loc_1A35:1, loc_2650:1, loc_4075:1, loc_48FA:1, loc_BAF2:1
|
||||
- H'15ED write offset H'0102 -> H'E902; loc_15E0; MOV:G.W R1, @H'E902
|
||||
- H'15ED write offset H'0102 selector 0x081 -> H'E902; loc_15E0; MOV:G.W R1, @H'E902
|
||||
- H'1A09 write index dynamic via R3 operand @(-H'1800,R3); loc_19DB; MOV:G.W R1, @(-H'1800,R3)
|
||||
- H'1A71 write index dynamic via R3 operand @(-H'1800,R3); loc_1A35; MOV:G.W R0, @(-H'1800,R3)
|
||||
- H'2691 write offset H'0124 -> H'E924; loc_2650; MOV:G.W R0, @H'E924
|
||||
- H'2691 write offset H'0124 selector 0x092 -> H'E924; loc_2650; MOV:G.W R0, @H'E924
|
||||
- H'3F90 write index dynamic via R0 operand @(-H'1800,R0); <no function>; CLR.W @(-H'1800,R0)
|
||||
- H'407F write index dynamic via R0 operand @(-H'1800,R0); loc_4075; CLR.W @(-H'1800,R0)
|
||||
- H'40A8 write offset H'0000 -> H'E800; loc_4096; MOV:G.W #H'0080, @H'E800
|
||||
- H'40AE write offset H'0006 -> H'E806; loc_4096; MOV:G.W #H'8000, @H'E806
|
||||
- H'40B4 write offset H'0080 -> H'E880; loc_4096; MOV:G.W #H'FFFF, @H'E880
|
||||
- H'491D write offset H'01EC -> H'E9EC; loc_48FA; MOV:G.W R0, @H'E9EC
|
||||
- H'40A8 write offset H'0000 selector 0x000 -> H'E800; loc_4096; MOV:G.W #H'0080, @H'E800
|
||||
- H'40AE write offset H'0006 selector 0x003 -> H'E806; loc_4096; MOV:G.W #H'8000, @H'E806
|
||||
- H'40B4 write offset H'0080 selector 0x040 -> H'E880; loc_4096; MOV:G.W #H'FFFF, @H'E880
|
||||
- H'491D write offset H'01EC selector 0x0F6 -> H'E9EC; loc_48FA; MOV:G.W R0, @H'E9EC
|
||||
- H'BB35 read index dynamic via R0 operand @(-H'1800,R0); loc_BAF2; MOV:G.W @(-H'1800,R0), R4
|
||||
- H'BC79 write index dynamic via R4 operand @(-H'1800,R4); loc_BBAB; MOV:G.W R0, @(-H'1800,R4)
|
||||
- H'BC99 write index dynamic via R4 operand @(-H'1800,R4); loc_BBAB; MOV:G.W R0, @(-H'1800,R4)
|
||||
@@ -85,7 +85,7 @@ flag_table_candidate H'EC00-H'EFFF (negative H'1400; direct H'F980-H'F99F)
|
||||
accesses=6 reads=0 writes=6 dynamic=5
|
||||
static offsets: H'0200
|
||||
functions: loc_BBAB:5, loc_4075:1
|
||||
- H'4088 write offset H'0200 -> H'EE00; loc_4075; CLR.W @(-H'1400,R0)
|
||||
- H'4088 write offset H'0200 selector 0x000 -> H'EE00; loc_4075; CLR.W @(-H'1400,R0)
|
||||
- H'BC82 write index dynamic via R5 operand @(-H'1400,R5); loc_BBAB; BSET.B #7, @(-H'1400,R5)
|
||||
- H'BC9D write index dynamic via R5 operand @(-H'1400,R5); loc_BBAB; BSET.B #7, @(-H'1400,R5)
|
||||
- H'BD22 write index dynamic via R5 operand @(-H'1400,R5); loc_BBAB; BSET.B #7, @(-H'1400,R5)
|
||||
|
||||
Reference in New Issue
Block a user