【BA4988】_0344中断
反汇编:
_0344() { _TISR = 0xDF if (_201B&0x01) { _ML1D = 0xEC _201B &= 0xFE _MTCT=0xF0 return } if (_201B&0x02) { if (_DATA3) { _37 = _DATA3&0xBF _MTCT = RHYTHM_ADDR[_DATA3&0x0F] if (_37&0x10) { _ML1D = 0x02 } if (_37&0x20) { _ML2D = 0x02 } if (_37&0x01) { A = _DATA3 A = _DATA3 } if (_37&0x02) { A = _DATA3 A = _DATA3 } if (_37&0x04) { A = _DATA3 A = _DATA3 } if (_37&0x08) { A = _DATA3 A = _DATA3 } return } else { _201B&=0xFD _201C = 0x00 } } _TIER&=0xDF _AUDCON&=0x3F }
汇编:
[00000344]0344 [4C 49 F8]: JMP $F849 @ 转移$00E8A849
[00E8A849]F849 [48 98 48]: PHA @ 累加器压入堆栈
[00E8A84A]F84A [98 48 A9]: TYA @ 变址寄存器Y送累加器
[00E8A84B]F84B [48 A9 DF]: PHA @ 累加器压入堆栈
[00E8A84C]F84C [A9 DF 85]: LDA #$DF @ 送累加器
[00E8A84E]F84E [85 05 AD]: STA $05 = #$DF @ 存累加器
[00E8A850]F850 [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A853]F853 [29 01 F0]: AND #$01 @ 逻辑与
[00E8A855]F855 [F0 15 A9]: BEQ $F86C @ 结果为0分支
[00E8A857]F857 [A9 EC 8D]: LDA #$EC @ 送累加器
[00E8A859]F859 [8D 2C 02]: STA $022C = #$EC @ 存累加器
[00E8A85C]F85C [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A85F]F85F [29 FE 8D]: AND #$FE @ 逻辑与
[00E8A861]F861 [8D 1B 20]: STA $201B = #$04 @ 存累加器
[00E8A864]F864 [A9 F0 8D]: LDA #$F0 @ 送累加器
[00E8A866]F866 [8D 2B 02]: STA $022B = #$F0 @ 存累加器
[00E8A869]F869 [4C D3 F8]: JMP $F8D3 @ 转移$00E8A8D3
[00E8A86C]F86C [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A86F]F86F [29 02 F0]: AND #$02 @ 逻辑与
[00E8A871]F871 [F0 64 A5]: BEQ $F8D7 @ 结果为0分支
[00E8A873]F873 [A5 02 D0]: LDA $02 = #$00 @ 送累加器
[00E8A875]F875 [D0 10 AD]: BNE $F887 @ 结果不为0分支
[00E8A877]F877 [AD 1B 20]: LDA $201B = #$04 @ 送累加器
[00E8A87A]F87A [29 FD 8D]: AND #$FD @ 逻辑与
[00E8A87C]F87C [8D 1B 20]: STA $201B = #$04 @ 存累加器
[00E8A87F]F87F [A9 00 8D]: LDA #$00 @ 送累加器
[00E8A881]F881 [8D 1C 20]: STA $201C = #$00 @ 存累加器
[00E8A884]F884 [4C D7 F8]: JMP $F8D7 @ 转移$00E8A8D7
[00E8A887]F887 [29 BF 85]: AND #$BF @ 逻辑与
[00E8A889]F889 [85 37 A5]: STA $37 = #$00 @ 存累加器
[00E8A88B]F88B [A5 02 29]: LDA $02 = #$00 @ 送累加器
[00E8A88D]F88D [29 0F A8]: AND #$0F @ 逻辑与
[00E8A88F]F88F [A8 B1 35]: TAY @ 累加器送变址寄存器Y
[00E8A890]F890 [B1 35 8D]: LDA ($35),Y @ $178E = #$26 @ 送累加器
[00E8A892]F892 [8D 2B 02]: STA $022B = #$26 @ 存累加器
[00E8A895]F895 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A897]F897 [29 10 F0]: AND #$10 @ 逻辑与
[00E8A899]F899 [F0 05 A5]: BEQ $F8A0 @ 结果为0分支
[00E8A89B]F89B [A5 02 8D]: LDA $02 = #$00 @ 送累加器
[00E8A89D]F89D [8D 2C 02]: STA $022C = #$00 @ 存累加器
[00E8A8A0]F8A0 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8A2]F8A2 [29 20 F0]: AND #$20 @ 逻辑与
[00E8A8A4]F8A4 [F0 05 A5]: BEQ $F8AB @ 结果为0分支
[00E8A8A6]F8A6 [A5 02 8D]: LDA $02 = #$00 @ 送累加器
[00E8A8A8]F8A8 [8D 2D 02]: STA $022D = #$00 @ 存累加器
[00E8A8AB]F8AB [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8AD]F8AD [29 01 F0]: AND #$01 @ 逻辑与
[00E8A8AF]F8AF [F0 04 A5]: BEQ $F8B5 @ 结果为0分支
[00E8A8B1]F8B1 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8B3]F8B3 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8B5]F8B5 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8B7]F8B7 [29 02 F0]: AND #$02 @ 逻辑与
[00E8A8B9]F8B9 [F0 04 A5]: BEQ $F8BF @ 结果为0分支
[00E8A8BB]F8BB [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8BD]F8BD [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8BF]F8BF [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8C1]F8C1 [29 04 F0]: AND #$04 @ 逻辑与
[00E8A8C3]F8C3 [F0 04 A5]: BEQ $F8C9 @ 结果为0分支
[00E8A8C5]F8C5 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8C7]F8C7 [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8C9]F8C9 [A5 37 29]: LDA $37 = #$00 @ 送累加器
[00E8A8CB]F8CB [29 08 F0]: AND #$08 @ 逻辑与
[00E8A8CD]F8CD [F0 04 A5]: BEQ $F8D3 @ 结果为0分支
[00E8A8CF]F8CF [A5 02 A5]: LDA $02 = #$00 @ 送累加器
[00E8A8D1]F8D1 [A5 02 68]: LDA $02 = #$00 @ 送累加器
[00E8A8D3]F8D3 [68 A8 68]: PLA @ 堆栈弹回累加器
[00E8A8D4]F8D4 [A8 68 40]: TAY @ 累加器送变址寄存器Y
[00E8A8D5]F8D5 [68 40 AD]: PLA @ 堆栈弹回累加器
[00E8A8D6]F8D6 [40 AD 3B]: RTI @ 中断返回
[00E8A8D7]F8D7 [AD 3B 02]: LDA $023B = #$21 @ 送累加器
[00E8A8DA]F8DA [29 DF 8D]: AND #$DF @ 逻辑与
[00E8A8DC]F8DC [8D 3B 02]: STA $023B = #$01 @ 存累加器
[00E8A8DF]F8DF [AD 3F 02]: LDA $023F = #$C0 @ 送累加器
[00E8A8E2]F8E2 [29 3F 8D]: AND #$3F @ 逻辑与
[00E8A8E4]F8E4 [8D 3F 02]: STA $023F = #$00 @ 存累加器
[00E8A8E7]F8E7 [68 A8 68]: PLA @ 堆栈弹回累加器
[00E8A8E8]F8E8 [A8 68 40]: TAY @ 累加器送变址寄存器Y
[00E8A8E9]F8E9 [68 40 48]: PLA @ 堆栈弹回累加器
[00E8A8EA]F8EA [40 48 8A]: RTI @ 中断返回