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

Difference between revisions of "Wiimote/Firmware"

From WiiBrew
Jump to navigation Jump to search
m (Fixed file link)
 
(8 intermediate revisions by 7 users not shown)
Line 1: Line 1:
The processor in the Wiimote is a distant ancestor of the PC's 8086 processor, the 8051. The assembly language should be familiar to PC programmers.
+
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 registers are named R1 to R7. There is also a register called "A" which is the equivalent of AX, a register called "DPTR" (data pointer) which usually contains memory addresses.
+
The README from that archive is:
  
You can view the 8051 Opcodes [http://www.keil.com/support/man/docs/is51/is51_opcodes.htm here].
+
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
  
== Code ==
+
[[Category:Local code]]
<pre>
 
;===============================================================;
 
; Disassembled Using DIS8051  -  (C)1989 Data Sync Engineering ;
 
;===============================================================;
 
 
 
; 7F04 ?
 
; 1:0    10 when speaker enabled
 
;        00 when speaker disabled
 
L_SpeakerEnabled1: NOP
 
 
 
; 7F0A: GPIO_port
 
; 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
 
</pre>
 
== ; Bluetooth Class ID ==
 
<pre>
 
; 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
 
</pre>
 
== ; Jump Table ==
 
<pre>
 
; 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
 
</pre>
 
 
 
<pre>
 
;
 
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
 
</pre>
 
== ; Feedback: LEDs, Rumble, and Speaker ==
 
=== ; LEDs ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Rumble ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Speaker  ===
 
<pre>
 
;
 
;
 
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
 
</pre>
 
 
 
== ; Initialize variables ==
 
<pre>
 
; 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
 
</pre>
 
== ; Data Reports ==
 
=== ; Report 30H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 31H ===
 
<pre>
 
; 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
 
</pre>
 
=== ; Extension Bytes ===
 
<pre>
 
; 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
 
</pre>
 
=== ; Report 32H ===
 
<pre>
 
; 989D Data Report 32H
 
L_DataReport32H: MOV R5,#008H
 
LJMP L_ExtensionBytes
 
</pre>
 
=== ; Report 33H ===
 
<pre>
 
; 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
 
</pre>
 
 
 
=== ; Report 34H ===
 
<pre>
 
;
 
; 98B5 Data Report 34H
 
L_DataReport34H: MOV R5,#013H
 
LJMP L_ExtensionBytes
 
</pre>
 
=== ; Report 35H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 36H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 37H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 3DH ===
 
<pre>
 
;
 
; 991B Data Report 3DH
 
L_DataReport3DH: MOV R6,#034H
 
MOV R7,#0FBH
 
MOV R4,#034H
 
MOV R5,#01AH
 
MOV R3,#015H
 
LJMP L7175
 
</pre>
 
=== ; Report 3EH ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 3FH ===
 
<pre>
 
;
 
; 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
 
 
 
</pre>
 
=== ; Report 20H ===
 
<pre>
 
 
 
;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
 
</pre>
 
=== ; Report 21H ===
 
<pre>
 
;
 
;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
 
</pre>
 
=== ; Report 22H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
== ; Output Reports ==
 
=== ; Report 10H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 11H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 12H ===
 
<pre>
 
;
 
;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
 
</pre>
 
=== ; Report 13H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 14H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 15H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 16H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 17H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 18H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 19H ===
 
<pre>
 
;
 
; 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
 
</pre>
 
=== ; Report 1AH ===
 
<pre>
 
;
 
; 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
 
</pre>
 
== ; Junk ==
 
<pre>
 
;
 
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
 
;
 
</pre>
 
== ; Unresolved Address Reference list ==
 
<pre>
 
;
 
;
 
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