In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Wiimote/Firmware: Difference between revisions

From WiiBrew
Jump to navigation Jump to search
CarlKenner (talk | contribs)
Disassembled firmware
 
Hallowizer (talk | contribs)
m Fixed file link
 
(18 intermediate revisions by 9 users not shown)
Line 1: Line 1:
I disassembled the Wiimote's firmware which was extracted by Sparks Fun. [[User:CarlKenner|CarlKenner]] 10:22, 5 January 2009 (UTC)
The entire (8051-based) firmware of the Wiimote was dumped by [[User:Beeloot]] in January, 2009.  It is available in binary form here:  [[File:Wiimote firmware.zip]]


<pre>
The README from that archive is:
;===============================================================;
; Disassembled Using DIS8051  -  (C)1989 Data Sync Engineering ;
;===============================================================;
;
;
;
ORG 00000H


; 7F04 ?
beeloot - 07/01/2009
; 1:0   10 when speaker enabled
;        00 when speaker disabled
This is a complete dump of the firmware of my Wiimote.
L_SpeakerEnabled1: NOP
This archive includes a dump of the I2C EEPROM.
By modifying the code in the EEPROM I have been able to dump the full
address range of code memory, as well as the various code banks.
Code memory uses banking mechanism to extend 8051 addressing space
beyond 64K.
Common area is at 0x0000-0x7FFF, banked area is at 0x8000-0xFFFF.
Current code bank is selected via bits 3-2 of port 1.
P1[3:2] = 00 => code bank 0
P1[3:2] = 01 => code bank 1
P1[3:2] = 10 => code bank 2
P1[3:2] = 11 => code bank 3
It seems like KEIL C51 compiler has been used to compile the firmware.
For example inter-banks function calls use patterns identical to those
generated by the C51 compiler.
I hope that this material will be useful and will help the community
to further understand the inner workings of the Wiimote. Perhaps
also some fun things will come out of this (there is for example a
serial interrupt handler).
Have fun!
Directories
    bank0\
        Dump of the code memory 0x8000-0xFFFF bank 0
    bank1\
        Dump of the code memory 0x8000-0xFFFF bank 1
    bank2\
        Dump of the code memory 0x8000-0xFFFF bank 2
    bank3\
        Dump of the code memory 0x8000-0xFFFF bank 3
    common\
        Dump of the common code memory 0x0000-0x7FFF
    eeprom\
        Dump of the I2C EEPROM contents
    xram\
        Dump of the external data memory


; 7F0A: GPIO_port
[[Category:Local code]]
; bit 5  enable/disable LED
; bit 4  enable/disable LED
; bit 3  enable/disable LED
; bit 2  enable/disable LED
; bit 1  1=enable rumble motor, 0=disable rumble motor
L_GPIO_port: NOP
 
L7F35: ADD A,R3
NOP
INC @R1
NOP
NOP
JC L7F3C
;
L7F3C: ADD A,R5
NOP
INC @R0
; 7F3F
L_BluetoothClassID: INC A
ADD A,000H
;
L7F42: ADD A,#000H
INC @R1
DEC A
INC R7
;
L7F47: ADDC A,R4
;
L7F48: LJMP L4600
;
INC 00CH
SJMP L7F94
NOP
DEC @R1
ORL A,R6
XRL A,R1
XRL A,R6
MOV A,#065H
XRL A,R6
XRL A,#06FH
JB 052H,L7FB2
ORL A,R4
 
; 7F5D bit 7 is speaker enabled
L_SpeakerEnabled: ADD A,R5
ORL 04EH,#054H
;
L7F61: ADD A,R5
;
L7F62: JNB 031H,L7F65
;
L7F65: ORL 000H,#004H
AJMP L7842
;
;
L7F6A: NOP
;
L7F6B: INC A
AJMP L7836
;
NOP
INC R5
NOP
JC L7F7B
NOP
;
L7F74: NOP
JC L7F7F
NOP
JBC 000H,L7F8A
;
L7F7B: LJMP LA803
;
MOV R5,#007H
XCHD A,@R1
NOP
NOP
INC 00AH
NOP
;
L7F86: NOP
NOP
NOP
XCHD A,@R1
;
L7F8A: NOP
AJMP L7805
;
ADDC A,003H
DEC R1
JBC 000H,L7F6A
NOP
;
L7F94: INC A
INC R7
ADDC A,00DH
ADDC A,006H
DEC R1
AJMP L7800
;
INC R1
NOP
AJMP L7835
;
RR A
DEC R1
NOP
AJMP L78D7
;
NOP
INC 005H
ADDC A,003H
DEC R1
JBC 002H,L7F86
NOP
INC @R0
INC R3
;
L7FB2: ADDC A,009H
INC R1
XRL A,06EH
INC R1
NOP
XRL A,R2
INC R1
AJMP L7800
;
XCHD A,@R1
NOP
INC R1
INC R2
ADDC A,008H
ADDC A,006H
DEC R1
AJMP L7800
;
INC R1
AJMP L7800
;
XCHD A,@R1
LJMP L0005
;
ADDC A,003H
INC R1
AJMP L7800
;
MOV R5,#019H
XCHD A,@R1
NOP
NOP
INC 00AH
NOP
;
L7FDC: AJMP L7800
;
NOP
XCHD A,@R1
NOP
AJMP L7805
;
ADDC A,003H
DEC R1
ACALL L7824
XCHD A,@R1
NOP
INC A
INC R7
ADDC A,00DH
ADDC A,006H
DEC R1
AJMP L7800
;
INC R1
NOP
ACALL L7835
RR A
DEC R1
NOP
ACALL L78D7
NOP
INC 005H
ADDC A,003H
;
L8001: DEC R1
;
L8002: JBC 002H,L7FDC
;
L8005: NOP
;
L8006: INC @R0
INC R3
ADDC A,009H
INC R1
XRL A,06EH
INC R1
NOP
XRL A,R2
INC R1
;
L8011: AJMP L8000
;
XCHD A,@R1
NOP
INC R1
INC R2
ADDC A,008H
ADDC A,006H
DEC R1
ACALL L8024
INC R1
AJMP L8000
;
XCHD A,@R1
NOP
INC R5
;
L8024: ACALL L8035
INC R7
;
L8027: ADDC A,00DH
ADDC A,006H
DEC R1
AJMP L8000
;
INC R1
NOP
RRC A
;
L8031: ADDC A,003H
DEC R1
NOP
;
L8035: ACALL L80D7
AJMP L8000
;
DEC 025H
RRC A
ORL A,R6
XRL A,R1
XRL A,R6
MOV A,#065H
XRL A,R6
XRL A,#06FH
JB 052H,L809D
ORL A,R4
ADD A,R5
ORL 04EH,#054H
ADD A,R5
JNB 031H,L8027
AJMP L8001
;
DEC 025H
RRC A
ORL A,R6
XRL A,R1
XRL A,R6
MOV A,#065H
XRL A,R6
XRL A,#06FH
JB 052H,L80B6
ORL A,R4
ADD A,R5
ORL 04EH,#054H
ADD A,R5
JNB 031H,L8040
AJMP L8002
;
INC R2
ADD A,008H
ORL A,R6
XRL A,R1
XRL A,R6
MOV A,#065H
XRL A,R6
XRL A,#06FH
XCHD A,@R1
LJMP L0003
;
INC R1
AJMP L8000
;
XCHD A,@R1
LJMP L0103
;
;
L8081: INC R1
AJMP L8011
;
XCHD A,@R1
;
L8085: LJMP L0202
;
INC R0
INC A
XCHD A,@R1
LJMP L0302
;
INC R0
RLC A
;
L8090: XCHD A,@R1
;
L8091: LJMP L0402
;
ADD A,R0
NOP
XCHD A,@R1
LJMP L0502
;
ADD A,R0
AJMP L80D7
;
;
L809D: LJMP L06E1
;
;
L80A0: ADDC A,0DFH
ADDC A,0DDH
INC R0
RET
;
ADD A,0D9H
INC 001H
INC R1
INC 0A1H
AJMP L8085
;
JBC 015H,L80B2
;
L80B2: ADD A,@R0
MOV R7,A
NOP
MOV 008H,#095H
AJMP L8006
;
NOP
MOV R7,A
INC R1
AJMP L8091
;
NOP
MOV 095H,011H
AJMP L8009
;
AJMP L8091
;
NOP
MOV 095H,012H
LJMP L0901
;
ACALL L8400
MOV 095H,013H
AJMP L8009
;
AJMP L8091
;
;
L80D7: NOP
MOV 095H,014H
AJMP L8009
;
AJMP L8091
;
NOP
MOV 095H,015H
AJMP L8009
;
AJMP L8091
;
NOP
MOV 095H,016H
DEC 009H
AJMP L8091
;
NOP
MOV 095H,017H
INC @R0
INC R1
AJMP L8091
;
NOP
MOV 095H,018H
DEC 009H
AJMP L8091
;
NOP
MOV 095H,019H
AJMP L8009
;
AJMP L8091
;
NOP
MOV 095H,01AH
AJMP L8009
;
AJMP L8091
;
NOP
MOV 095H,020H
INC @R0
INC R1
AJMP L8081
;
NOP
MOV 095H,021H
DEC 009H
AJMP L8081
;
NOP
MOV 095H,022H
INC A
INC R1
AJMP L8081
;
NOP
MOV 095H,030H
LJMP L0901
;
AJMP L8400
;
MOV 095H,031H
INC 009H
AJMP L8081
;
NOP
MOV 095H,032H
INC R2
INC R1
AJMP L8081
;
NOP
MOV 095H,033H
ACALL L8009
AJMP L8081
;
NOP
MOV 095H,034H
DEC 009H
AJMP L8081
;
NOP
MOV 095H,035H
DEC 009H
AJMP L8081
;
NOP
MOV 095H,036H
DEC 009H
AJMP L8081
;
NOP
MOV 095H,037H
DEC 009H
AJMP L8081
;
NOP
MOV 095H,03DH
DEC 009H
AJMP L8081
;
NOP
MOV 095H,03EH
DEC 009H
AJMP L8081
;
NOP
MOV 095H,03FH
DEC 009H
AJMP L8081
;
NOP
PUSH 0D7H
LJMP L070A
;
ADDC A,008H
;
L8187: ADDC A,006H
INC R1
INC A
INC R1
INC R1
AJMP L8000
;
XCHD A,@R1
LJMP L0802
;
ADD A,R0
NOP
XCHD A,@R1
LJMP L0902
;
ADD A,R0
AJMP L80D7
;
LJMP L0A02
;
ADD A,R0
AJMP L80D7
;
LJMP L0B03
;
INC R1
AJMP L8000
;
XCHD A,@R1
LJMP L0C03
;
INC R1
INC R4
SJMP L8187
LJMP L0D02
;
ADD A,R0
NOP
XCHD A,@R1
LJMP L0E02
;
ADD A,R0
NOP
MOV R5,#00BH
XCHD A,@R1
NOP
NOP
INC 00AH
NOP
;
L81C3: AJMP L8000
;
AJMP L80D7
;
NOP
AJMP L8005
;
ADDC A,003H
DEC R1
LCALL L00D7
NOP
INC A
INC R7
ADDC A,00DH
ADDC A,006H
DEC R1
AJMP L8000
;
INC R1
NOP
AJMP L8035
;
RR A
DEC R1
NOP
AJMP L80D7
;
NOP
INC 005H
ADDC A,003H
DEC R1
JBC 002H,L81C3
NOP
INC R1
INC R2
ADDC A,008H
ADDC A,006H
DEC R1
LCALL L0009
AJMP L8000
;
XCHD A,@R1
LJMP L0003
;
INC R1
AJMP L8000
;
XCHD A,@R1
LJMP L0103
;
INC R1
INC 07EH
XCHD A,@R1
LJMP L0203
;
INC R1
RR A
INC @R0
XCHD A,@R1
LJMP L0303
;
INC R1
ADDC A,R2
DEC @R0
XCHD A,@R1
LJMP L0402
;
ADD A,R0
AJMP L80D7
;
LJMP L0503
;
INC R1
NOP
LJMP L3700
;
INC R2
NOP
NOP
INC @R0
JC L822B
AJMP L8001
;
ADDC A,R0
NOP
DEC @R0
NOP
XRL A,R0
AJMP L8000
;
INC R0
AJMP L8000
;
NOP
INC R0
NOP
INC P0
NOP
NOP
NOP
RETI
;
NOP
RR A
NOP
ADDC A,R0
NOP
DEC @R0
AJMP L8078
;
INC @R0
NOP
INC R0
AJMP L8000
;
NOP
INC R0
NOP
INC P0
NOP
NOP
NOP
AJMP L8000
;
RR A
NOP
ORL A,R4
NOP
INC R5
XRL A,R0
NOP
INC A
NOP
NOP
RR A
RLC A
NOP
INC R1
ANL C,/03FH
NOP
ADD A,@R0
DEC A
INC R2
INC R2
INC R2
INC R2
INC R2
INC @R0
JC L8277
JC L8274
INC 002H
LJMP L0000
;
NOP
NOP
AJMP L8001
;
NOP
AJMP L8001
;
AJMP L8000
;
NOP
JBC 003H,L828D
ADDC A,#000H
NOP
AJMP L8090
;
AJMP L8031
;
NOP
;
L828D: ACALL L8101
NOP
NOP
LJMP L0000
;
NOP
JBC 000H,L8298
;
L8298: NOP
AJMP L8000
;
NOP
MOV R6,A
AJMP L8000
;
INC A
JNB 030H,L82D3
JNB 000H,L82A6
;
L82A6: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
INC A
NOP
RR A
INC A
NOP
LJMP L0180
;
NOP
NOP
NOP
ADD A,R4
NOP
RRC A
INC @R1
NOP
NOP
INC R4
SJMP L82CD
INC R6
JBC 008H,L82FD
INC R0
ADDC A,#0FFH
LJMP L0300
;
ADDC A,R4
NOP
INC A
NOP
;
L82D3: ADDC A,R6
NOP
ADDC A,#010H
LJMP L001A
;
RR A
JBC 018H,L82E2
NOP
DEC R4
INC 000H
;
L82E2: DEC R4
INC @R0
NOP
DEC R4
INC @R1
NOP
DEC R0
DEC @R0
JBC 018H,L8304
JBC 018H,L8308
JBC 018H,L830C
JBC 018H,L8310
MOV DPTR,#L181B
MOV DPTR,#L181C
MOV DPTR,#L181D
MOV DPTR,#L1820
MOV DPTR,#L1821
NOP
DEC R2
ORL A,R3
;
L8308: NOP
DEC A
MOV 000H,R6
;
L830C: ADD A,#024H
INC A
JBC 000H,L8391
ADD A,#07FH
ADD A,#00FH
ORL C,/009H
SWAP A
NOP
NOP
ORL A,R7
NOP
INC 000H
DEC R0
ADD A,R6
NOP
INC R5
JZ L8325
;
L8325: LJMP L0103
;
ADDC A,R3
SUBB A,R2
XCH A,R2
NOP
INC R0
ANL 000H,#005H
AJMP L8020
;
ADDC A,R2
NOP
INC R2
ADDC A,R7
AJMP L80A0
;
AJMP L80A0
;
INC R0
NOP
INC R1
NOP
;
L833E: INC @R1
XCH A,@R1
ANL A,@R0
RLC A
NOP
INC R1
NOP
INC @R1
;
L8346: SETB ACC.4
CPL C
RET
;
INC R1
NOP
INC @R1
SETB 028H
CPL C
ORL 009H,#000H
INC @R1
XCHD A,@R0
ACALL L86B3
MOV R2,#009H
NOP
INC @R1
XCH A,09BH
CPL C
SWAP A
INC R1
NOP
INC @R1
ADDC A,R7
CJNE R1,#033H,L8346
INC R1
NOP
INC @R1
ANL A,R2
DJNZ R3,L8371
MOV 009H,R3
NOP
INC @R1
MOV @R0,A
;
L8371: JZ L8378
ORL C,/009H
NOP
INC @R1
SUBB A,@R1
;
L8378: LJMP L05C6
;
INC R1
NOP
INC @R1
ORL A,#09DH
;
L8380: INC 0D3H
INC R1
NOP
INC @R1
ORL A,038H
INC 0E6H
INC R1
NOP
INC @R1
ACALL L83E9
INC 0EEH
INC R0
;
L8391: RL A
CJNE A,#000H,L8397
ADD A,#001H
;
L8397: MOVX A,@R1
LJMP L949F
;
LJMP LDBA6
;
CLR C
RET
;
NOP
LJMP LA262
;
RET
;
NOP
NOP
CLR C
RET
;
NOP
LJMP LE9A6
;
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP LDC5E
;
LJMP LA3EC
;
LJMP LDBF4
;
LJMP LA3E7
;
LJMP LA209
;
LJMP LDA9C
;
LJMP LD420
;
RET
;
NOP
NOP
LJMP LD92D
;
LJMP LD90F
;
LJMP LA1CA
;
LJMP LA399
;
RET
;
NOP
NOP
LJMP LDA2C
;
LJMP LA259
;
LJMP LDA45
;
LJMP LE9B0
;
LJMP LE9ED
;
;
L83E9: LJMP LD48F
;
CLR C
RET
;
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP L7BDA
;
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP L7A6A
;
LJMP L7B1D
;
LJMP L7990
;
LJMP LE0F7
;
LJMP LE0EE
;
LJMP LE0EB
;
LJMP LE0EB
;
LJMP LE072
;
LJMP LE02A
;
LJMP LDFFA
;
LJMP LDFC3
;
LJMP LDEEB
;
LJMP LDEA4
;
LJMP LDE6F
;
LJMP LDE49
;
LJMP LDE36
;
LJMP LDE2A
;
LJMP LDE14
;
LJMP LDE01
;
LJMP LDDB6
;
LJMP LDD97
;
LJMP LDD7C
;
LJMP LDD5D
;
LJMP LA3F2
;
LJMP LDCC0
;
LJMP LA3D6
;
LJMP LDC78
;
LJMP LDC6E
;
LJMP LD84E
;
RET
;
NOP
NOP
LJMP LE99F
;
LJMP LD8AD
;
LJMP L9B8F
;
LJMP L9BCE
;
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP LDAA1
;
LJMP L9C24
;
LJMP L9C39
;
LJMP LA3A6
;
LJMP LA3CE
;
RET
;
NOP
NOP
LJMP LDBC4
;
LJMP LE78E
;
LJMP LE793
;
RET
;
NOP
NOP
LJMP L7BB2
;
LJMP L7BB2
;
LJMP L11FA
;
LJMP L1200
;
LJMP LA48B
;
LJMP LA141
;
LJMP L9FCD
;
LJMP LE558
;
LJMP LE558
;
LJMP LE558
;
LJMP LE558
;
LJMP L9F9C
;
LJMP LE558
;
LJMP LE823
;
LJMP L97DA
;
LJMP L9B2A
;
LJMP L7B91
;
LJMP LDA9C
;
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP L7BD7
;
LJMP L7BDA
;
RET
;
NOP
NOP
RET
;
NOP
NOP
LJMP LEAE7
;
LJMP LA161
;
LJMP L7BE3
;
LJMP LED61
;
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
;
L8551: RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
RET
;
NOP
NOP
NOP
INC P0
JB EXF2,L8551
MOVX @DPTR,A
PUSH DPL
PUSH DPH
PUSH B
LJMP L6107
;
MOV R7,#000H
LCALL L110A
MOV R7,#001H
LCALL L110A
MOV R7,#002H
LCALL L110A
MOV DPTR,#L5AEE
LJMP L8580
;
CLR A
MOV R3,A
MOV R5,#06AH
MOV R7,#047H
LCALL L1032
CLR A
MOV R3,A
MOV R5,#06AH
MOV R7,#046H
LCALL L1032
MOV DPTR,#L4631
MOVX A,@DPTR
ORL A,#080H
MOV R5,A
CLR A
MOV R3,A
MOV R7,#041H
LCALL L1032
MOV DPTR,#LF66D
LJMP L8580
;
MOV R7,A
LCALL L784C
LCALL L6EC7
MOV DPTR,#L9709
LJMP L8580
;
CLR EA
MOV A,04AH
CPL A
ANL A,04BH
MOV 032H,A
CLR C
RRC A
MOV 032H,A
MOV DPTR,#L44A8
LJMP L8580
;
SETB EA
MOV DPTR,#L45D9
LJMP L8580
;
MOV DPTR,#L57AF
MOVX A,@DPTR
MOV B,A
ANL A,#03FH
MOV DPTR,#L7F11
MOVX @DPTR,A
ORL PCON,#001H
NOP
NOP
MOV A,B
MOV DPTR,#L7F11
MOVX @DPTR,A
MOV DPTR,#L71EE
LJMP L8580
;
;
L860B: INC R1
;
L860C: INC R0
INC @R0
;
L860E: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RR A
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;
L863E: NOP
LJMP L0203
;
INC @R0
INC 005H
INC 008H
INC R0
INC R0
INC R0
INC R0
INC @R0
INC 005H
RR A
RR A
INC A
RR A
RR A
RR A
DEC @R1
INC R0
DEC @R1
RR A
RR A
INC A
INC A
INC A
INC A
INC A
INC R0
DEC @R1
INC @R0
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC A
INC @R1
INC R4
RRC A
DEC @R1
DEC @R1
DEC @R1
DEC @R1
INC A
INC A
INC A
INC A
INC A
DEC @R1
DEC @R1
DEC @R1
ADDC A,#0AAH
ADDC A,#0ADH
ADDC A,#0B0H
;
L8684: ADDC A,#0B4H
ADDC A,#0B7H
ADDC A,#0BAH
ADDC A,#0BDH
ADDC A,#0D4H
;
L868E: ADDC A,#0DCH
ADDC A,#0F3H
ADDC A,#0F6H
NOP
AJMP L8001
;
AJMP L8001
;
NOP
NOP
NOP
NOP
AJMP L8001
;
MOV C,010H
NOP
MOV C,011H
NOP
MOV C,012H
NOP
JNB P2.2,L86BE
NOP
MOV C,014H
NOP
MOV C,015H
NOP
MOV C,016H
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;
L86BE: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,017H
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,018H
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,019H
NOP
MOV C,01AH
NOP
;
L86EE: NOP
LJMP L0404
;
AJMP L8004
;
INC A
INC R6
INC A
INC R6
AJMP L8000
;
LJMP L0004
;
NOP
INC R0
NOP
JBC 000H,L_DoJT
 
; 8703
L_DoJT: AJMP L8000
;
LJMP L0004
;
NOP
INC R0
NOP
JBC 000H,L868E
JB 000H,L8751
NOP
SJMP L_JumpTable
 
; 8714 Jump table, 32 entries
L_JumpTable: LJMP L_JumpTable1
;
LJMP L9575
;
LJMP L965A
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9675
;
LJMP L9690
;
LJMP L96AE
;
LJMP L96C4
;
LJMP L96E2
;
LJMP L9714
;
LJMP L972D
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L9663
;
LJMP L974D
;
LJMP L975B
;
LJMP L9774
;
;
L8774: MOV A,R7
RL A
ADD A,R7
ADD A,#014H
PUSH ACC
CLR A
ADDC A,#087H
PUSH ACC
RET
;
LJMP L_InputReport20H
;
LJMP L_InputReport21H
;
LJMP L_InputReport22H
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_DataReport31H
;
LJMP L_DataReport32H
;
LJMP L_DataReport33H
;
LJMP L_DataReport34H
;
LJMP L_DataReport35H
;
LJMP L_DataReport36H
;
LJMP L_DataReport37H
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_InputReportInvalid
;
LJMP L_DataReport3DH
;
LJMP L_DataReport3EH
;
LJMP L_DataReport3FH
;
;
L87E1: MOV A,R5
RL A
ADD A,R5
ADD A,#081H
PUSH ACC
CLR A
ADDC A,#087H
PUSH ACC
RET
; 87EE
L_OutputReportTable:
LJMP L_OutputReport10H
;
LJMP L_OutputReport11H
;
LJMP L_OutputReport12H
;
LJMP L_OutputReport13H
;
LJMP L_OutputReport14H
;
LJMP L_OutputReport15H
;
LJMP L_OutputReport16H
;
LJMP L_OutputReport17H
;
LJMP L_OutputReport18H
;
LJMP L_OutputReport19H
;
LJMP L_OutputReport1AH
;
;
L880F: MOV A,R3
RL A
ADD A,R3
ADD A,#0EEH
PUSH ACC
CLR A
ADDC A,#087H
PUSH ACC
RET
;
;
L881C: MOV DPTR,#L35F8
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV R3,#000H
MOV R2,#010H
CLR A
MOV R5,A
MOV R7,A
LCALL L5181
MOV DPTR,#L35F0
LCALL LA630
;
L8834: MOV DPTR,#L35FA
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,#008H
JNC L8857
INC DPTR
MOVX A,@DPTR
JNB ACC.0,L8849
MOV R6,#000H
MOV R7,#000H
SJMP L884D
;
L8849: MOV R6,#002H
MOV R7,#000H
;
L884D: LCALL LA63B
MOV R7,#001H
LCALL L888B
SJMP L8834
;
L8857: MOV DPTR,#L35F1
LCALL LA630
;
L885D: MOV DPTR,#L35FA
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,#006H
JNC L8880
INC DPTR
MOVX A,@DPTR
JNB ACC.0,L8872
MOV R6,#000H
MOV R7,#000H
SJMP L8876
;
L8872: MOV R6,#002H
MOV R7,#000H
;
L8876: LCALL LA63B
MOV R7,#002H
LCALL L888B
SJMP L885D
;
L8880: MOV DPTR,#L7F21
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOV A,#03FH
MOVX @DPTR,A
RET
;
;
L888B: LCALL L5181
MOV DPTR,#L35FA
MOVX A,@DPTR
INC A
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
RRC A
MOVX @DPTR,A
RET
;
;
L889B: CLR A
MOV DPTR,#L35F0
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV R7,#004H
MOV R6,#008H
LCALL L881C
CLR A
MOV DPTR,#L35F2
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV R7,A
LJMP L91C4
;
MOV R7,#004H
MOV R6,#000H
LCALL L881C
CLR A
MOV R7,A
LJMP L91C4
;
MOV R7,#004H
MOV R6,#008H
LCALL L881C
CLR A
MOV R7,A
LJMP L91C4
;
;
L88CC: MOV DPTR,#L7F30
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R4,A
MOV DPTR,#L7F30
MOVX A,@DPTR
ORL A,R5
MOV R5,A
INC DPTR
MOVX A,@DPTR
ORL A,R4
MOV R4,A
MOV A,R5
CPL A
MOV R5,A
MOV A,R4
CPL A
MOV R4,A
MOV DPTR,#L35F0
MOV A,R5
MOVX @DPTR,A
INC DPTR
MOV A,R4
MOVX @DPTR,A
MOV A,R5
ANL A,#01FH
MOV 035H,#000H
MOV 034H,A
MOV R7,005H
MOV A,R7
ANL A,#0E0H
MOV R7,A
SWAP A
RRC A
ANL A,#007H
ORL 035H,A
CLR A
MOV A,R4
ANL A,#003H
MOV B,#008H
MUL AB
MOV R6,B
ORL 035H,A
MOV A,R6
ORL 034H,A
MOV A,R4
JNB ACC.2,L8916
ORL 035H,#080H
;
L8916: MOV R7,004H
MOV A,R4
ANL A,#038H
ADD A,ACC
ADD A,ACC
MOV R6,A
CLR A
MOV A,R6
ORL 034H,A
MOV DPTR,#L35F2
MOV A,034H
MOVX @DPTR,A
INC DPTR
MOV A,035H
MOVX @DPTR,A
MOV R7,A
MOV R6,034H
RET
;
LJMP L88CC
;
;
L8935: CLR C
RET
;
;
L8937: MOV R7,#004H
MOV R6,#008H
LJMP L881C
;
;
L893E: CLR A
MOV DPTR,#L7D22
MOVX @DPTR,A
MOV DPTR,#L7D24
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV R7,A
RET
;
;
L894D: MOV R7,#014H
LCALL L784C
MOV DPTR,#L7F60
MOV A,#0FFH
MOVX @DPTR,A
MOV 030H,#001H
MOV 032H,#002H
MOV DPTR,#L7F69
MOV A,030H
MOVX @DPTR,A
INC DPTR
MOV A,032H
MOVX @DPTR,A
INC DPTR
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L3520
MOV A,#064H
MOVX @DPTR,A
;
L8972: MOV DPTR,#L7F6B
MOVX A,@DPTR
JB ACC.1,L8981
MOV DPTR,#L3520
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
JNZ L8972
;
L8981: CLR A
MOV DPTR,#L7F6B
MOVX @DPTR,A
RET
;
;
L8987: CLR A
MOV DPTR,#L7F6B
MOVX @DPTR,A
MOV DPTR,#L7F60
MOV A,R5
MOVX @DPTR,A
MOV DPTR,#L7F69
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,#001H
MOVX @DPTR,A
RET
;
;
L899E: MOV DPTR,#L3521
MOV A,#0FFH
MOVX @DPTR,A
;
L89A4: MOV DPTR,#L7F6B
MOVX A,@DPTR
MOV R7,A
JB ACC.1,L89B4
MOV DPTR,#L3521
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
JNZ L89A4
;
L89B4: CLR A
MOV DPTR,#L7F6B
MOVX @DPTR,A
MOV A,R7
JB ACC.2,L89C3
MOV DPTR,#L3521
MOVX A,@DPTR
JNZ L89C6
;
L89C3: MOV R7,#003H
RET
;
;
L89C6: MOV R7,#001H
RET
;
;
L89C9: LCALL L899E
MOV A,R7
XRL A,#001H
JZ L89D7
LCALL L894D
MOV R7,#003H
RET
;
;
L89D7: MOV R7,#001H
RET
;
;
L89DA: CLR A
MOV R3,A
LCALL L8987
LCALL L89C9
RET
;
;
L89E3: MOV DPTR,#L7F61
MOV A,R5
MOVX @DPTR,A
MOV R5,007H
MOV R7,#001H
LCALL L89DA
RET
;
;
L89F0: MOV DPTR,#L3522
LCALL LA4BD
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#L3524
MOVX A,@DPTR
MOV R7,A
SETB C
SUBB A,#008H
JC L8A08
MOV R6,#008H
MOV R7,#008H
SJMP L8A08
;
L8A08: MOV DPTR,#L3526
MOV A,R7
MOVX @DPTR,A
;
L8A0D: MOV DPTR,#L3524
MOVX A,@DPTR
JZ L8A72
MOV R6,#07FH
MOV R7,#061H
MOV DPTR,#L3522
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#L3526
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L3526
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3525
MOVX A,@DPTR
MOV R5,A
CLR A
MOV R3,A
LCALL L8987
MOV DPTR,#L3524
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3526
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV R7,A
MOV DPTR,#L3524
MOVX @DPTR,A
MOV A,R6
MOV R5,A
MOV DPTR,#L3522
CLR A
MOV B,R5
LCALL L1C56
MOV A,R7
SETB C
SUBB A,#008H
JC L8A5D
MOV R7,#008H
SJMP L8A62
;
L8A5D: MOV DPTR,#L3524
MOVX A,@DPTR
MOV R7,A
;
L8A62: MOV DPTR,#L3526
MOV A,R7
MOVX @DPTR,A
LCALL L89C9
MOV A,R7
XRL A,#001H
JZ L8A0D
MOV R7,#003H
RET
;
;
L8A72: MOV R7,#001H
RET
;
;
L8A75: MOV DPTR,#L3527
LCALL LA4BD
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
SETB C
SUBB A,#002H
JC L8A8A
MOV A,#002H
MOVX @DPTR,A
;
L8A8A: MOV DPTR,#L352C
MOVX A,@DPTR
MOV R7,A
CLR C
MOV A,#008H
SUBB A,R7
MOV R7,A
MOV DPTR,#L3529
MOVX A,@DPTR
MOV R6,A
SETB C
SUBB A,R7
JC L8A9F
SJMP L8AA1
;
L8A9F: MOV R7,006H
;
L8AA1: MOV DPTR,#L352E
MOV A,R7
MOVX @DPTR,A
;
L8AA6: MOV DPTR,#L3529
MOVX A,@DPTR
JNZ L8AAF
LJMP L8B54
;
;
L8AAF: MOV DPTR,#L352C
MOVX A,@DPTR
MOV R5,A
CJNE A,#001H,L8AC1
MOV DPTR,#L352B
MOVX A,@DPTR
MOV DPTR,#L7F61
MOVX @DPTR,A
SJMP L8AD1
;
L8AC1: MOV DPTR,#L352A
MOVX A,@DPTR
MOV DPTR,#L7F61
MOVX @DPTR,A
MOV DPTR,#L352B
MOVX A,@DPTR
MOV DPTR,#L7F62
MOVX @DPTR,A
;
L8AD1: MOV A,#061H
ADD A,R5
MOV DPL,A
CLR A
ADDC A,#07FH
MOV R7,DPL
MOV R6,A
MOV DPTR,#L3527
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#L352E
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L352C
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L352E
MOVX A,@DPTR
ADD A,R7
MOV R7,A
MOV DPTR,#L352D
MOVX A,@DPTR
MOV R5,A
CLR A
MOV R3,A
LCALL L8987
MOV DPTR,#L3529
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L352E
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV R7,A
MOV DPTR,#L3529
MOVX @DPTR,A
MOV A,R6
MOV R5,A
MOV R4,#000H
MOV DPTR,#L3527
MOV A,R4
MOV B,R5
LCALL L1C56
MOV DPTR,#L352A
MOV A,R4
MOV B,R5
LCALL L1C56
MOV DPTR,#L352C
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,#008H
SUBB A,R6
MOV R6,A
MOV A,R7
SETB C
SUBB A,R6
JC L8B3C
MOV R7,006H
SJMP L8B41
;
L8B3C: MOV DPTR,#L3529
MOVX A,@DPTR
MOV R7,A
;
L8B41: MOV DPTR,#L352E
MOV A,R7
MOVX @DPTR,A
LCALL L89C9
MOV A,R7
XRL A,#001H
JNZ L8B51
LJMP L8AA6
;
;
L8B51: MOV R7,#003H
RET
;
;
L8B54: MOV R7,#001H
RET
;
;
L8B57: MOV R3,#001H
LJMP L8987
;
;
L8B5C: MOV DPTR,#L352F
LCALL LA4BD
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#L3531
MOVX A,@DPTR
MOV R7,A
SETB C
SUBB A,#008H
JC L8B74
MOV R6,#008H
MOV R7,#008H
SJMP L8B74
;
L8B74: MOV DPTR,#L3533
MOV A,R7
MOVX @DPTR,A
;
L8B79: MOV DPTR,#L3531
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3533
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV DPTR,#L3531
MOVX @DPTR,A
LCALL L89C9
MOV DPTR,#L3534
MOV A,R7
MOVX @DPTR,A
XRL A,#001H
JNZ L8BD3
MOV DPTR,#L352F
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV R4,#07FH
MOV R5,#06CH
MOV DPTR,#L3533
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L3531
MOVX A,@DPTR
MOV R7,A
JZ L8BD3
SETB C
SUBB A,#008H
JC L8BBC
MOV R6,#008H
MOV R7,#008H
SJMP L8BBC
;
L8BBC: MOV DPTR,#L3533
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L3532
MOVX A,@DPTR
MOV R5,A
LCALL L8B57
MOV DPTR,#L352F
CLR A
MOV B,#008H
LCALL L1C56
;
L8BD3: MOV DPTR,#L3534
MOVX A,@DPTR
MOV R7,A
CJNE A,#001H,L8BE1
MOV DPTR,#L3531
MOVX A,@DPTR
JNZ L8B79
;
L8BE1: RET
;
;
L8BE2: MOV DPTR,#L3535
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV R4,005H
MOV R2,003H
MOV A,R4
SETB C
SUBB A,#008H
JC L8BF8
MOV R7,#008H
SJMP L8BFA
;
L8BF8: MOV R7,004H
;
L8BFA: MOV R5,002H
LCALL L8B57
MOV DPTR,#L3535
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV R5,004H
MOV R4,002H
MOV R3,004H
LCALL L8B5C
RET
;
;
L8C11: MOV DPTR,#L7F0B
MOVX A,@DPTR
ANL A,#0FEH
ORL A,R7
MOVX @DPTR,A
RET
;
;
L8C1A: MOV DPTR,#L7F33
MOVX A,@DPTR
ANL A,#002H
MOV R7,A
MOV DPTR,#L3400
MOVX A,@DPTR
MOV R6,A
XRL A,R7
JZ L8C55
MOV A,R6
XRL A,#002H
JZ L8C34
INC DPTR
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
JNZ L8C5B
;
L8C34: MOV DPTR,#L3400
MOVX A,@DPTR
XRL A,#002H
MOVX @DPTR,A
INC DPTR
MOV A,#008H
MOVX @DPTR,A
INC DPTR
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#008H,L8C4F
CLR A
MOV DPTR,#L3471
MOVX @DPTR,A
;
L8C4F: CLR A
MOV DPTR,#L3474
MOVX @DPTR,A
RET
;
;
L8C55: MOV DPTR,#L3401
MOV A,#008H
MOVX @DPTR,A
;
L8C5B: RET
;
;
L8C5C: CLR A
MOV DPTR,#L3400
MOVX @DPTR,A
INC DPTR
MOV A,#008H
MOVX @DPTR,A
MOV R5,A
;
L8C66: MOV R7,005H
DEC R5
MOV A,R7
JZ L8C71
LCALL L8C1A
SJMP L8C66
;
L8C71: CLR A
MOV DPTR,#L3402
MOVX @DPTR,A
MOV DPTR,#L3404
MOVX @DPTR,A
RET
;
;
L8C7B: MOV DPTR,#L3537
MOV A,R7
MOVX @DPTR,A
MOVX A,@DPTR
SETB C
SUBB A,#008H
JC L8C89
MOV A,#008H
MOVX @DPTR,A
;
L8C89: LCALL L1248
JC L8CB4
MOV DPTR,#L3400
MOVX A,@DPTR
CJNE A,#002H,L8CB4
CLR A
MOV R5,A
MOV R7,#0A4H
LCALL L89E3
CJNE R7,#001H,L8CB4
MOV R7,#011H
LCALL L784C
MOV DPTR,#L3537
MOVX A,@DPTR
MOV R7,A
MOV R5,#0A4H
LCALL L8B57
MOV DPTR,#L3404
MOV A,#001H
MOVX @DPTR,A
;
L8CB4: RET
;
;
L8CB5: MOV DPTR,#L3538
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,#003H
MOVX @DPTR,A
MOV DPTR,#L3404
MOVX A,@DPTR
JZ L8CD9
CLR A
MOVX @DPTR,A
MOV R6,#034H
MOV R7,#005H
MOV DPTR,#L3538
MOVX A,@DPTR
MOV R5,A
MOV R3,#0A4H
LCALL L8B5C
MOV DPTR,#L3539
MOV A,R7
MOVX @DPTR,A
;
L8CD9: MOV DPTR,#L3539
MOVX A,@DPTR
XRL A,#001H
JZ L8CEF
MOV R6,#034H
MOV R7,#005H
MOV DPTR,#L3538
MOVX A,@DPTR
MOV R3,A
MOV R5,#0FFH
LCALL L7A03
;
L8CEF: MOV R6,#034H
MOV R7,#005H
MOV R4,#034H
MOV R5,#01AH
MOV DPTR,#L3538
MOVX A,@DPTR
MOV R3,A
LCALL L7195
MOV A,R7
JZ L8D15
MOV R6,#034H
MOV R7,#01AH
MOV R4,#034H
MOV R5,#005H
MOV DPTR,#L3538
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV R7,#001H
RET
;
;
L8D15: MOV R7,#000H
RET
;
;
L8D18: MOV DPTR,#L3512
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R6,A
MOV DPTR,#L3445
MOVX A,@DPTR
MOV R5,A
RRC A
RRC A
ANL A,#03FH
MOV R5,A
;
L8D29: MOV A,R6
CLR C
SUBB A,#004H
JNC L8D92
MOV DPTR,#L344B
MOVX A,@DPTR
JZ L8D39
MOV A,R5
JNB ACC.0,L8D53
;
L8D39: LCALL LA590
MOV A,#0FFH
LCALL LA59B
MOV A,#003H
MOV R0,003H
INC R0
SJMP L8D4A
;
L8D48: CLR C
RLC A
;
L8D4A: DJNZ R0,L8D48
ORL A,R4
MOV DPTR,#L7F47
MOVX @DPTR,A
SJMP L8D8A
;
L8D53: MOV A,R7
ADD A,ACC
ADD A,ACC
MOV R4,A
LCALL LA590
MOV A,R4
LCALL LA59B
CLR C
MOV A,#006H
SUBB A,R3
MOV R3,A
MOV A,#0C0H
MOV R0,003H
INC R0
SJMP L8D6E
;
L8D6C: CLR C
RRC A
;
L8D6E: DJNZ R0,L8D6C
CPL A
ANL A,R4
MOV DPTR,#L7F47
MOVX @DPTR,A
MOVX A,@DPTR
MOV R4,A
MOV A,R7
ANL A,#0C0H
MOV R2,A
MOV R0,003H
INC R0
SJMP L8D83
;
L8D81: CLR C
RRC A
;
L8D83: DJNZ R0,L8D81
ORL A,R4
MOV DPTR,#L7F47
MOVX @DPTR,A
;
L8D8A: INC R6
MOV A,R5
CLR C
RRC A
MOV R5,A
LJMP L8D29
;
;
L8D92: RET
;
;
L8D93: MOV DPTR,#L3445
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L_GPIO_port
MOVX A,@DPTR
ANL A,#0C3H
ORL A,R7
MOVX @DPTR,A
LJMP L8D18
;
;
L8DA3: MOV DPTR,#L3446
MOVX A,@DPTR
CJNE A,#0FFH,L8DBA
MOV DPTR,#L344C
MOVX A,@DPTR
CPL A
MOV R7,A
ADD A,ACC
ADD A,ACC
ANL A,#03CH
MOV R7,A
LCALL L8D93
;
L8DBA: RET
;
;
L8DBB: LCALL L741C
MOV DPTR,#L3447
LCALL L1FB5
MOV DPTR,#L565B
MOVX A,@DPTR
MOV R7,A
SETB C
SUBB A,#055H
JC L8DD5
CLR A
MOV DPTR,#L3446
MOVX @DPTR,A
SJMP L8DF7
;
L8DD5: MOV A,R7
CLR C
SUBB A,#044H
JC L8DE3
MOV DPTR,#L3446
MOV A,#020H
MOVX @DPTR,A
SJMP L8DF7
;
L8DE3: MOV A,R7
CLR C
SUBB A,#033H
JC L8DF1
MOV DPTR,#L3446
MOV A,#030H
MOVX @DPTR,A
SJMP L8DF7
;
L8DF1: MOV DPTR,#L3446
MOV A,#038H
MOVX @DPTR,A
;
L8DF7: MOV DPTR,#L3446
MOVX A,@DPTR
MOV R7,A
LJMP L8D93
;
;
L8DFF: LCALL L741C
MOV DPTR,#L3447
LCALL L1FB5
MOV DPTR,#L3446
MOV A,#03CH
MOVX @DPTR,A
MOV R7,A
LJMP L8D93
;
;
L8E12: MOV DPTR,#L3446
MOVX A,@DPTR
CJNE A,#0FFH,L8E1C
LCALL L8DBB
;
L8E1C: RET
;
;
L8E1D: MOV DPTR,#L3446
MOV A,#0FFH
MOVX @DPTR,A
LJMP L8DA3
;
;
L8E26: MOV DPTR,#L3446
MOVX A,@DPTR
CPL A
JZ L8E72
MOV DPTR,#L344D
MOVX A,@DPTR
JZ L8E41
LCALL L8E73
MOV DPTR,#L3517
LCALL LA4CF
JC L8E41
LJMP L8E1D
;
;
L8E41: MOV DPTR,#L3446
MOVX A,@DPTR
CJNE A,#03CH,L8E56
LCALL L8E73
MOV DPTR,#L3515
LCALL LA4CF
JC L8E72
LJMP L8DBB
;
;
L8E56: MOV DPTR,#L3447
LCALL L1F9D
LCALL L55B9
MOV R0,004H
MOV R1,005H
MOV R2,006H
MOV R3,007H
MOV DPTR,#L3513
LCALL LA4CF
JC L8E72
LCALL L8DFF
;
L8E72: RET
;
;
L8E73: INC DPTR
LCALL L1F9D
LCALL L55B9
MOV R0,004H
MOV R1,005H
MOV R2,006H
MOV R3,007H
RET
;
;
L8E83: MOVX @DPTR,A
LCALL L93FE
;
L8E87: LCALL L8E1D
CLR A
MOV R7,A
;
L8E8C: MOV DPTR,#L344C
MOV A,R7
MOVX @DPTR,A
LJMP L8DA3
;
; 8E94 Enable/disable LEDs (bits 0-3 of r7)
L_EnableLEDs: MOV DPTR,#L353A
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L344D
MOV A,#001H
MOVX @DPTR,A
LCALL L741C
MOV DPTR,#L344E
LCALL L1FB5
MOV DPTR,#L353A
MOVX A,@DPTR
MOV R7,A
LJMP L8E8C
;
; 8eb0 Store register a at address pointed by dptr, calls
 
8eb1
L_Store_A_at_DPTR: MOVX @DPTR,A
; 8eb1 Load address pointed by dptr to register r7, calls
 
8eb5
L_LOAD_DPTR_TO_R7: MOVX A,@DPTR
ANL A,#001H
MOV R7,A
; 8eb5 Enable Rumble
L_EnableRumble: MOV A,R7
JZ L8EBC
MOV R6,#002H
SJMP L8EBE
;
L8EBC: MOV R6,#000H
;
L8EBE: MOV R7,006H
MOV DPTR,#L_GPIO_port
MOVX A,@DPTR
ANL A,#0FDH
ORL A,R7
MOVX @DPTR,A
RET
;
;
L8EC9: MOV DPTR,#L7F03
MOVX A,@DPTR
ANL A,#03FH
ORL A,#080H
MOVX @DPTR,A
MOV DPTR,#L_SpeakerEnabled
MOVX A,@DPTR
ANL A,#0F7H
ORL A,#008H
MOVX @DPTR,A
RET
;
;
L8EDC: MOV DPTR,#L_SpeakerEnabled
MOVX A,@DPTR
ANL A,#0F7H
MOVX @DPTR,A
MOV DPTR,#L7F03
MOVX A,@DPTR
ANL A,#03FH
MOVX @DPTR,A
RET
;
;
L8EEB: MOV DPTR,#L_GPIO_port
MOVX A,@DPTR
ANL A,#0FEH
ORL A,R7
MOVX @DPTR,A
RET
;
;
L8EF4: MOV R5,#0B0H
MOV R7,#008H
LJMP L8B57
;
;
L8EFB: MOV R5,#037H
MOV R7,#0B0H
LCALL L89E3
LJMP L8EF4
;
;
L8F05: MOV R5,007H
MOV R6,#034H
MOV R7,#05FH
MOV R3,#0B0H
LCALL L8B5C
MOV R7,#001H
RET
;
;
L8F13: MOV R7,#00AH
LCALL L8F05
RET
;
;
L8F19: MOV R7,#00CH
LCALL L8F05
RET
;
;
L8F1F: MOV R7,#012H
LCALL L8F05
RET
;
; 8f25 UnmuteSpeaker (when R7 = 8)
L_UnMuteSpeaker: MOV DPTR,#L7F07
MOVX A,@DPTR
ANL A,#0F7H
ORL A,R7
MOVX @DPTR,A
RET
;
; 8f2e Enable Speaker
L_EnableSpeaker: MOV DPTR,#L7F04
MOVX A,@DPTR
ANL A,#0FCH
ORL A,#002H
MOVX @DPTR,A
MOV DPTR,#L_SpeakerEnabled
MOVX A,@DPTR
ANL A,#07FH
ORL A,#080H
MOVX @DPTR,A
MOV R7,#008H
LCALL L_UnMuteSpeaker
MOV DPTR,#L3452
MOV A,#001H
MOVX @DPTR,A
RET
;
; 8f4c Disable Speaker
L_DisableSpeaker: CLR A
MOV R7,A
LCALL L_UnMuteSpeaker
MOV DPTR,#L_SpeakerEnabled
MOVX A,@DPTR
ANL A,#07FH
MOVX @DPTR,A
MOV DPTR,#L7F04
MOVX A,@DPTR
ANL A,#0FCH
MOVX @DPTR,A
CLR A
MOV DPTR,#L3452
MOVX @DPTR,A
RET
;
;
L8F65: MOV DPTR,#L353B
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
CLR A
MOV DPTR,#L7F61
MOVX @DPTR,A
;
L8F75: MOV DPTR,#L353D
MOVX A,@DPTR
MOV R7,A
JZ L8FC8
CLR C
SUBB A,#007H
JC L8F87
MOV R6,#007H
MOV R7,#007H
SJMP L8F87
;
L8F87: MOV DPTR,#L353E
MOV A,R7
MOVX @DPTR,A
MOV R3,A
MOV R6,#07FH
MOV R7,#062H
MOV DPTR,#L353B
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
LCALL L7175
MOV DPTR,#L353E
MOVX A,@DPTR
INC A
MOV R7,A
CLR A
MOV R3,A
MOV R5,#0A2H
LCALL L8987
LCALL L899E
MOV DPTR,#L353D
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV R6,A
CLR C
MOV A,R7
SUBB A,R6
MOV DPTR,#L353D
MOVX @DPTR,A
MOV A,R6
MOV R7,A
MOV DPTR,#L353B
CLR A
MOV B,R7
LCALL L1C56
SJMP L8F75
;
L8FC8: RET
;
;
L8FC9: MOV DPTR,#L3452
MOVX A,@DPTR
JZ L8FEC
MOV DPTR,#L7F2F
MOVX A,@DPTR
JNB ACC.2,L8FDA
MOV R7,#001H
SJMP L8FDC
;
L8FDA: MOV R7,#000H
;
L8FDC: MOV DPTR,#L3453
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
XRL A,R7
JZ L8FE9
MOV R7,#001H
RET
;
;
L8FE9: MOV R7,#000H
RET
;
;
L8FEC: MOV R7,#000H
RET
;
;
L8FEF: MOV R1,007H
MOV A,R5
MOV R5,#000H
MOV R4,A
MOV A,R5
MOV R6,004H
MOV R0,#004H
;
L8FFA: XCH A,R6
MOV C,ACC.7
RRC A
XCH A,R6
RRC A
DJNZ R0,L8FFA
MOV R7,A
MOV A,R3
ANL A,#00FH
MOV R3,A
MOV A,R6
MOV R4,A
MOV A,R7
ORL A,R3
MOV R5,A
CLR C
MOV DPTR,#L3431
MOVX A,@DPTR
SUBB A,R5
MOV A,R4
XRL A,#080H
MOV R0,A
MOV DPTR,#L3430
MOVX A,@DPTR
XRL A,#080H
SUBB A,R0
JC L902D
INC DPTR
MOVX A,@DPTR
SUBB A,R5
MOV 035H,A
MOV DPTR,#L3430
MOVX A,@DPTR
SUBB A,R4
MOV 034H,A
SJMP L9032
;
L902D: CLR A
MOV 034H,A
MOV 035H,A
;
L9032: MOV A,034H
SWAP A
MOV R0,A
ANL A,#0F0H
XCH A,R0
XRL A,R0
MOV A,035H
SWAP A
ANL A,#00FH
ORL A,R0
MOV 032H,A
MOV R6,#000H
ADD A,035H
MOV R7,A
MOV A,R6
ADDC A,034H
MOV R6,A
MOV A,032H
CLR C
RRC A
MOV R2,#000H
ADD A,R7
MOV R7,A
MOV A,R2
ADDC A,R6
MOV R6,A
MOV A,R7
ADD A,ACC
MOV R5,A
MOV A,R6
RLC A
MOV R4,A
CLR C
MOV A,R5
SUBB A,#0FFH
MOV A,R4
XRL A,#080H
SUBB A,#08FH
JC L906C
MOV R4,#00FH
MOV R5,#0FFH
;
L906C: MOV B,#002H
MOV A,R1
MOV DPTR,#L3436
LCALL L1FF2
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV R6,004H
MOV R0,#004H
;
L907F: XCH A,R6
MOV C,ACC.7
RRC A
XCH A,R6
RRC A
DJNZ R0,L907F
MOV R7,A
MOV 032H,A
MOV A,#03CH
ADD A,R1
MOV DPL,A
CLR A
ADDC A,#034H
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
MOV R7,005H
MOV A,R7
SWAP A
ANL A,#0F0H
MOV R7,A
MOV A,#03FH
ADD A,R1
MOV DPL,A
CLR A
ADDC A,#034H
MOV DPH,A
MOV A,R7
MOVX @DPTR,A
MOV A,#042H
ADD A,R1
MOV DPL,A
CLR A
ADDC A,#034H
MOV DPH,A
MOVX A,@DPTR
CJNE A,032H,L90BB
MOV R7,#000H
SJMP L90BD
;
L90BB: MOV R7,#001H
;
L90BD: RET
;
;
L90BE: MOV DPTR,#L353F
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
CLR A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L57B0
MOVX A,@DPTR
MOV R7,A
LCALL L12A2
MOV DPTR,#L57AF
MOVX A,@DPTR
ANL A,#060H
ORL A,#080H
MOV R7,A
LCALL L129C
MOV DPTR,#L353F
MOVX A,@DPTR
MOV DPTR,#L860B
MOVC A,@A+DPTR
MOV R7,A
MOV DPTR,#L7F01
MOVX A,@DPTR
ANL A,#0E0H
MOV R6,A
MOV A,R7
ORL A,R6
MOVX @DPTR,A
MOV DPTR,#L7F0D
MOVX A,@DPTR
ORL A,#001H
MOVX @DPTR,A
;
L90F7: MOV DPTR,#L7F0D
MOVX A,@DPTR
JB ACC.0,L90F7
LCALL LA527
;
L9101: MOV DPTR,#L3540
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L353F
MOVX A,@DPTR
CLR C
SUBB A,R7
JNC L914F
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L860C
MOVC A,@A+DPTR
MOV R6,A
MOV DPTR,#L7F01
MOVX A,@DPTR
ANL A,#0E0H
MOV R5,A
MOV A,R6
ORL A,R5
MOVX @DPTR,A
MOV DPTR,#L7F0D
MOVX A,@DPTR
ORL A,#001H
MOVX @DPTR,A
MOV DPTR,#L3541
MOVX A,@DPTR
MOV R6,A
PUSH 006H
INC DPTR
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
LCALL L8FEF
POP ACC
ORL A,R7
MOV DPTR,#L3541
MOVX @DPTR,A
MOV DPTR,#L353F
MOVX A,@DPTR
INC A
MOVX @DPTR,A
;
L9143: MOV DPTR,#L7F0D
MOVX A,@DPTR
JB ACC.0,L9143
LCALL LA527
SJMP L9101
;
L914F: MOV DPTR,#L3541
MOVX A,@DPTR
MOV R6,A
PUSH 006H
MOV DPTR,#L353F
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3542
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
LCALL L8FEF
POP ACC
ORL A,R7
MOV DPTR,#L3541
MOVX @DPTR,A
MOV DPTR,#L57AF
MOVX A,@DPTR
ANL A,#07FH
MOV R7,A
LCALL L129C
MOV DPTR,#L3541
MOVX A,@DPTR
MOV R7,A
RET
;
;
L917D: MOV R6,#034H
MOV R7,#042H
MOV R4,#034H
MOV R5,#03CH
MOV R3,#003H
LJMP L7175
;
;
L918A: MOV DPTR,#L3544
MOV A,R5
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV DPTR,#L3544
MOVX A,@DPTR
MOV R3,A
ADD A,#03CH
LCALL L91B1
MOV DPTR,#L3544
MOVX A,@DPTR
MOV R3,A
ADD A,#042H
MOV DPL,A
CLR A
ADDC A,#034H
MOV R7,DPL
MOV R6,A
MOV A,#03CH
ADD A,R3
LJMP L91B1
;
;
L91B1: MOV DPL,A
CLR A
ADDC A,#034H
MOV R5,DPL
MOV R4,A
MOV DPTR,#L3545
MOVX A,@DPTR
CLR C
SUBB A,R3
INC A
MOV R3,A
LJMP L7175
;
;
L91C4: MOV DPTR,#L3546
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L3458
MOVX A,@DPTR
DEC A
JZ L91F1
DEC A
JZ L9218
ADD A,#002H
JNZ L9222
MOV DPTR,#L3546
MOVX A,@DPTR
JZ L9222
LCALL L741C
MOV DPTR,#L3459
LCALL L1FB5
MOV DPTR,#L3458
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L345D
MOVX @DPTR,A
RET
;
;
L91F1: MOV DPTR,#L3546
MOVX A,@DPTR
JZ L9218
MOV DPTR,#L3459
LCALL L1F9D
LCALL L55B9
CLR A
MOV R3,#040H
MOV R2,#00BH
MOV R1,A
MOV R0,A
SETB C
LCALL L1EF4
JNC L9222
MOV DPTR,#L3458
MOV A,#002H
MOVX @DPTR,A
MOV DPTR,#L345D
MOVX @DPTR,A
RET
;
;
L9218: MOV DPTR,#L3546
MOVX A,@DPTR
JNZ L9222
MOV DPTR,#L3458
MOVX @DPTR,A
;
L9222: RET
;
;
L9223: LCALL L88CC
MOV DPTR,#L3547
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
LCALL LA4ED
JNC L923A
CLR A
MOV DPTR,#L3547
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
;
L923A: MOV DPTR,#L3547
MOVX A,@DPTR
INC DPTR
JNB ACC.5,L924C
MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#008H,L924C
LCALL LDA9C
;
L924C: MOV DPTR,#L3547
MOVX A,@DPTR
INC DPTR
JNB ACC.7,L9258
MOV R7,#001H
SJMP L925A
;
L9258: MOV R7,#000H
;
L925A: LCALL L91C4
MOV DPTR,#L3547
MOVX A,@DPTR
INC DPTR
JNB ACC.6,L9269
MOV R7,#001H
SJMP L926B
;
L9269: MOV R7,#000H
;
L926B: LCALL LE8C8
MOV DPTR,#L5631
MOVX A,@DPTR
MOV R7,A
XRL A,#00AH
JZ L927D
MOV DPTR,#L44A9
MOVX A,@DPTR
JNZ L9291
;
L927D: MOV DPTR,#L3547
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
JNB ACC.0,L9291
JNB ACC.1,L9291
MOV DPTR,#L34A0
MOV A,#001H
MOVX @DPTR,A
;
L9291: MOV DPTR,#L3547
MOVX A,@DPTR
ANL A,#01FH
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#09FH
MOVX @DPTR,A
CLR A
MOV R6,A
MOV A,R7
CJNE A,#008H,L92BB
MOV DPTR,#L3456
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#L3547
MOVX A,@DPTR
XRL A,R4
JNZ L92B5
INC DPTR
MOVX A,@DPTR
XRL A,R5
;
L92B5: JZ L92D5
MOV R6,#001H
SJMP L92D5
;
L92BB: MOV DPTR,#L3456
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
CPL A
MOV R5,A
MOV A,R4
CPL A
MOV R4,A
MOV DPTR,#L3547
MOVX A,@DPTR
ANL A,R4
MOV R4,A
INC DPTR
MOVX A,@DPTR
ANL A,R5
ORL A,R4
JZ L92D5
MOV R6,#001H
;
L92D5: MOV DPTR,#L3547
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L3456
XCH A,R5
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV R7,006H
RET
;
;
L92E7: CLR C
MOV A,R6
SUBB A,#017H
JNC L9306
MOV A,R5
SUBB A,#000H
MOV A,R4
SUBB A,#017H
JNC L9306
MOV A,R7
ADD A,R5
MOV R7,A
MOV A,R6
ADDC A,R4
MOV R6,A
SETB C
MOV A,R7
SUBB A,#000H
MOV A,R6
SUBB A,#017H
JNC L9306
SJMP L9307
;
L9306: CLR C
;
L9307: RET
;
;
L9308: MOV DPTR,#L3549
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV A,R5
ADD A,#070H
MOV R7,A
CLR A
ADDC A,R4
MOV R6,A
MOV R5,003H
MOV R4,#000H
MOV DPTR,#L3549
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#L5B5D
MOV A,#0A0H
MOVX @DPTR,A
LCALL L12D2
MOV A,R7
JNZ L9332
MOV R7,A
SJMP L9334
;
L9332: MOV R7,#009H
;
L9334: RET
;
;
L9335: MOV A,R7
ADD A,#070H
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A
MOV R4,#000H
MOV R2,#034H
MOV R3,#089H
MOV DPTR,#L5C06
MOV A,#0A0H
MOVX @DPTR,A
LCALL L12CC
MOV A,R7
JNZ L9351
MOV R7,A
SJMP L9353
;
L9351: MOV R7,#009H
;
L9353: RET
;
;
L9354: MOV R4,005H
MOV R5,003H
MOV A,R4
MOV R3,A
MOV R2,#000H
MOV DPTR,#L352C
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L354F
MOVX A,@DPTR
MOV DPTR,#L352D
MOVX @DPTR,A
LCALL L8A75
CJNE R7,#001H,L9373
MOV R7,#000H
RET
;
;
L9373: MOV R7,#007H
RET
;
;
L9376: MOV DPTR,#L3550
LCALL LA4C0
MOV A,R3
MOVX @DPTR,A
MOV R6,#035H
MOV R7,#050H
MOVX A,@DPTR
MOV R3,A
MOV R5,#001H
LCALL L89F0
CJNE R7,#001H,L93A1
MOV R6,#034H
MOV R7,#089H
MOV DPTR,#L3551
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
LCALL L8BE2
CJNE R7,#001H,L93A1
MOV R7,#000H
RET
;
;
L93A1: MOV R7,#007H
RET
;
;
L93A4: MOV DPTR,#L3555
MOV A,R4
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
MOV R5,003H
MOV DPTR,#L3555
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
MOV DPTR,#L352C
MOV A,#002H
MOVX @DPTR,A
MOV DPTR,#L3558
MOVX A,@DPTR
MOV DPTR,#L352D
MOVX @DPTR,A
LCALL L8A75
CJNE R7,#001H,L93CD
MOV R7,#000H
RET
;
;
L93CD: MOV R7,#007H
RET
;
;
L93D0: MOV DPTR,#L3559
LCALL LA4BD
MOV A,R3
MOVX @DPTR,A
MOV R6,#035H
MOV R7,#059H
MOVX A,@DPTR
MOV R3,A
MOV R5,#002H
LCALL L89F0
CJNE R7,#001H,L93FB
MOV R6,#034H
MOV R7,#089H
MOV DPTR,#L355B
MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
MOV R3,A
LCALL L8BE2
CJNE R7,#001H,L93FB
MOV R7,#000H
RET
;
;
L93FB: MOV R7,#007H
RET
;
;
L93FE: CLR A
MOV R7,A
LCALL L_EnableRumble
CLR A
MOV R7,A
LCALL L8EEB
LCALL L8EDC
LJMP L_DisableSpeaker
;
;
L940E: MOV R0,#0AAH
MOV R4,#034H
MOV R5,#001H
MOV R3,#0FFH
MOV R2,#086H
MOV R1,#09FH
MOV R6,#000H
MOV R7,#04FH
LJMP L21F1
 
; Initialize variables (notably request flags)
; 9421
L_InitVariables: LCALL L940E
MOV DPTR,#L3471
MOV A,#030H
MOVX @DPTR,A
CLR A
MOV DPTR,#L349C
MOVX @DPTR,A
MOV DPTR,#L3476
MOVX @DPTR,A
MOV DPTR,#L3474
MOVX @DPTR,A
MOV DPTR,#L347A
MOVX @DPTR,A
MOV DPTR,#L347C
MOVX @DPTR,A
MOV DPTR,#L3485
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L3499
MOVX @DPTR,A
MOV DPTR,#L3453
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L344D
MOVX @DPTR,A
MOV DPTR,#L3510
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L349B
MOVX @DPTR,A
MOV DPTR,#L349A
MOVX @DPTR,A
MOV DPTR,#L34A8
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
RET
;
;
L9468: MOV R3,#001H
MOV R2,#034H
MOV R1,#0A2H
MOV DPTR,#L5C5C
MOV A,#006H
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
CLR 022H
CLR A
MOV R5,A
LJMP L122A
;
;
L947D: MOV R6,#034H
MOV R7,#0A2H
MOV R5,#006H
LCALL L7B6A
LJMP L9468
;
;
L9489: MOV R6,#038H
MOV R7,#041H
MOV R4,#034H
MOV R5,#0A2H
MOV R3,#006H
LCALL L7195
MOV A,R7
JZ L949C
MOV R7,#001H
RET
;
;
L949C: MOV R7,#000H
RET
;
;
L949F: LCALL LA5F8
MOV DPTR,#L7F74
MOV A,#0B7H
MOVX @DPTR,A
MOV DPTR,#L7E49
MOV A,#004H
MOVX @DPTR,A
MOV DPTR,#L7E45
MOV A,#0D0H
MOVX @DPTR,A
MOV DPTR,#L5895
MOV A,#001H
MOVX @DPTR,A
CLR A
MOV DPTR,#L55A9
MOVX @DPTR,A
MOV DPTR,#L5595
MOV A,#0FAH
MOVX @DPTR,A
MOV DPTR,#L5893
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L349E
MOVX A,@DPTR
JZ L94D4
LJMP L9559
;
;
L94D4: LCALL LE459
MOV DPTR,#L7F48
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L7F05
MOVX A,@DPTR
ANL A,#0BFH
MOVX @DPTR,A
MOV R6,#034H
MOV R7,#000H
MOV R5,#019H
LCALL L7B6A
MOV R7,#001H
LCALL L8C11
LCALL L889B
LCALL L12AE
MOV R2,006H
MOV R1,007H
MOV R3,#001H
MOV R0,#02FH
MOV R4,#034H
MOV R5,#001H
MOV R6,#000H
MOV R7,#007H
LCALL L21F1
MOV DPTR,#L34F9
MOVX A,@DPTR
ANL A,#00FH
ORL A,#0A0H
MOVX @DPTR,A
ANL A,#0F0H
ORL A,#001H
MOVX @DPTR,A
MOV DPTR,#L345E
MOV A,#037H
MOVX @DPTR,A
CLR A
MOV DPTR,#L3403
LCALL L8E83
LCALL L8C5C
LCALL L_InitVariables
LCALL LA617
CLR A
MOV DPTR,#L345D
MOVX @DPTR,A
MOV DPTR,#L349F
MOVX @DPTR,A
MOV DPTR,#L349E
INC A
LCALL LA57D
INC DPTR
MOVX @DPTR,A
MOV R3,#001H
MOV R2,#034H
MOV R1,#0A2H
MOV DPTR,#L5CDA
MOV A,#006H
MOVX @DPTR,A
CLR A
MOV R5,A
LCALL L1224
JC L956A
LCALL L947D
SJMP L956A
;
L9559: MOV R3,#001H
MOV R2,#056H
MOV R1,#05DH
MOV DPTR,#L4064
LCALL L1F9D
CLR 01CH
LCALL L4280
;
L956A: SETB C
RET
;
; 956C Jump 1
L_JumpTable1: LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L9575: MOV DPTR,#L3485
MOVX A,@DPTR
JZ L957E
LJMP L9651
;
;
L957E: MOV DPTR,#L3481
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L3487
XCH A,R7
MOVX @DPTR,A
INC DPTR
LCALL LA549
MOV R7,A
JZ L9599
INC DPTR
MOVX A,@DPTR
ANL A,#0FEH
MOV R6,A
CJNE R6,#0A0H,L95B5
;
L9599: MOV A,R7
JZ L959F
LJMP L963A
;
;
L959F: MOV DPTR,#L3481
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
LCALL L92E7
JC L95B5
LJMP L963A
;
;
L95B5: SETB C
MOV DPTR,#L3484
MOVX A,@DPTR
SUBB A,#010H
MOV DPTR,#L3483
MOVX A,@DPTR
SUBB A,#000H
JC L95C8
MOV R7,#010H
SJMP L95CD
;
L95C8: MOV DPTR,#L3484
MOVX A,@DPTR
MOV R7,A
;
L95CD: MOV DPTR,#L3486
LCALL LA549
DEC A
JZ L95EA
DEC A
JZ L95FF
ADD A,#002H
JNZ L9611
LCALL LA501
LCALL L9335
MOV DPTR,#L3499
MOV A,R7
MOVX @DPTR,A
SJMP L9617
;
L95EA: MOV DPTR,#L3482
LCALL LA507
MOV DPTR,#L3480
MOVX A,@DPTR
MOV R3,A
LCALL L9376
MOV DPTR,#L3499
MOV A,R7
MOVX @DPTR,A
SJMP L9617
;
L95FF: LCALL LA501
MOV DPTR,#L3480
MOVX A,@DPTR
MOV R3,A
LCALL L93D0
MOV DPTR,#L3499
MOV A,R7
MOVX @DPTR,A
SJMP L9617
;
L9611: MOV DPTR,#L3499
MOV A,#006H
MOVX @DPTR,A
;
L9617: MOV DPTR,#L3486
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3481
CLR A
MOV B,R7
LCALL L1C56
MOV DPTR,#L3486
MOVX A,@DPTR
MOV R7,A
CLR C
MOV DPTR,#L3484
MOVX A,@DPTR
SUBB A,R7
MOVX @DPTR,A
MOV DPTR,#L3483
MOVX A,@DPTR
SUBB A,#000H
MOVX @DPTR,A
SJMP L9640
;
L963A: MOV DPTR,#L3499
MOV A,#008H
MOVX @DPTR,A
;
L9640: MOV DPTR,#L3485
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L3499
MOVX A,@DPTR
JZ L9651
CLR A
MOV DPTR,#L3486
MOVX @DPTR,A
;
L9651: LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L965A: LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L9663: LCALL L8FC9
MOV DPTR,#L355D
MOV A,R7
MOVX @DPTR,A
LCALL L9223
MOV DPTR,#L355D
MOVX A,@DPTR
ORL A,R7
MOV R7,A
RET
;
;
L9675: MOV R5,#002H
CLR A
MOV R7,A
LCALL L90BE
MOV DPTR,#L355E
LCALL LA50F
MOV DPTR,#L355E
MOVX @DPTR,A
LCALL L9223
MOV DPTR,#L355E
MOVX A,@DPTR
ORL A,R7
MOV R7,A
RET
;
;
L9690: MOV R7,#008H
LCALL L8C7B
MOV R7,#008H
LCALL L8CB5
MOV DPTR,#L355F
LCALL LA50F
MOV DPTR,#L355F
MOVX @DPTR,A
LCALL L9223
MOV DPTR,#L355F
MOVX A,@DPTR
ORL A,R7
MOV R7,A
RET
;
;
L96AE: LCALL L8EFB
MOV R5,#002H
CLR A
MOV R7,A
LCALL L90BE
LCALL L8F19
LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L96C4: MOV R7,#013H
LCALL L8C7B
MOV R7,#013H
LCALL L8CB5
MOV DPTR,#L3560
LCALL LA50F
MOV DPTR,#L3560
MOVX @DPTR,A
LCALL L9223
MOV DPTR,#L3560
MOVX A,@DPTR
ORL A,R7
MOV R7,A
RET
;
;
L96E2: MOV R7,#010H
LCALL L8C7B
MOV R5,#002H
CLR A
MOV R7,A
LCALL L90BE
MOV DPTR,#L3561
MOV A,R7
MOVX @DPTR,A
MOVX A,@DPTR
MOV R6,A
PUSH 006H
MOV R7,#010H
LCALL L8CB5
POP ACC
ORL A,R7
MOV R7,A
MOV DPTR,#L3561
LCALL LA510
MOV DPTR,#L3561
;
L9709: MOVX @DPTR,A
LCALL L9223
MOV DPTR,#L3561
MOVX A,@DPTR
ORL A,R7
MOV R7,A
RET
;
;
L9714: LCALL L8EFB
LCALL L8F13
MOV R7,#009H
LCALL L8C7B
MOV R7,#009H
LCALL L8CB5
LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L972D: LCALL L8EFB
MOV R5,#002H
CLR A
MOV R7,A
LCALL L90BE
LCALL L8F13
MOV R7,#006H
LCALL L8C7B
MOV R7,#006H
LCALL L8CB5
LCALL L8FC9
LCALL L9223
MOV R7,#001H
RET
;
;
L974D: LCALL L9223
MOV R7,#015H
LCALL L8C7B
MOV R7,#015H
LCALL L8CB5
RET
;
;
L975B: LCALL L8EFB
CLR A
MOV R5,A
MOV R7,A
LCALL L90BE
MOV R5,#002H
MOV R7,#002H
LCALL L90BE
LCALL L8F1F
LCALL L9223
MOV R7,#001H
RET
;
;
L9774: LCALL L8EF4
MOV R5,#001H
MOV R7,#001H
LCALL L90BE
LCALL L8F1F
LCALL L9223
MOV R7,#001H
RET
;
;
L9787: MOV DPTR,#L5631
MOVX A,@DPTR
XRL A,#008H
JZ L9792
MOV R7,#030H
RET
;
;
L9792: MOV DPTR,#L3477
MOVX A,@DPTR
JZ L979B
MOV R7,#022H
RET
;
;
L979B: MOV DPTR,#L347A
MOVX A,@DPTR
JNZ L97A7
MOV DPTR,#L3402
MOVX A,@DPTR
JZ L97AA
;
L97A7: MOV R7,#020H
RET
;
;
L97AA: MOV DPTR,#L347C
MOVX A,@DPTR
JZ L97B3
MOV R7,#021H
RET
;
;
L97B3: MOV DPTR,#L3471
MOVX A,@DPTR
MOV R7,A
RET
;
;
L97B9: MOV A,R7
JZ L97C9
ADD A,#0E0H
MOV R7,A
LCALL L8774
MOV DPTR,#L347B
MOV A,R7
MOVX @DPTR,A
SJMP L97D1
;
L97C9: LCALL L9663
CLR A
MOV DPTR,#L347B
MOVX @DPTR,A
;
L97D1: LCALL L8C1A
MOV DPTR,#L347B
MOVX A,@DPTR
MOV R7,A
RET
;
;
L97DA: MOV DPTR,#L3472
MOVX A,@DPTR
MOV R7,A
CJNE A,#03EH,L97EA
MOV DPTR,#L3471
MOV A,#03FH
MOVX @DPTR,A
SJMP L97F4
;
L97EA: MOV A,R7
CJNE A,#03FH,L97F4
MOV DPTR,#L3471
MOV A,#03EH
MOVX @DPTR,A
;
L97F4: MOV DPTR,#L3472
MOVX A,@DPTR
MOV R7,A
LCALL L97B9
RET
;
; 97FD Input Report Invalid
L_InputReportInvalid: MOV DPTR,#L3453
MOVX A,@DPTR
JZ L9809
MOV R4,#080H
MOV R5,#000H
SJMP L980D
;
L9809: MOV R4,#000H
MOV R5,#000H
;
L980D: MOV DPTR,#L3456
MOVX A,@DPTR
ORL A,R4
MOV DPTR,#L34FB
MOVX @DPTR,A
MOV DPTR,#L3457
MOVX A,@DPTR
ORL A,R5
MOV DPTR,#L34FC
MOVX @DPTR,A
MOV A,R7
JZ L9828
MOV DPTR,#L3453
MOVX A,@DPTR
INC DPTR
MOVX @DPTR,A
;
L9828: RET
;
; 9829 Data Report 31H
L_DataReport31H: MOV DPTR,#L3562
MOV A,R7
MOVX @DPTR,A
MOV R6,#034H
MOV R7,#0FDH
MOV R3,#002H
CLR A
MOV R5,A
LCALL L918A
MOV DPTR,#L3562
MOVX A,@DPTR
MOV R7,A
LCALL L_InputReportInvalid
MOV DPTR,#L34FB
PUSH DPH
PUSH DPL
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L343F
MOVX A,@DPTR
ANL A,#0C0H
MOV R6,A
CLR C
RRC A
MOV R6,A
MOV A,R7
ORL A,R6
POP DPL
POP DPH
MOVX @DPTR,A
MOV DPTR,#L34FC
PUSH DPH
PUSH DPL
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3441
MOVX A,@DPTR
ANL A,#080H
MOV R6,A
CLR C
RRC A
MOV R6,A
MOV DPTR,#L3440
MOVX A,@DPTR
ANL A,#080H
MOV R5,A
RRC A
RRC A
ANL A,#03FH
ORL A,R6
MOV R6,A
MOV A,R7
ORL A,R6
POP DPL
POP DPH
MOVX @DPTR,A
RET
;
; 9883 R7 Extension Bytes
L_ExtensionBytes: MOV DPTR,#L3563
MOV A,R7
MOVX @DPTR,A
MOV R3,005H
MOV R6,#034H
MOV R7,#0FDH
MOV R4,#034H
MOV R5,#01AH
LCALL L7175
MOV DPTR,#L3563
MOVX A,@DPTR
MOV R7,A
LJMP L_InputReportInvalid
;
; 989D Data Report 32H
L_DataReport32H: MOV R5,#008H
LJMP L_ExtensionBytes
;
; 98A2 Data Report 33H
L_DataReport33H: MOV DPTR,#L3564
LCALL LA5A6
MOV R3,#00CH
LCALL L7175
MOV DPTR,#L3564
MOVX A,@DPTR
MOV R7,A
LJMP L_DataReport31H
;
; 98B5 Data Report 34H
L_DataReport34H: MOV R5,#013H
LJMP L_ExtensionBytes
;
; 98BA Data Report 35H
L_DataReport35H: MOV DPTR,#L3565
MOV A,R7
MOVX @DPTR,A
MOV R6,#035H
MOV R7,#000H
MOV R4,#034H
MOV R5,#01AH
MOV R3,#010H
LCALL L7175
MOV DPTR,#L3565
MOVX A,@DPTR
MOV R7,A
LJMP L_DataReport31H
;
; 98D4 Data Report 36H
L_DataReport36H: MOV DPTR,#L3566
MOV A,R7
MOVX @DPTR,A
MOV R6,#034H
MOV R7,#0FDH
MOV R4,#034H
MOV R5,#05FH
MOV R3,#00AH
LCALL L7175
MOV R6,#035H
MOV R7,#007H
MOV R4,#034H
MOV R5,#01AH
MOV R3,#009H
LCALL L7175
MOV DPTR,#L3566
MOVX A,@DPTR
MOV R7,A
LJMP L_InputReportInvalid
;
; 98FB Data Report 37H
L_DataReport37H: MOV DPTR,#L3567
LCALL LA5A6
MOV R3,#00AH
LCALL L7175
MOV R6,#035H
MOV R7,#00AH
MOV R4,#034H
MOV R5,#01AH
MOV R3,#006H
LCALL L7175
MOV DPTR,#L3567
MOVX A,@DPTR
MOV R7,A
LJMP L_DataReport31H
;
; 991B Data Report 3DH
L_DataReport3DH: MOV R6,#034H
MOV R7,#0FBH
MOV R4,#034H
MOV R5,#01AH
MOV R3,#015H
LJMP L7175
;
; 9928 Data Report 3EH
L_DataReport3EH: LCALL LA5B1
LCALL L7175
MOV DPTR,#L343C
LCALL LA4A3
MOV DPTR,#L34FB
PUSH DPH
PUSH DPL
LCALL LA5D2
MOV DPTR,#L343F
MOVX A,@DPTR
ANL A,#080H
ORL A,R5
MOV R5,A
MOV A,R6
ORL A,R5
POP DPL
POP DPH
LCALL LA538
LJMP L917D
;
; 9952 Data Report 3FH
L_DataReport3FH: LCALL LA5B1
LCALL L7175
MOV DPTR,#L343D
LCALL LA4A3
SWAP A
ANL A,#0F0H
MOV R7,A
MOV DPTR,#L34FB
PUSH DPH
PUSH DPL
LCALL LA5D2
MOV DPTR,#L3440
MOVX A,@DPTR
ANL A,#080H
ORL A,R5
MOV R5,A
MOV A,R6
ORL A,R5
POP DPL
POP DPH
LCALL LA538
LJMP L917D
 
 
;9980  Bluetooth input report handler (ID 0x20)
;      Status information message formatting
;      Very interesting, contains a lot of hints on the
 
usage of variables
;      in the 34xx-35xx area
 
L_InputReport20H: MOV R6,007H
MOV DPTR,#L34FA
MOV A,#020H
MOVX @DPTR,A
MOV DPTR,#L344B
MOVX A,@DPTR
JZ L9992
MOV R7,#001H
SJMP L9994
;
L9992: MOV R7,#000H
;
L9994: MOV A,R7
ANL A,#001H
MOV R7,A
MOV DPTR,#L34FD
MOVX A,@DPTR
ANL A,#0FEH
ORL A,R7
MOVX @DPTR,A
MOV DPTR,#L3400
MOVX A,@DPTR
JZ L99AA
MOV R7,#001H
SJMP L99AC
;
L99AA: MOV R7,#000H
;
L99AC: MOV A,R7
ANL A,#001H
MOV R7,A
ADD A,ACC
MOV R7,A
MOV DPTR,#L34FD
MOVX A,@DPTR
ANL A,#0FDH
ORL A,R7
MOVX @DPTR,A
MOV DPTR,#L3452
MOVX A,@DPTR
JZ L99C5
MOV R7,#001H
SJMP L99C7
;
L99C5: MOV R7,#000H
;
L99C7: MOV A,R7
ANL A,#001H
MOV R7,A
ADD A,ACC
ADD A,ACC
MOV R7,A
MOV DPTR,#L34FD
MOVX A,@DPTR
ANL A,#0FBH
ORL A,R7
MOVX @DPTR,A
MOV DPTR,#L_GPIO_port
MOVX A,@DPTR
JB ACC.0,L99EA
MOV DPTR,#L_SpeakerEnabled
MOVX A,@DPTR
JNB ACC.3,L99EA
MOV R7,#001H
SJMP L99EC
;
L99EA: MOV R7,#000H
;
L99EC: MOV A,R7
ANL A,#001H
MOV R7,A
RLC A
RLC A
RLC A
ANL A,#0F8H
MOV R7,A
MOV DPTR,#L34FD
MOVX A,@DPTR
ANL A,#0F7H
ORL A,R7
MOV R7,A
MOVX @DPTR,A
MOV DPTR,#L344C
MOVX A,@DPTR
ANL A,#00FH
MOV R5,A
SWAP A
ANL A,#0F0H
MOV R5,A
MOV A,R7
ANL A,#00FH
ORL A,R5
MOV DPTR,#L34FD
MOVX @DPTR,A
MOV DPTR,#L7F2F
MOVX A,@DPTR
MOV R7,A
SWAP A
ANL A,#00FH
MOV DPTR,#L34FE
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
ANL A,#0F0H
MOVX @DPTR,A
ANL A,#00FH
MOVX @DPTR,A
MOV DPTR,#L565B
MOVX A,@DPTR
MOV DPTR,#L3500
MOVX @DPTR,A
MOV R7,006H
LCALL L_InputReportInvalid
MOV A,R7
JZ L9A3F
CLR A
MOV DPTR,#L3402
MOVX @DPTR,A
MOV DPTR,#L347A
MOVX @DPTR,A
;
L9A3F: RET
;
;9a40  Bluetooth input report handler (ID 0x21)
L_InputReport21H: MOV DPTR,#L3568
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L3487
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34FE
XCH A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L3499
MOVX A,@DPTR
ANL A,#00FH
MOV R7,A
MOV DPTR,#L34FD
MOVX A,@DPTR
ANL A,#0F0H
ORL A,R7
MOV R7,A
MOVX @DPTR,A
MOV DPTR,#L3486
MOVX A,@DPTR
DEC A
ANL A,#00FH
MOV R6,A
SWAP A
ANL A,#0F0H
MOV R6,A
MOV A,R7
ANL A,#00FH
ORL A,R6
MOV DPTR,#L34FD
MOVX @DPTR,A
MOV R6,#035H
MOV R7,#000H
MOV R4,#034H
MOV R5,#089H
MOV DPTR,#L3486
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L3486
MOVX A,@DPTR
MOV R5,A
ADD A,#000H
MOV DPL,A
CLR A
ADDC A,#035H
MOV R7,DPL
MOV R6,A
CLR C
MOV A,#010H
SUBB A,R5
MOV R5,A
LCALL L7B6A
MOV DPTR,#L3568
MOVX A,@DPTR
MOV R7,A
LCALL L_InputReportInvalid
MOV DPTR,#L3568
MOVX A,@DPTR
JZ L9AC7
CLR A
MOV DPTR,#L3485
MOVX @DPTR,A
MOV DPTR,#L3483
MOVX A,@DPTR
JNZ L9ABA
INC DPTR
MOVX A,@DPTR
;
L9ABA: JZ L9AC2
MOV DPTR,#L3499
MOVX A,@DPTR
JZ L9AC7
;
L9AC2: CLR A
MOV DPTR,#L347C
MOVX @DPTR,A
;
L9AC7: RET
;
; 9AC8: ?? Input Report 22H
L_InputReport22H: MOV R6,007H
MOV DPTR,#L3478
MOVX A,@DPTR
MOV DPTR,#L34FD
MOVX @DPTR,A
MOV DPTR,#L3479
MOVX A,@DPTR
MOV DPTR,#L34FE
MOVX @DPTR,A
LCALL L_InputReportInvalid
MOV A,R7
JZ L9AE5
CLR A
MOV DPTR,#L3477
MOVX @DPTR,A
;
L9AE5: RET
;
;
L9AE6: MOV DPTR,#L3569
MOV A,R7
MOVX @DPTR,A
MOVX A,@DPTR
MOV R6,A
JZ L9B05
MOV R7,005H
ADD A,#0E0H
MOV R5,A
LCALL L87E1
MOV DPTR,#L3569
MOVX A,@DPTR
MOV DPTR,#L863E
MOVC A,@A+DPTR
MOV DPTR,#L356A
MOVX @DPTR,A
SJMP L9B0A
;
L9B05: CLR A
MOV DPTR,#L356A
MOVX @DPTR,A
;
L9B0A: MOV DPTR,#L3569
MOVX A,@DPTR
MOV DPTR,#L34FA
MOVX @DPTR,A
MOV DPTR,#L356A
MOVX A,@DPTR
MOV R7,A
RET
;
;
L9B18: MOV R5,#001H
LCALL L9AE6
MOV R5,007H
MOV A,R5
JZ L9B29
MOV R6,#034H
MOV R7,#0F9H
LCALL L4FDF
;
L9B29: RET
;
;
L9B2A: MOV DPTR,#L345D
MOVX A,@DPTR
CJNE A,#002H,L9B48
MOV DPTR,#L34A8
MOVX A,@DPTR
JZ L9B43
MOV R6,#056H
MOV R7,#007H
LCALL LD744
MOV R7,#016H
LJMP LDC6E
;
;
L9B43: MOV R7,#015H
LJMP LDC6E
;
;
L9B48: LCALL L7BAD
MOV DPTR,#L3F28
MOVX A,@DPTR
MOV R6,A
MOV A,R7
CLR C
SUBB A,R6
JNC L9B7D
MOV DPTR,#L347B
MOVX A,@DPTR
XRL A,#001H
JZ L9B67
MOV DPTR,#L3474
MOVX A,@DPTR
JNZ L9B67
INC DPTR
MOVX A,@DPTR
JZ L9B7D
;
L9B67: MOV DPTR,#L3472
MOVX A,@DPTR
MOV R7,A
LCALL L9B18
MOV DPTR,#L3472
MOVX A,@DPTR
CLR C
SUBB A,#030H
JC L9B7D
CLR A
MOV DPTR,#L3475
MOVX @DPTR,A
;
L9B7D: LCALL L7BAD
MOV A,R7
JZ L9B87
MOV R7,#001H
SJMP L9B89
;
L9B87: MOV R7,#000H
;
L9B89: MOV DPTR,#L4FFE
MOV A,R7
MOVX @DPTR,A
RET
;
;
L9B8F: LCALL L88CC
MOV A,R6
ANL A,#01FH
MOV DPTR,#L3456
MOVX @DPTR,A
MOV A,R7
ANL A,#09FH
INC DPTR
MOVX @DPTR,A
CLR A
MOV DPTR,#L345D
MOVX @DPTR,A
MOV DPTR,#L3458
MOVX A,@DPTR
CJNE A,#001H,L9BAD
MOV A,#002H
MOVX @DPTR,A
;
L9BAD: RET
;
;
L9BAE: CLR A
MOV DPTR,#L356B
MOVX @DPTR,A
;
L9BB3: MOV DPTR,#L4068
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L356B
MOVX A,@DPTR
CLR C
SUBB A,R7
JNC L9BCB
LCALL LEB4C
MOV DPTR,#L356B
MOVX A,@DPTR
INC A
MOVX @DPTR,A
SJMP L9BB3
;
L9BCB: LJMP LEBA1
;
;
L9BCE: CLR A
MOV DPTR,#L34A1
MOVX @DPTR,A
LCALL L8E87
MOV DPTR,#L349F
MOVX A,@DPTR
JZ L9BE5
LCALL L0FFC
CLR A
MOV DPTR,#L349F
MOVX @DPTR,A
RET
;
;
L9BE5: MOV DPTR,#L34A0
MOVX A,@DPTR
JZ L9BF4
LCALL LDBE6
MOV DPTR,#L34A1
LJMP LA57B
;
;
L9BF4: LCALL L8935
JC L9C23
MOV DPTR,#L3458
MOVX A,@DPTR
XRL A,#001H
JZ L9C23
MOV DPTR,#L7EA0
MOVX A,@DPTR
JNB ACC.0,L9C0D
LCALL L1038
JNC L9C23
;
L9C0D: CLR A
MOV R7,A
LCALL L8C11
LCALL L8937
LCALL LE945
LCALL L8C5C
MOV R7,#001H
LCALL L8C11
LCALL L9BAE
;
L9C23: RET
;
;
L9C24: LCALL LE890
MOV DPTR,#L3476
MOVX A,@DPTR
JNZ L9C33
MOV DPTR,#L3471
MOV A,#030H
MOVX @DPTR,A
;
L9C33: MOV DPTR,#L3475
LJMP LA57B
;
;
L9C39: LCALL LE8A4
LCALL L_InitVariables
MOV DPTR,#L5633
MOVX A,@DPTR
JNZ L9C63
MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#00AH,L9C5C
MOV DPTR,#L5604
MOVX A,@DPTR
INC A
MOV R7,A
MOV DPTR,#L44A9
MOVX A,@DPTR
MOV R6,A
MOV A,R7
CLR C
SUBB A,R6
JC L9C63
;
L9C5C: CLR A
MOV DPTR,#L345D
LCALL L8E83
;
L9C63: MOV R7,#0FAH
LJMP L7963
;
; 9C68 Bluetooth output report handler (ID 0x10)
L_OutputReport10H: LCALL L_Helper1
JNZ L_Report10Error
INC DPTR
INC DPTR
MOVX A,@DPTR
ANL A,#001H
MOV R7,A
MOV DPTR,#L34AC
MOVX A,@DPTR
ANL A,#0FEH
ORL A,R7
MOVX @DPTR,A
ANL A,#001H
MOV R7,A
LCALL L_EnableRumble
MOV R7,#000H
RET
;
; 9C84 error 3
L_Report10Error: MOV R7,#003H
RET
;
; 9C87 Output Report 11H
L_OutputReport11H: LCALL L_Helper1
JNZ L9CA4
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34AF
LCALL L_Store_A_at_DPTR
MOV DPTR,#L34AF
MOVX A,@DPTR
MOV R7,A
SWAP A
ANL A,#00FH
MOV R7,A
LCALL L_EnableLEDs
MOV R7,#000H
RET
;
;
L9CA4: MOV R7,#003H
RET
;
;9ca7 Output Report 12H (Set Channel)
L_OutputReport12H: MOV R3,007H
MOV R2,006H
MOV A,R5
XRL A,#004H
JNZ L9D02
LCALL LA560
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#030H
JC L9CC1
MOV A,R7
SETB C
SUBB A,#037H
JC L9CCD
;
L9CC1: MOV A,R7
CLR C
SUBB A,#03DH
JC L9CFF
MOV A,R7
SETB C
SUBB A,#03FH
JNC L9CFF
;
L9CCD: MOV R6,#034H
MOV R7,#0B2H
MOV A,R3
ADD A,#002H
MOV R5,A
CLR A
ADDC A,R2
MOV R4,A
MOV R3,#002H
LCALL L7175
MOV DPTR,#L34B2
LCALL L_LOAD_DPTR_TO_R7
MOV DPTR,#L34B3
MOVX A,@DPTR
MOV DPTR,#L3471
MOVX @DPTR,A
MOV DPTR,#L34B2
MOVX A,@DPTR
MOV R7,A
RRC A
RRC A
ANL A,#001H
MOV DPTR,#L3474
MOVX @DPTR,A
INC DPTR
MOV A,#001H
MOVX @DPTR,A
MOV R7,#000H
RET
;
;
L9CFF: MOV R7,#005H
RET
;
;
L9D02: MOV R7,#003H
RET
;
; 9d05 Output Report 13H (??)
L_OutputReport13H: LCALL L_Helper1
JNZ L9D27
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34B6
LCALL L_Store_A_at_DPTR
MOV DPTR,#L34B6
LCALL L_Helper2
JNB ACC.0,L9D21
LCALL L8EC9
SJMP L9D24
;
L9D21: LCALL L8EDC
;
L9D24: MOV R7,#000H
RET
;
;
L9D27: MOV R7,#003H
RET
;
; 9d2a Output Report 14H (??)
L_OutputReport14H: LCALL L_Helper1
JNZ L9D4C
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34B9
LCALL L_Store_A_at_DPTR
MOV DPTR,#L34B9
LCALL L_Helper2
JNB ACC.0,L9D46
LCALL L_EnableSpeaker
SJMP L9D49
;
L9D46: LCALL L_DisableSpeaker
;
L9D49: MOV R7,#000H
RET
;
;
L9D4C: MOV R7,#003H
RET
;
; 9D4F output report 15H (Request Status Report)
L_OutputReport15H: MOV DPL,R7
MOV DPH,R6
MOV A,R5
CJNE A,#003H,L9D69
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34BC
LCALL L_Store_A_at_DPTR
MOV DPTR,#L347A
MOV A,#001H
MOVX @DPTR,A
MOV R7,#000H
RET
;
;
L9D69: MOV R7,#003H
RET
;
;
L9D6C: MOV DPTR,#L34BF
LCALL LA54E
DEC A
JZ L9D89
DEC A
JZ L9DA5
ADD A,#002H
JNZ L9DBA
LCALL LA4DB
LCALL L9308
MOV DPTR,#L3479
MOV A,R7
MOVX @DPTR,A
SJMP L9DC0
;
L9D89: MOV R6,#034H
MOV R7,#0C4H
MOV DPTR,#L34C2
LCALL LA4E5
MOV DPTR,#L34C0
MOVX A,@DPTR
MOV DPTR,#L354F
MOVX @DPTR,A
LCALL L9354
MOV DPTR,#L3479
MOV A,R7
MOVX @DPTR,A
SJMP L9DC0
;
L9DA5: LCALL LA4DB
MOV DPTR,#L34C0
MOVX A,@DPTR
MOV DPTR,#L3558
MOVX @DPTR,A
LCALL L93A4
MOV DPTR,#L3479
MOV A,R7
MOVX @DPTR,A
SJMP L9DC0
;
L9DBA: MOV DPTR,#L3479
MOV A,#006H
MOVX @DPTR,A
;
L9DC0: LCALL LA5DC
INC DPTR
MOV A,#016H
MOVX @DPTR,A
RET
;
; 9dc8 Output report 16H (??)
L_OutputReport16H: MOV R3,007H
MOV R2,006H
MOV A,R5
XRL A,#017H
JNZ L9E27
LCALL LA555
ANL A,#01FH
SETB C
SUBB A,#010H
JNC L9E27
LCALL LA560
LCALL L_LOAD_DPTR_TO_R7
LCALL LA560
MOVX A,@DPTR
MOV R1,A
RRC A
RRC A
ANL A,#003H
MOV R7,A
JZ L9DF8
LCALL LA560
INC DPTR
MOVX A,@DPTR
ANL A,#0FEH
XRL A,#0A0H
JNZ L9E12
;
L9DF8: MOV A,R7
JNZ L9E24
MOV A,R3
ADD A,#004H
LCALL LA558
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL LA555
ANL A,#01FH
MOV R5,A
MOV R4,#000H
LCALL L92E7
JNC L9E24
;
L9E12: MOV DPTR,#L3511
MOVX A,@DPTR
JZ L9E1B
MOV R7,#004H
RET
;
;
L9E1B: MOV DPTR,#L3511
MOV A,#001H
MOVX @DPTR,A
MOV R7,#000H
RET
;
;
L9E24: MOV R7,#008H
RET
;
;
L9E27: MOV R7,#003H
RET
;
; 9e2a Output Report 17H
L_OutputReport17H: MOV DPTR,#L356C
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV A,R5
XRL A,#008H
JNZ L9EA2
MOV DPTR,#L356C
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
ADD A,#006H
MOV DPL,A
CLR A
ADDC A,R6
MOV DPH,A
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
ORL A,R4
JZ L9EA2
MOV DPL,R7
MOV DPH,R6
INC DPTR
INC DPTR
LCALL L_LOAD_DPTR_TO_R7
MOV DPTR,#L347C
MOVX A,@DPTR
JNZ L9E9F
MOV R6,#034H
MOV R7,#0D6H
MOV DPTR,#L356D
MOVX A,@DPTR
ADD A,#002H
MOV R5,A
MOV DPTR,#L356C
MOVX A,@DPTR
ADDC A,#000H
MOV R4,A
MOV R3,#006H
LCALL L7175
CLR A
MOV DPTR,#L3485
MOVX @DPTR,A
MOV DPTR,#L356C
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R2,006H
MOV R1,A
MOV R3,#001H
MOV R0,#07DH
MOV R4,#034H
MOV R5,#001H
MOV R6,#000H
MOV R7,#008H
LCALL L21F1
MOV DPTR,#L347C
MOV A,#001H
MOVX @DPTR,A
CLR A
MOV DPTR,#L3499
MOVX @DPTR,A
MOV R7,A
RET
;
;
L9E9F: MOV R7,#004H
RET
;
;
L9EA2: MOV R7,#003H
RET
;
; 9ea5 Output Report 18H (??)
L_OutputReport18H: MOV A,R5
XRL A,#017H
JNZ L9ED5
MOV DPL,R7
MOV DPH,R6
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R5,A
RRC A
RRC A
RRC A
ANL A,#01FH
SETB C
SUBB A,#014H
JNC L9ED5
MOV A,R5
ANL A,#001H
MOV R7,A
LCALL L_EnableRumble
MOV DPTR,#L3510
MOVX A,@DPTR
JZ L9ECC
MOV R7,#004H
RET
;
;
L9ECC: MOV DPTR,#L3510
MOV A,#001H
MOVX @DPTR,A
MOV R7,#000H
RET
;
;
L9ED5: MOV R7,#003H
RET
;
; 9ed8 Output Report 19H
L_OutputReport19H: LCALL L_Helper1
JNZ L9EFB
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34F5
LCALL L_Store_A_at_DPTR
MOV DPTR,#L34F5
LCALL L_Helper2
JNB ACC.0,L9EF3
MOV R7,#000H
SJMP L9EF5
;
L9EF3: MOV R7,#008H
;
L9EF5: LCALL L_UnMuteSpeaker
MOV R7,#000H
RET
;
;
L9EFB: MOV R7,#003H
RET
;
; 9efe Output Report 1AH (??)
L_OutputReport1AH: LCALL L_Helper1
JNZ L9F21
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34F8
LCALL L_Store_A_at_DPTR
MOV DPTR,#L34F8
LCALL L_Helper2
JNB ACC.0,L9F19
MOV R7,#000H
SJMP L9F1B
;
L9F19: MOV R7,#001H
;
L9F1B: LCALL L8EEB
MOV R7,#000H
RET
;
;
L9F21: MOV R7,#003H
RET
;
;
L9F24: LCALL LA56E
MOVX A,@DPTR
ANL A,#00FH
XRL A,#002H
JNZ L9F90
MOV R2,006H
MOV R1,007H
MOV R3,#001H
MOV DPTR,#L0001
LCALL L1B36
MOV DPTR,#L356F
MOVX @DPTR,A
CLR C
SUBB A,#010H
JC L9F88
MOVX A,@DPTR
MOV R4,A
SETB C
SUBB A,#01AH
JNC L9F88
MOV DPTR,#L5824
MOVX A,@DPTR
INC DPTR
MOVX A,@DPTR
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,R4
ADD A,#0F0H
MOV R3,A
LCALL L880F
MOV DPTR,#L356E
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOVX A,@DPTR
LCALL LA584
MOV A,#001H
MOVC A,@A+DPTR
ADD A,#001H
MOV R7,A
CLR A
MOVC A,@A+DPTR
ADDC A,#000H
MOV R6,A
MOV DPTR,#L5825
MOVX A,@DPTR
ADD A,#001H
MOV R5,A
MOV DPTR,#L5824
MOVX A,@DPTR
ADDC A,#000H
MOV R4,A
MOV DPTR,#L5826
MOVX A,@DPTR
DEC A
MOV R3,A
LCALL L7175
SJMP L9F96
;
L9F88: MOV DPTR,#L356E
MOV A,#001H
MOVX @DPTR,A
SJMP L9F96
;
L9F90: MOV DPTR,#L356E
MOV A,#002H
MOVX @DPTR,A
;
L9F96: MOV DPTR,#L356E
MOVX A,@DPTR
MOV R7,A
RET
;
;
L9F9C: LCALL L9F24
MOV A,R7
JNZ L9FB8
LCALL LA518
MOV DPTR,#L8684
MOVC A,@A+DPTR
JZ L9FCC
MOV DPL,R5
MOV DPH,R4
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
CLR C
RRC A
JNB ACC.0,L9FCC
;
L9FB8: LCALL LA5DC
MOV DPTR,#L5824
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
LCALL LA520
MOV DPTR,#L3478
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
;
L9FCC: RET
;
;
L9FCD: LCALL L9F24
MOV R6,007H
MOV A,R6
JNZ L9FF5
LCALL LA518
MOV R7,A
MOV DPTR,#L8684
MOVC A,@A+DPTR
JZ L9FF5
MOV DPL,R5
MOV DPH,R4
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R5,A
CLR C
RRC A
JNB ACC.0,L9FF5
LCALL LA5DC
INC DPTR
MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R6
MOVX @DPTR,A
;
L9FF5: MOV A,R6
CLR C
SUBB A,#00AH
JNC LA003
MOV A,R6
MOV DPTR,#L86EE
MOVC A,@A+DPTR
MOV R7,A
SJMP LA005
;
LA003: MOV R7,#00EH
;
LA005: MOV R6,007H
MOV DPTR,#L5827
MOVX A,@DPTR
MOV R7,A
MOV R5,006H
LJMP LE522
;
;
LA011: LCALL LA497
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR C
SUBB A,#020H
JC LA022
MOV A,R7
SETB C
SUBB A,#022H
JC LA03A
;
LA022: MOV A,R7
CLR C
SUBB A,#030H
JC LA02E
MOV A,R7
SETB C
SUBB A,#037H
JC LA03A
;
LA02E: MOV A,R7
CLR C
SUBB A,#03DH
JC LA0A4
MOV A,R7
SETB C
SUBB A,#03FH
JNC LA0A4
;
LA03A: CLR A
MOV R5,A
LCALL L9AE6
MOV DPTR,#L3570
MOV A,R7
MOVX @DPTR,A
JZ LA0A4
LCALL LA497
MOVX A,@DPTR
MOV R1,A
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
JNB ACC.0,LA05C
MOV DPTR,#L5826
MOVX A,@DPTR
XRL A,#004H
JZ LA068
;
LA05C: MOV A,R7
JB ACC.0,LA0A1
MOV DPTR,#L5826
MOVX A,@DPTR
XRL A,#002H
JNZ LA0A1
;
LA068: MOV A,R7
JNB ACC.0,LA089
LCALL LA497
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL L7A76
MOV 034H,R6
MOV 035H,R7
MOV DPTR,#L3570
LCALL LA5BC
JNC LA089
MOV A,035H
INC A
MOVX @DPTR,A
;
LA089: MOV R6,#056H
MOV R7,#0B6H
MOV R4,#034H
MOV R5,#0F9H
MOV DPTR,#L3570
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L3570
MOVX A,@DPTR
MOV R7,A
LJMP LE502
;
;
LA0A1: LJMP LE54E
;
;
LA0A4: LCALL LE562
RET
;
;
LA0A8: LCALL LA56E
INC DPTR
MOVX A,@DPTR
MOV R5,A
CLR C
SUBB A,#010H
JNC LA0B6
LJMP LA13D
;
;
LA0B6: MOV A,R5
SETB C
SUBB A,#01AH
JC LA0BF
LJMP LA13D
;
;
LA0BF: MOV A,R5
LCALL LA584
CLR A
MOVC A,@A+DPTR
MOV R3,A
MOV A,#001H
MOVC A,@A+DPTR
MOV DPTR,#L3572
XCH A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
MOV A,R5
MOV DPTR,#L863E
MOVC A,@A+DPTR
MOV DPTR,#L3571
MOVX @DPTR,A
MOV DPL,R7
MOV DPH,R6
MOVX A,@DPTR
MOV R7,A
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R7,A
JNB ACC.0,LA0F1
MOV DPTR,#L5826
MOVX A,@DPTR
XRL A,#004H
JZ LA0FD
;
LA0F1: MOV A,R7
JB ACC.0,LA13A
MOV DPTR,#L5826
MOVX A,@DPTR
XRL A,#002H
JNZ LA13A
;
LA0FD: MOV A,R7
JNB ACC.0,LA11E
LCALL LA497
INC DPTR
INC DPTR
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
LCALL L7A76
MOV 034H,R6
MOV 035H,R7
MOV DPTR,#L3571
LCALL LA5BC
JNC LA11E
MOV A,035H
INC A
MOVX @DPTR,A
;
LA11E: MOV R6,#056H
MOV R7,#0B6H
MOV DPTR,#L3572
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV DPTR,#L3571
MOVX A,@DPTR
MOV R3,A
LCALL L7175
MOV DPTR,#L3571
MOVX A,@DPTR
MOV R7,A
LJMP LE502
;
;
LA13A: LJMP LE54E
;
;
LA13D: LCALL LE562
RET
;
;
LA141: MOV DPTR,#L5826
MOVX A,@DPTR
CLR C
SUBB A,#002H
JC LA15D
LCALL LA497
MOVX A,@DPTR
ANL A,#003H
ADD A,#0FEH
JZ LA15A
INC A
JNZ LA15D
LJMP LA011
;
;
LA15A: LJMP LA0A8
;
;
LA15D: LCALL LE54E
RET
;
;
LA161: CLR A
MOV R7,A
LCALL LEC7A
MOV DPTR,#L344B
MOVX A,@DPTR
JZ LA17F
MOV DPTR,#L565B
MOVX A,@DPTR
CLR C
SUBB A,#033H
JC LA191
CLR A
MOV DPTR,#L344B
MOVX @DPTR,A
LCALL L8D18
SJMP LA191
;
LA17F: MOV DPTR,#L565B
MOVX A,@DPTR
CLR C
SUBB A,#033H
JNC LA191
MOV DPTR,#L344B
MOV A,#001H
MOVX @DPTR,A
LCALL L8D18
;
LA191: LCALL LA4ED
JNC LA1C9
MOV DPTR,#L5631
MOVX A,@DPTR
MOV R7,A
XRL A,#008H
JZ LA1A3
MOV A,R7
CJNE A,#005H,LA1A6
;
LA1A3: LJMP LDA9C
;
;
LA1A6: MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#004H,LA1C9
LCALL LA5E3
LCALL L7ABD
LCALL LA5E3
CLR 01CH
MOV R7,#001H
MOV R6,#000H
MOV R5,#000H
MOV R4,#000H
LCALL L4280
MOV A,R7
JZ LA1C9
LCALL L7BD4
;
LA1C9: RET
;
;
LA1CA: LCALL LD909
MOV R3,#001H
MOV R2,#038H
MOV R1,#041H
MOV DPTR,#L3574
LCALL L201E
MOV DPTR,#L5631
MOVX A,@DPTR
MOV R7,A
XRL A,#004H
JZ LA1E6
MOV A,R7
CJNE A,#005H,LA1F8
;
LA1E6: MOV DPTR,#L34A1
MOVX A,@DPTR
JZ LA1F8
MOV R3,#001H
MOV R2,#036H
MOV R1,#0C5H
MOV DPTR,#L3574
LCALL L201E
;
LA1F8: MOV DPTR,#L34A9
MOV A,#001H
MOVX @DPTR,A
MOV DPTR,#L3574
LCALL L1FFE
MOV R7,#006H
LJMP L564D
;
;
LA209: MOV DPTR,#L3577
MOV A,R7
MOVX @DPTR,A
MOVX A,@DPTR
MOV R7,A
LCALL LDBE0
MOV DPTR,#L3577
MOVX A,@DPTR
XRL A,#002H
JNZ LA258
MOV DPTR,#L349C
MOVX A,@DPTR
JZ LA258
MOV DPTR,#L345D
MOVX A,@DPTR
JZ LA253
LCALL L9489
MOV A,R7
JNZ LA232
MOV R7,#015H
LJMP LDC6E
;
;
LA232: MOV R6,#038H
MOV R7,#041H
LCALL LD744
MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#00AH,LA24E
MOV DPTR,#L3F0C
MOVX A,@DPTR
MOV DPTR,#L5606
MOVX @DPTR,A
MOV DPTR,#L5604
MOVX A,@DPTR
DEC A
MOVX @DPTR,A
;
LA24E: MOV R7,#016H
LJMP LD71D
;
;
LA253: MOV R7,#016H
LCALL LD71D
;
LA258: RET
;
;
LA259: MOV DPTR,#L349C
MOV A,#001H
MOVX @DPTR,A
LJMP LD9B7
;
;
LA262: CLR A
MOV DPTR,#L3578
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
LCALL L9787
MOV DPTR,#L3472
MOV A,R7
MOVX @DPTR,A
MOVX A,@DPTR
MOV DPTR,#L860E
MOVC A,@A+DPTR
MOV DPTR,#L3473
MOVX @DPTR,A
MOV DPTR,#L580F
MOVX A,@DPTR
JNZ LA285
LJMP LA31E
;
;
LA285: MOV DPTR,#L38AF
MOVX A,@DPTR
XRL A,#00BH
JNZ LA2F8
LCALL LA5C7
MOV DPTR,#L349B
MOVX A,@DPTR
JZ LA29D
MOV A,032H
SETB C
SUBB A,#064H
JC LA2A4
;
LA29D: LCALL LA5EA
INC DPTR
MOVX @DPTR,A
SJMP LA2E2
;
LA2A4: MOV DPTR,#L3473
MOVX A,@DPTR
MOV R7,A
MOV A,032H
SETB C
SUBB A,R7
JC LA2DF
MOV A,R7
ADD A,#002H
MOV R7,A
CLR A
RLC A
MOV R6,A
SETB C
MOV A,032H
SUBB A,R7
MOV A,R6
XRL A,#080H
MOV R0,A
MOV A,#080H
SUBB A,R0
JC LA2DA
JNB 019H,LA2CB
LCALL L1164
SJMP LA2DA
;
LA2CB: MOV DPTR,#L357A
MOVX A,@DPTR
JNZ LA2DA
LCALL LA161
MOV DPTR,#L357A
MOV A,#001H
MOVX @DPTR,A
;
LA2DA: LCALL LA5C7
SJMP LA2A4
;
LA2DF: LCALL LA5EA
;
LA2E2: MOV DPTR,#L349B
MOVX A,@DPTR
JZ LA31E
MOV DPTR,#L3875
MOVX A,@DPTR
MOV R7,A
ADD A,ACC
MOV R7,A
MOV DPTR,#L349A
MOVX A,@DPTR
ADD A,R7
MOVX @DPTR,A
SJMP LA31E
;
LA2F8: CLR A
MOV DPTR,#L349B
MOVX @DPTR,A
MOV DPTR,#L5816
LCALL L1F9D
LCALL L55B9
CLR A
MOV R3,#020H
MOV R2,A
MOV R1,A
MOV R0,A
SETB C
LCALL L1EF4
JNC LA31E
LCALL L741C
MOV DPTR,#L5816
LCALL L1FB5
LCALL LA5EA
;
LA31E: MOV DPTR,#L3578
MOVX A,@DPTR
JZ LA398
MOV DPTR,#L5810
MOVX A,@DPTR
JNZ LA360
MOV DPTR,#L3579
MOVX A,@DPTR
JNZ LA333
LCALL L833E
;
LA333: MOV DPTR,#L3510
MOVX A,@DPTR
JZ LA352
MOV R6,#034H
MOV R7,#0DFH
MOV DPTR,#L34DE
MOVX A,@DPTR
MOV R5,A
RRC A
RRC A
RRC A
ANL A,#01FH
MOV R5,A
LCALL L8F65
CLR A
MOV DPTR,#L3510
MOVX @DPTR,A
SJMP LA360
;
LA352: MOV DPTR,#L3511
MOVX A,@DPTR
JZ LA360
LCALL L9D6C
CLR A
MOV DPTR,#L3511
MOVX @DPTR,A
;
LA360: MOV DPTR,#L345D
MOVX A,@DPTR
JZ LA369
LCALL LDBED
;
LA369: MOV DPTR,#L3F35
MOVX A,@DPTR
JNZ LA375
MOV DPTR,#L5C1E
MOVX A,@DPTR
JNZ LA378
;
LA375: LCALL LE103
;
LA378: LCALL L8E26
MOV DPTR,#L38AF
MOVX A,@DPTR
CJNE A,#00BH,LA395
MOV DPTR,#L3579
MOVX A,@DPTR
JNZ LA398
MOV DPTR,#L55BE
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L55BC
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
RET
;
;
LA395: LCALL LA161
;
LA398: RET
;
;
LA399: MOV DPTR,#L589B
MOVX A,@DPTR
MOV DPTR,#L349A
MOVX @DPTR,A
INC DPTR
MOV A,#001H
MOVX @DPTR,A
RET
;
;
LA3A6: LCALL LA5F1
MOV R3,A
MOV R2,#056H
MOV R1,#033H
LCALL L7ABD
MOV DPTR,#L3F02
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R3,#080H
MOV R2,#00CH
MOV R1,A
MOV R0,A
LCALL L1D99
CLR 01CH
LCALL LA5E3
LCALL L4280
LJMP L8E12
;
;
LA3CE: CLR A
MOV DPTR,#L34A0
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
RET
;
;
LA3D6: LCALL LDCA7
MOV DPTR,#L5631
MOVX A,@DPTR
CJNE A,#00AH,LA3E6
LCALL LA5F1
LCALL L8E12
;
LA3E6: RET
;
;
LA3E7: MOV R6,#035H
MOV R7,#012H
RET
;
;
LA3EC: LCALL LA5F1
LJMP LDC57
;
;
LA3F2: MOV DPTR,#L5631
MOVX A,@DPTR
XRL A,#005H
JNZ LA45E
LCALL L1320
MOV A,R7
CPL A
JZ LA423
LCALL L132C
MOV DPTR,#L34A1
MOVX A,@DPTR
JNZ LA456
MOV DPTR,#L34A9
MOVX A,@DPTR
JZ LA456
MOV DPTR,#L5CB5
MOVX A,@DPTR
XRL A,#004H
JNZ LA456
LCALL L9489
MOV A,R7
JZ LA456
LCALL LA477
SJMP LA456
;
LA423: MOV DPTR,#L560D
MOVX A,@DPTR
JZ LA456
MOV R6,#038H
MOV R7,#041H
MOV R4,#056H
MOV R5,#029H
MOV R3,#006H
LCALL L7195
MOV A,R7
JNZ LA456
MOV DPTR,#L34A1
MOVX A,@DPTR
JZ LA448
MOV R6,#034H
MOV R7,#0A2H
LCALL L1326
SJMP LA44B
;
LA448: LCALL LA477
;
LA44B: MOV R6,#056H
MOV R7,#029H
MOV R4,#056H
MOV R5,#012H
LCALL L1344
;
LA456: LCALL L9468
LCALL L10F8
SJMP LA461
;
LA45E: LCALL LD7B2
;
LA461: CLR A
MOV DPTR,#L34A1
MOVX @DPTR,A
LCALL L9489
MOV DPTR,#L34A8
MOV A,R7
MOVX @DPTR,A
LCALL LDCD9
CLR A
MOV DPTR,#L560E
MOVX @DPTR,A
RET
;
;
LA477: MOV R6,#034H
MOV R7,#0A2H
LCALL L130E
MOV R6,#034H
MOV R7,#0A2H
MOV R4,#038H
MOV R5,#041H
MOV R3,#006H
LJMP L7175
;
;
LA48B: LCALL L9489
MOV A,R7
JNZ LA494
LCALL L947D
;
LA494: LJMP LDC49
;
;
LA497: MOV DPTR,#L5824
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV DPL,A
MOV DPH,R6
RET
;
;
LA4A3: MOVX A,@DPTR
MOV DPTR,#L34FD
MOVX @DPTR,A
MOV DPTR,#L3456
MOVX A,@DPTR
MOV R7,A
INC DPTR
MOVX A,@DPTR
MOV DPTR,#L34FB
XCH A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L343E
MOVX A,@DPTR
MOV R7,A
RET
;
;
LA4BD: MOV A,R6
MOVX @DPTR,A
INC DPTR
;
LA4C0: MOV A,R7
MOVX @DPTR,A
INC DPTR
MOV A,R5
MOVX @DPTR,A
INC DPTR
RET
; A4C7 Helper1
; dptr = r6:r7, a = r5^3
L_Helper1: MOV DPL,R7
MOV DPH,R6
MOV A,R5
XRL A,#003H
RET
;
;
LA4CF: MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
CLR A
MOV R4,A
MOV R5,A
CLR C
LJMP L1EF4
;
;
LA4DB: MOV R6,#034H
MOV R7,#0C4H
MOV DPTR,#L34C1
MOVX A,@DPTR
MOV R4,A
INC DPTR
;
LA4E5: MOVX A,@DPTR
MOV R5,A
INC DPTR
MOVX A,@DPTR
ANL A,#01FH
MOV R3,A
RET
;
;
LA4ED: MOV DPTR,#L406D
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
SETB C
MOV DPTR,#L565A
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#L5659
MOVX A,@DPTR
SUBB A,R6
RET
;
;
LA501: MOV DPTR,#L3481
MOVX A,@DPTR
MOV R6,A
INC DPTR
;
LA507: MOVX A,@DPTR
MOV R7,A
MOV DPTR,#L3486
MOVX A,@DPTR
MOV R5,A
RET
;
;
LA50F: MOV A,R7
;
LA510: MOVX @DPTR,A
MOV R6,A
LCALL L8FC9
MOV A,R6
ORL A,R7
RET
;
;
LA518: MOV DPTR,#L5824
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
;
LA520: MOV DPL,A
MOV DPH,R4
INC DPTR
MOVX A,@DPTR
RET
;
;
LA527: MOV DPTR,#L7F10
MOVX A,@DPTR
MOV DPTR,#L3542
MOVX @DPTR,A
MOV DPTR,#L7F0F
MOVX A,@DPTR
MOV DPTR,#L3543
MOVX @DPTR,A
RET
;
;
LA538: MOVX @DPTR,A
MOV DPTR,#L34FC
MOVX A,@DPTR
MOV R6,A
MOV A,R7
ANL A,#0C0H
MOV R7,A
CLR C
RRC A
MOV R7,A
MOV A,R6
ORL A,R7
MOVX @DPTR,A
RET
;
;
LA549: MOV A,R7
MOVX @DPTR,A
MOV DPTR,#L347F
;
LA54E: MOVX A,@DPTR
MOV R7,A
RRC A
RRC A
ANL A,#003H
RET
;
;
LA555: MOV A,R3
ADD A,#006H
;
LA558: MOV DPL,A
CLR A
ADDC A,R2
MOV DPH,A
MOVX A,@DPTR
RET
;
;
LA560: MOV DPL,R3
MOV DPH,R2
INC DPTR
INC DPTR
RET
 
; a567 Helper 2
; r7 = @dptr, a = (@dptr>>2) & 0x3f
L_Helper2: MOVX A,@DPTR
MOV R7,A
RRC A
RRC A
ANL A,#03FH
RET
;
;
LA56E: MOV DPTR,#L5824
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPL,A
MOV DPH,R6
RET
;
;
LA57B: MOV A,#001H
;
LA57D: MOVX @DPTR,A
CLR A
MOV DPTR,#L34A0
MOVX @DPTR,A
RET
;
;
LA584: ADD A,ACC
ADD A,#05EH
MOV DPL,A
CLR A
ADDC A,#086H
MOV DPH,A
RET
;
;
LA590: MOV A,#043H
ADD A,R6
MOV DPL,A
CLR A
ADDC A,#07FH
MOV DPH,A
RET
;
;
LA59B: MOVX @DPTR,A
MOV DPTR,#L7F47
MOVX A,@DPTR
MOV R4,A
MOV A,R6
ADD A,ACC
MOV R3,A
RET
;
;
LA5A6: MOV A,R7
MOVX @DPTR,A
MOV R6,#035H
MOV R7,#000H
MOV R4,#034H
MOV R5,#05FH
RET
;
;
LA5B1: MOV R6,#034H
MOV R7,#0FEH
MOV R4,#034H
MOV R5,#05FH
MOV R3,#012H
RET
;
;
LA5BC: MOVX A,@DPTR
MOV R7,A
CLR C
MOV A,035H
SUBB A,R7
MOV A,034H
SUBB A,#000H
RET
;
;
LA5C7: MOV DPTR,#L349A
MOVX A,@DPTR
MOV R7,A
LCALL L893E
MOV 032H,R7
RET
;
;
LA5D2: MOVX A,@DPTR
MOV R6,A
MOV A,R7
ANL A,#030H
MOV R5,A
ADD A,ACC
MOV R5,A
RET
;
;
LA5DC: MOV DPTR,#L3477
MOV A,#001H
MOVX @DPTR,A
RET
;
;
LA5E3: MOV R3,#001H
MOV R2,#056H
MOV R1,#033H
RET
;
;
LA5EA: MOV DPTR,#L3578
MOV A,#001H
MOVX @DPTR,A
RET
;
;
LA5F1: MOV DPTR,#L349F
MOV A,#001H
MOVX @DPTR,A
RET
;
;
LA5F8: MOV DPTR,#L37F1
CLR A
MOVX @DPTR,A
INC DPTR
MOV A,#020H
MOVX @DPTR,A
MOV DPTR,#L_BluetoothClassID
MOVX A,@DPTR
ORL A,#040H
MOVX @DPTR,A
MOV DPTR,#L7F42
MOVX A,@DPTR
ORL A,#040H
MOVX @DPTR,A
MOV DPTR,#L7ED0
MOVX A,@DPTR
ORL A,#010H
MOVX @DPTR,A
RET
;
;
LA617: MOV DPTR,#L406D
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
SETB C
MOV DPTR,#L565A
MOVX A,@DPTR
SUBB A,R7
MOV DPTR,#L5659
MOVX A,@DPTR
SUBB A,R6
JNC LA62F
LCALL L8380
;
LA62F: RET
;
;
LA630: MOVX A,@DPTR
MOV DPTR,#L35FB
MOVX @DPTR,A
CLR A
MOV DPTR,#L35FA
MOVX @DPTR,A
RET
;
;
LA63B: MOV DPTR,#L35F8
MOVX A,@DPTR
ORL A,R6
MOV R2,A
INC DPTR
MOVX A,@DPTR
ORL A,R7
MOV R3,A
RET
;
MOV DPTR,#L7EA0
MOVX A,@DPTR
ANL A,#0FEH
MOVX @DPTR,A
RET
;
NOP
RLC A
NOP
NOP
ACALL LA774
AJMP LA0F0
;
MOV DPTR,#L7F07
MOVX A,@DPTR
ANL A,#0FDH
MOVX @DPTR,A
MOV DPTR,#L7F00
MOV A,#090H
MOVX @DPTR,A
INC DPTR
MOV A,#010H
MOVX @DPTR,A
LCALL L127E
MOV DPTR,#L7F01
CLR A
MOVX @DPTR,A
MOV DPTR,#LC75C
LJMP L8580
;
MOV DPTR,#L7E00
MOV A,R2
MOVX @DPTR,A
MOV 03BH,R2
MOV 038H,R2
MOV 039H,R1
MOV DPTR,#L7E78
MOVX A,@DPTR
ANL A,#0FEH
MOVX @DPTR,A
POP B
MOV A,#0EFH
PUSH ACC
MOV A,#0D2H
PUSH ACC
PUSH B
POP 0FFH
RET
;
ANL PSW,#0E7H
ORL PSW,#010H
CLR 002H
MOV DPTR,#L7E29
MOV A,#040H
MOVX @DPTR,A
MOV DPTR,#L7E28
MOVX A,@DPTR
ANL A,#00FH
XRL A,#001H
JNZ LA6B7
MOV DPTR,#L7E78
MOVX A,@DPTR
ORL A,#001H
MOVX @DPTR,A
SJMP LA6BE
;
LA6B7: MOV DPTR,#L7E78
MOVX A,@DPTR
ANL A,#0FEH
MOVX @DPTR,A
;
LA6BE: POP B
MOV A,#030H
PUSH ACC
MOV A,#0D2H
PUSH ACC
PUSH B
POP 0FFH
RET
;
MOV DPTR,#L7E28
MOVX A,@DPTR
ANL A,#00FH
CJNE A,#001H,LA708
MOV DPTR,#L4AD3
MOVX A,@DPTR
ANL A,#008H
JNZ LA708
MOV R7,#0DCH
MOV DPTR,#L4AD4
MOVX A,@DPTR
MOV R6,A
XRL A,#006H
JZ LA6F0
MOV A,R6
XRL A,#00EH
JZ LA6F0
MOV R7,#096H
;
LA6F0: MOV DPTR,#L7E1C
CLR A
MOVX @DPTR,A
CLR C
MOVX A,@DPTR
SUBB A,R7
JNC LA702
MOV DPTR,#L7E1D
MOVX A,@DPTR
ANL A,#001H
JZ LA6F0
;
LA702: MOV DPTR,#L7C7C
MOV A,#0FFH
MOVX @DPTR,A
;
LA708: POP B
MOV A,#0A1H
PUSH ACC
MOV A,#0C5H
PUSH ACC
PUSH B
POP 0FFH
RET
;
MOV DPTR,#L7E00
MOVX A,@DPTR
ANL A,#00FH
MOV DPTR,#L7D2A
CJNE A,#001H,LA727
MOV A,#064H
SJMP LA729
;
LA727: MOV A,#016H
;
LA729: MOVX @DPTR,A
MOV DPTR,#L7C7C
MOV A,#04BH
MOVX @DPTR,A
LJMP LB3B5
;
CLR A
MOV DPTR,#L55BC
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#L4336
LJMP L8580
;
MOV R7,#000H
RR A
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;
LA774: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RR A
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;
; Unresolved Address Reference list
;
;
L7F60: EQU 07F60H
L7F69: EQU 07F69H
L7F7F: EQU 07F7FH
L8000: EQU 08000H
L8004: EQU 08004H
L8009: EQU 08009H
L8020: EQU 08020H
L8040: EQU 08040H
L8078: EQU 08078H
L80B6: EQU 080B6H
L8101: EQU 08101H
L822B: EQU 0822BH
L8274: EQU 08274H
L8277: EQU 08277H
L82CD: EQU 082CDH
L82FD: EQU 082FDH
L8304: EQU 08304H
L8310: EQU 08310H
L8400: EQU 08400H
L8580: EQU 08580H
L86B3: EQU 086B3H
L8751: EQU 08751H
LA0F0: EQU 0A0F0H
LA803: EQU 0A803H
LB3B5: EQU 0B3B5H
LC75C: EQU 0C75CH
LD420: EQU 0D420H
LD48F: EQU 0D48FH
LD71D: EQU 0D71DH
LD744: EQU 0D744H
LD7B2: EQU 0D7B2H
LD84E: EQU 0D84EH
LD8AD: EQU 0D8ADH
LD909: EQU 0D909H
LD90F: EQU 0D90FH
LD92D: EQU 0D92DH
LD9B7: EQU 0D9B7H
LDA2C: EQU 0DA2CH
LDA45: EQU 0DA45H
LDA9C: EQU 0DA9CH
LDAA1: EQU 0DAA1H
LDBA6: EQU 0DBA6H
LDBC4: EQU 0DBC4H
LDBE0: EQU 0DBE0H
LDBE6: EQU 0DBE6H
LDBED: EQU 0DBEDH
LDBF4: EQU 0DBF4H
LDC49: EQU 0DC49H
LDC57: EQU 0DC57H
LDC5E: EQU 0DC5EH
LDC6E: EQU 0DC6EH
LDC78: EQU 0DC78H
LDCA7: EQU 0DCA7H
LDCC0: EQU 0DCC0H
LDCD9: EQU 0DCD9H
LDD5D: EQU 0DD5DH
LDD7C: EQU 0DD7CH
LDD97: EQU 0DD97H
LDDB6: EQU 0DDB6H
LDE01: EQU 0DE01H
LDE14: EQU 0DE14H
LDE2A: EQU 0DE2AH
LDE36: EQU 0DE36H
LDE49: EQU 0DE49H
LDE6F: EQU 0DE6FH
LDEA4: EQU 0DEA4H
LDEEB: EQU 0DEEBH
LDFC3: EQU 0DFC3H
LDFFA: EQU 0DFFAH
LE02A: EQU 0E02AH
LE072: EQU 0E072H
LE0EB: EQU 0E0EBH
LE0EE: EQU 0E0EEH
LE0F7: EQU 0E0F7H
LE103: EQU 0E103H
LE459: EQU 0E459H
LE502: EQU 0E502H
LE522: EQU 0E522H
LE54E: EQU 0E54EH
LE558: EQU 0E558H
LE562: EQU 0E562H
LE78E: EQU 0E78EH
LE793: EQU 0E793H
LE823: EQU 0E823H
LE890: EQU 0E890H
LE8A4: EQU 0E8A4H
LE8C8: EQU 0E8C8H
LE945: EQU 0E945H
LE99F: EQU 0E99FH
LE9A6: EQU 0E9A6H
LE9B0: EQU 0E9B0H
LE9ED: EQU 0E9EDH
LEAE7: EQU 0EAE7H
LEB4C: EQU 0EB4CH
LEBA1: EQU 0EBA1H
LEC7A: EQU 0EC7AH
LED61: EQU 0ED61H
LF66D: EQU 0F66DH
;
;
END
</pre>

Latest revision as of 07:20, 1 December 2021

The entire (8051-based) firmware of the Wiimote was dumped by User:Beeloot in January, 2009. It is available in binary form here: File:Wiimote firmware.zip

The README from that archive is:

beeloot - 07/01/2009

This is a complete dump of the firmware of my Wiimote.
This archive includes a dump of the I2C EEPROM.
By modifying the code in the EEPROM I have been able to dump the full
address range of code memory, as well as the various code banks.

Code memory uses banking mechanism to extend 8051 addressing space
beyond 64K.
Common area is at 0x0000-0x7FFF, banked area is at 0x8000-0xFFFF.
Current code bank is selected via bits 3-2 of port 1.

P1[3:2] = 00 => code bank 0
P1[3:2] = 01 => code bank 1
P1[3:2] = 10 => code bank 2
P1[3:2] = 11 => code bank 3

It seems like KEIL C51 compiler has been used to compile the firmware.
For example inter-banks function calls use patterns identical to those
generated by the C51 compiler.

I hope that this material will be useful and will help the community
to further understand the inner workings of the Wiimote. Perhaps
also some fun things will come out of this (there is for example a
serial interrupt handler).

Have fun!

Directories

   bank0\
       Dump of the code memory 0x8000-0xFFFF bank 0
   bank1\
       Dump of the code memory 0x8000-0xFFFF bank 1
   bank2\
       Dump of the code memory 0x8000-0xFFFF bank 2
   bank3\
       Dump of the code memory 0x8000-0xFFFF bank 3
   common\
       Dump of the common code memory 0x0000-0x7FFF
   eeprom\
       Dump of the I2C EEPROM contents
   xram\
       Dump of the external data memory