GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058
GPGCON EQU 0x56000060
GPGDAT EQU 0x56000064
GPGUP EQU 0x56000068
AREA SelfBoot, CODE, READONLY
ENTRY
EXPORT _ENTRY
_ENTRY
ResetEntry
LDR R0,=GPFCON
LDR R1,=0X5500
STR R1,[R0]
LDR R0,=GPFUP
LDR R1,=0xFF
STR R1,[R0]
LDR R2,=GPGCON
LDR R3,=0x0000
STR R3,[R2]
LOOP
LDR R0,=GPFDAT
LDR R1,=0XFF
STR R1,[R0]
LDR R5,[R0]
LDR R2,=GPGDAT
LDR R3,=0XFF
STR R3,[R2]
LDR R3,[R2]
LDR R6,[R2]
MOV R1,R5
SWITCH
AND R1,R1,#0X0F
MOV R3,R3,ROR#3
AND R3,R3,#0X01
MOV R6,R6,ROR#11
AND R6,R6,#0X01
CASE_0
CMP R1,#7
BNE CASE_2
LDR R1,=0XBF
STR R1,[R0]
B SWITCH_END
CASE_2
CMP R1,#11
BNE CASE_4
LDR R1,=0XCF
STR R1,[R0]
B SWITCH_END
CASE_4
CMP R1,#13
BNE CASE_8
LDR R1,=0XDF
STR R1,[R0]
B SWITCH_END
CASE_8
CMP R1,#14
BNE CASE_3
LDR R1,=0XEF
STR R1,[R0]
B SWITCH_END
CASE_3
CMP R3,#0
BNE CASE_11
LDR R3,=0XAF
STR R3,[R0]
B SWITCH_END
CASE_11
CMP R6,#0
BNE DEFAULT
LDR R6,=0X9F
STR R6,[R0]
B SWITCH_END
DEFAULT
LDR R5,=0XFF
STR R5,[R0]
SWITCH_END
NOP
B LOOP
END