FreeCalypso > hg > freecalypso-reveng
view compal/j100-fw-disasm @ 392:35009c936a4a
compal/melody-extr: first attempt at actual melody extraction
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 01 Apr 2022 06:03:47 +0000 |
parents | dd8a9ebcd8b1 |
children |
line wrap: on
line source
; This analysis corresponds to SE J100 fw version R1C004, published in ; R1C004-se.bin inside the j100-flashimg-r1.zip FTP release. 0: ea000225 b 0x89c 4: ea000825 b 0x20a0 8: ea000825 b 0x20a4 c: ea000825 b 0x20a8 10: ea000825 b 0x20ac 14: ea000825 b 0x20b0 18: ea000825 b 0x20b4 1c: ea000825 b 0x20b8 _INT_Bootloader_Start: ; same as the Mot C139 version 89c: e51f1020 ldr r1, =0xfffffd00 ; via 0x884 8a0: e1d120b2 ldrh r2, [r1, #2] 8a4: e51f002c ldr r0, =0x40 ; via 0x880 8a8: e1800002 orr r0, r0, r2 8ac: e1c100b2 strh r0, [r1, #2] 8b0: e51f1030 ldr r1, =0xffff9800 ; via 0x888 8b4: e15f22b6 ldrh r2, =0x2006 ; via 0x896 8b8: e1c120b0 strh r2, [r1] 8bc: e5912000 ldr r2, [r1] 8c0: e2022001 and r2, r2, #1 8c4: e3520001 cmp r2, #1 8c8: 0afffffb beq 0x8bc 8cc: e51f1050 ldr r1, =0xfffffd00 ; via 0x884 8d0: e15f24b4 ldrh r2, =0x1081 ; via 0x894 8d4: e1c120b0 strh r2, [r1] 8d8: e51f1054 ldr r1, =0xfffffb10 ; via 0x88c 8dc: e15f24bc ldrh r2, =0x800 ; via 0x898 8e0: e1d100b0 ldrh r0, [r1] 8e4: e1800002 orr r0, r0, r2 8e8: e1c100b0 strh r0, [r1] 8ec: e51f1064 ldr r1, =0xffffff08 ; via 0x890 8f0: e15f25be ldrh r2, =0x0 ; via 0x89a 8f4: e1c120b0 strh r2, [r1] 8f8: e51f1094 ldr r1, =0xfffffb00 ; via 0x86c 8fc: e15f29b4 ldrh r2, =0x2a1 ; via 0x870 900: e1c120b0 strh r2, [r1] 904: e15f29ba ldrh r2, =0x2a1 ; via 0x872 908: e1c120b2 strh r2, [r1, #2] 90c: e15f2ab0 ldrh r2, =0x2a1 ; via 0x874 910: e1c120b4 strh r2, [r1, #4] 914: e15f2ab6 ldrh r2, =0x283 ; via 0x876 918: e1c120b6 strh r2, [r1, #6] 91c: e15f2abc ldrh r2, =0x281 ; via 0x878 920: e1c120ba strh r2, [r1, #10] ; 0xa 924: e15f2bb2 ldrh r2, =0xc0 ; via 0x87a 928: e1c120bc strh r2, [r1, #12] ; 0xc 92c: e15f2bb8 ldrh r2, =0x40 ; via 0x87c 930: e1c120b8 strh r2, [r1, #8] 934: e15f2bbe ldrh r2, =0x2a ; via 0x87e 938: e1c120be strh r2, [r1, #14] ; 0xe 93c: e59f0020 ldr r0, =0x83aca4 ; via 0x964 940: e3a01b01 mov r1, #1024 ; 0x400 944: e2411004 sub r1, r1, #4 948: e0802001 add r2, r0, r1 94c: e3c22003 bic r2, r2, #3 950: e1a0d002 mov sp, r2 954: e92d100f stmdb sp!, {r0, r1, r2, r3, r12} 958: eb000534 bl 0x1e30 ; _sta_select_application 95c: e8bd100f ldmia sp!, {r0, r1, r2, r3, r12} 960: ea0005e4 b 0x20f8 ; _sta_select_application _INT_Initialize: ; exactly the same as the Mot C139 version 20f8: e51f1024 ldr r1, =0xffff9800 ; via 0x20dc 20fc: e15f21ba ldrh r2, =0x2002 ; via 0x20ea 2100: e1c120b0 strh r2, [r1] 2104: e5912000 ldr r2, [r1] 2108: e2022001 and r2, r2, #1 210c: e3520001 cmp r2, #1 2110: 0afffffb beq 0x2104 2114: e51f1044 ldr r1, =0xfffffd00 ; via 0x20d8 2118: e15f23b8 ldrh r2, =0x1081 ; via 0x20e8 211c: e1c120b0 strh r2, [r1] 2120: e51f1048 ldr r1, =0xfffffb10 ; via 0x20e0 2124: e15f23be ldrh r2, =0xf7ff ; via 0x20ee 2128: e1d100b0 ldrh r0, [r1] 212c: e0000002 and r0, r0, r2 2130: e1c100b0 strh r0, [r1] 2134: e51f1058 ldr r1, =0xffffff08 ; via 0x20e4 2138: e15f25b0 ldrh r2, =0x0 ; via 0x20f0 213c: e1c120b0 strh r2, [r1] 2140: e51f107c ldr r1, =0xfffffb00 ; via 0x20cc 2144: e15f29b0 ldrh r2, =0x2a1 ; via 0x20bc 2148: e1c120b0 strh r2, [r1] 214c: e15f29b6 ldrh r2, =0x2a1 ; via 0x20be 2150: e1c120b2 strh r2, [r1, #2] 2154: e15f29bc ldrh r2, =0x2a1 ; via 0x20c0 2158: e1c120b4 strh r2, [r1, #4] 215c: e15f2ab2 ldrh r2, =0x283 ; via 0x20c2 2160: e1c120b6 strh r2, [r1, #6] 2164: e15f2ab8 ldrh r2, =0xe85 ; via 0x20c4 2168: e1c120ba strh r2, [r1, #10] ; 0xa 216c: e15f2abe ldrh r2, =0x2c0 ; via 0x20c6 2170: e1c120bc strh r2, [r1, #12] ; 0xc 2174: e15f2bb4 ldrh r2, =0x40 ; via 0x20c8 2178: e1c120b8 strh r2, [r1, #8] 217c: e15f2bba ldrh r2, =0x2a ; via 0x20ca 2180: e1c120be strh r2, [r1, #14] ; 0xe 2184: e51f10bc ldr r1, =0xfffef006 ; via 0x20d0 2188: e1d120b0 ldrh r2, [r1] 218c: e51f00c0 ldr r0, =0x8 ; via 0x20d4 2190: e1800002 orr r0, r0, r2 2194: e1c100b0 strh r0, [r1] 2198: e10f0000 mrs r0, CPSR 219c: e3c0001f bic r0, r0, #31 ; 0x1f 21a0: e3800013 orr r0, r0, #19 ; 0x13 21a4: e38000c0 orr r0, r0, #192 ; 0xc0 21a8: e129f000 msr CPSR_fc, r0 21ac: e3a00502 mov r0, #8388608 ; 0x800000 21b0: e3a02000 mov r2, #0 21b4: e3a01721 mov r1, #8650752 ; 0x840000 21b8: e2411080 sub r1, r1, #128 ; 0x80 21bc: e4802004 str r2, [r0], #4 21c0: e1500001 cmp r0, r1 21c4: 1afffffc bne 0x21bc 21c8: e3a00401 mov r0, #16777216 ; 0x1000000 21cc: e3a02000 mov r2, #0 21d0: e3a01742 mov r1, #17301504 ; 0x1080000 21d4: e2411080 sub r1, r1, #128 ; 0x80 21d8: e4802004 str r2, [r0], #4 21dc: e1500001 cmp r0, r1 21e0: 1afffffc bne 0x21d8 21e4: e3a00001 mov r0, #1 21e8: e59f12c8 ldr r1, =0x83ac7c ; via 0x24b8 21ec: e5810000 str r0, [r1] 21f0: e59f02bc ldr r0, =0x83ad90 ; via 0x24b4 21f4: e3a01b01 mov r1, #1024 ; 0x400 21f8: e2411004 sub r1, r1, #4 21fc: e0802001 add r2, r0, r1 2200: e1a0a000 mov r10, r0 2204: e59f32b0 ldr r3, =0x80a9f4 ; via 0x24bc 2208: e583a000 str r10, [r3] 220c: e1a0d002 mov sp, r2 2210: e59f32a8 ldr r3, =0x80a55c ; via 0x24c0 2214: e583d000 str sp, [r3] 2218: e3a01080 mov r1, #128 ; 0x80 221c: e0822001 add r2, r2, r1 2220: e10f0000 mrs r0, CPSR 2224: e3c0001f bic r0, r0, #31 ; 0x1f 2228: e3800012 orr r0, r0, #18 ; 0x12 222c: e129f000 msr CPSR_fc, r0 2230: e1a0d002 mov sp, r2 2234: e3a01c02 mov r1, #512 ; 0x200 2238: e0822001 add r2, r2, r1 223c: e10f0000 mrs r0, CPSR 2240: e3c0001f bic r0, r0, #31 ; 0x1f 2244: e3800011 orr r0, r0, #17 ; 0x11 2248: e129f000 msr CPSR_fc, r0 224c: e1a0d002 mov sp, r2 2250: e10f0000 mrs r0, CPSR 2254: e3c0001f bic r0, r0, #31 ; 0x1f 2258: e3800017 orr r0, r0, #23 ; 0x17 225c: e129f000 msr CPSR_fc, r0 2260: e59fd268 ldr sp, =0x83acf8 ; via 0x24d0 2264: e10f0000 mrs r0, CPSR 2268: e3c0001f bic r0, r0, #31 ; 0x1f 226c: e380001b orr r0, r0, #27 ; 0x1b 2270: e129f000 msr CPSR_fc, r0 2274: e59fd254 ldr sp, =0x83acf8 ; via 0x24d0 2278: e10f0000 mrs r0, CPSR 227c: e3c0001f bic r0, r0, #31 ; 0x1f 2280: e3800013 orr r0, r0, #19 ; 0x13 2284: e129f000 msr CPSR_fc, r0 2288: e59f3234 ldr r3, =0x80aa08 ; via 0x24c4 228c: e2822004 add r2, r2, #4 2290: e5832000 str r2, [r3] 2294: e3a01b01 mov r1, #1024 ; 0x400 2298: e3c11003 bic r1, r1, #3 229c: e0822001 add r2, r2, r1 22a0: e59f3220 ldr r3, =0x80aa8c ; via 0x24c8 22a4: e5831000 str r1, [r3] 22a8: e3a01002 mov r1, #2 22ac: e59f3218 ldr r3, =0x80aa9c ; via 0x24cc 22b0: e5831000 str r1, [r3] 22b4: e1a04002 mov r4, r2 22b8: eb084361 bl 0x213044 ; _f_load_int_mem 22bc: e1a02004 mov r2, r4 22c0: e59f11f4 ldr r1, =0x80a9f4 ; via 0x24bc 22c4: e5910000 ldr r0, [r1] 22c8: e3a030fe mov r3, #254 ; 0xfe 22cc: e5c03000 strb r3, [r0] 22d0: e5c03001 strb r3, [r0, #1] 22d4: e5c03002 strb r3, [r0, #2] 22d8: e5c03003 strb r3, [r0, #3] 22dc: e4903004 ldr r3, [r0], #4 22e0: e4803004 str r3, [r0], #4 22e4: e1500002 cmp r0, r2 22e8: bafffffc blt 0x22e0 22ec: e51f0200 ldr r0, =0x2810 ; via 0x20f4 22f0: e3700001 cmn r0, #1 22f4: 1b000077 blne 0x24d8 ; _auto_init 22f8: e1a00002 mov r0, r2 22fc: ea084362 b 0x21308c ; _INC_Initialize $Init_Target: 200890: b530 push {r4, r5, lr} 200892: b081 sub sp, #4 200894: 497c ldr r1, =0xfffef008 ; via 0x200a88 200896: 2003 mov r0, #3 200898: 0340 lsl r0, r0, #13 20089a: 8008 strh r0, [r1, #0] 20089c: f009 fee0 bl 0x20a660 ; $TM_DisableWatchdog 2008a0: 487a ldr r0, =0xfffffd02 ; via 0x200a8c 2008a2: 2105 mov r1, #5 2008a4: 8001 strh r1, [r0, #0] 2008a6: 2180 mov r1, #128 ; 0x80 2008a8: 8802 ldrh r2, [r0, #0] 2008aa: 4311 orr r1, r2 2008ac: 8001 strh r1, [r0, #0] 2008ae: 4978 ldr r1, =0xffdf ; via 0x200a90 2008b0: 8802 ldrh r2, [r0, #0] 2008b2: 4011 and r1, r2 2008b4: 8001 strh r1, [r0, #0] 2008b6: 4d77 ldr r5, =0xfffff900 ; via 0x200a94 2008b8: 20ff mov r0, #255 ; 0xff 2008ba: 0200 lsl r0, r0, #8 2008bc: 8028 strh r0, [r5, #0] 2008be: 4c76 ldr r4, =0xffff9800 ; via 0x200a98 2008c0: 4876 ldr r0, =0xfff3 ; via 0x200a9c 2008c2: 8821 ldrh r1, [r4, #0] 2008c4: 4008 and r0, r1 2008c6: 8020 strh r0, [r4, #0] 2008c8: 8820 ldrh r0, [r4, #0] 2008ca: 8020 strh r0, [r4, #0] 2008cc: 4874 ldr r0, =0xf01f ; via 0x200aa0 2008ce: 8821 ldrh r1, [r4, #0] 2008d0: 4008 and r0, r1 2008d2: 8020 strh r0, [r4, #0] 2008d4: 2001 mov r0, #1 2008d6: 0280 lsl r0, r0, #10 2008d8: 8821 ldrh r1, [r4, #0] 2008da: 4308 orr r0, r1 2008dc: 8020 strh r0, [r4, #0] 2008de: 2000 mov r0, #0 2008e0: 2102 mov r1, #2 2008e2: 2200 mov r2, #0 2008e4: f00a fd04 bl 0x20b2f0 ; $CLKM_InitARMClock 2008e8: 486e ldr r0, =0xfffffb00 ; via 0x200aa4 2008ea: 21a3 mov r1, #163 ; 0xa3 2008ec: 8001 strh r1, [r0, #0] 2008ee: 8041 strh r1, [r0, #2] ; nCS2 setup is different: 0xA6 instead of TI/C11x/C139 0xA5 2008f0: 22a6 mov r2, #166 ; 0xa6 2008f2: 8082 strh r2, [r0, #4] 2008f4: 80c1 strh r1, [r0, #6] 2008f6: 2180 mov r1, #128 ; 0x80 2008f8: 8141 strh r1, [r0, #10] ; 0xa 2008fa: 21c0 mov r1, #192 ; 0xc0 2008fc: 8181 strh r1, [r0, #12] ; 0xc 2008fe: 2140 mov r1, #64 ; 0x40 200900: 8101 strh r1, [r0, #8] 200902: 2020 mov r0, #32 ; 0x20 200904: 8068 strh r0, [r5, #2] 200906: 2000 mov r0, #0 200908: 80a8 strh r0, [r5, #4] 20090a: 2010 mov r0, #16 ; 0x10 20090c: 8821 ldrh r1, [r4, #0] 20090e: 4308 orr r0, r1 200910: 8020 strh r0, [r4, #0] 200912: 4865 ldr r0, =0xfffffa08 ; via 0x200aa8 200914: 4965 ldr r1, =0xffff ; via 0x200aac 200916: 8001 strh r1, [r0, #0] 200918: 8041 strh r1, [r0, #2] 20091a: 2103 mov r1, #3 20091c: 8181 strh r1, [r0, #12] ; 0xc 20091e: f008 fe39 bl 0x209594 ; $IQ_SetupInterrupts 200922: 4863 ldr r0, =0xfffffc00 ; via 0x200ab0 200924: 2124 mov r1, #36 ; 0x24 200926: 8001 strh r1, [r0, #0] 200928: 210d mov r1, #13 ; 0xd 20092a: 8041 strh r1, [r0, #2] 20092c: 2500 mov r5, #0 20092e: 4861 ldr r0, =0xfffe2016 ; via 0x200ab4 200930: 8005 strh r5, [r0, #0] 200932: 4961 ldr r1, =0xfffe2014 ; via 0x200ab8 200934: 2002 mov r0, #2 200936: 8008 strh r0, [r1, #0] 200938: 4960 ldr r1, =0xfffe2002 ; via 0x200abc 20093a: 2084 mov r0, #132 ; 0x84 20093c: 8008 strh r0, [r1, #0] 20093e: 4860 ldr r0, =0xfffe2000 ; via 0x200ac0 200940: 4960 ldr r1, =0x3de0 ; via 0x200ac4 200942: 8001 strh r1, [r0, #0] 200944: 4960 ldr r1, =0xfffe2022 ; via 0x200ac8 200946: 220a mov r2, #10 ; 0xa 200948: 800a strh r2, [r1, #0] 20094a: 4960 ldr r1, =0xfffe2020 ; via 0x200acc 20094c: 4a60 ldr r2, =0x45a ; via 0x200ad0 20094e: 800a strh r2, [r1, #0] 200950: 4a60 ldr r2, =0xfffe201e ; via 0x200ad4 200952: 21ff mov r1, #255 ; 0xff 200954: 314b add r1, #75 ; 0x4b 200956: 8011 strh r1, [r2, #0] 200958: 495f ldr r1, =0xfffe201c ; via 0x200ad8 20095a: 221f mov r2, #31 ; 0x1f 20095c: 800a strh r2, [r1, #0] 20095e: 495f ldr r1, =0xfffe2024 ; via 0x200adc 200960: 800d strh r5, [r1, #0] 200962: 495f ldr r1, =0xfffe2010 ; via 0x200ae0 200964: 2202 mov r2, #2 200966: 880b ldrh r3, [r1, #0] 200968: 431a orr r2, r3 20096a: 800a strh r2, [r1, #0] 20096c: 4b5c ldr r3, =0xfffe2010 ; via 0x200ae0 20096e: 2104 mov r1, #4 200970: 881a ldrh r2, [r3, #0] 200972: 4311 orr r1, r2 200974: 8019 strh r1, [r3, #0] 200976: 4c5b ldr r4, =0xfffef006 ; via 0x200ae4 200978: 2127 mov r1, #39 ; 0x27 20097a: 80e1 strh r1, [r4, #6] 20097c: 8a01 ldrh r1, [r0, #16] ; 0x10 20097e: 0849 lsr r1, r1, #1 200980: d30f bcc 0x2009a2 200982: 8a01 ldrh r1, [r0, #16] ; 0x10 200984: 0409 lsl r1, r1, #16 200986: 0c49 lsr r1, r1, #17 200988: 0049 lsl r1, r1, #1 20098a: 8201 strh r1, [r0, #16] ; 0x10 20098c: 2101 mov r1, #1 20098e: e001 b 0x200994 200990: 9900 ldr r1, [sp, #0] 200992: 3101 add r1, #1 200994: 9100 str r1, [sp, #0] 200996: 9900 ldr r1, [sp, #0] 200998: 2932 cmp r1, #50 ; 0x32 20099a: d3f9 bcc 0x200990 20099c: 8a41 ldrh r1, [r0, #18] ; 0x12 20099e: 2900 cmp r1, #0 2009a0: d0fc beq 0x20099c 2009a2: f007 fb46 bl 0x208032 ; $AI_ClockEnable 2009a6: f007 fb4a bl 0x20803e ; $AI_InitIOConfig 2009aa: 2027 mov r0, #39 ; 0x27 2009ac: 0500 lsl r0, r0, #20 2009ae: 8005 strh r5, [r0, #0] ; extra code not in TI's version, beginning like C11x and C139 2009b0: 484d ldr r0, =0xffbf ; via 0x200ae8 2009b2: 8821 ldrh r1, [r4, #0] 2009b4: 4008 and r0, r1 2009b6: 8020 strh r0, [r4, #0] ; beginning of diff from C11x and C139 ; GPIO 2 is set low instead of high here 2009b8: 2002 mov r0, #2 2009ba: f007 fb10 bl 0x207fde ; $AI_ResetBit ; setting bits 5 and 9 in FFFE:F00A just like C11x and C139 versions 2009be: 2001 mov r0, #1 2009c0: 0240 lsl r0, r0, #9 2009c2: 88a1 ldrh r1, [r4, #4] 2009c4: 4308 orr r0, r1 2009c6: 80a0 strh r0, [r4, #4] 2009c8: 2020 mov r0, #32 ; 0x20 2009ca: 88a1 ldrh r1, [r4, #4] 2009cc: 4308 orr r0, r1 2009ce: 80a0 strh r0, [r4, #4] ; also setting bits 8, 7 and 0 (IO_CONF_REG |= 0x181) 2009d0: 20ff mov r0, #255 ; 0xff 2009d2: 3082 add r0, #130 ; 0x82 2009d4: 88a1 ldrh r1, [r4, #4] 2009d6: 4308 orr r0, r1 2009d8: 80a0 strh r0, [r4, #4] ; GPIO directions 2009da: 2004 mov r0, #4 2009dc: f007 fb0d bl 0x207ffa ; $AI_ConfigBitAsInput 2009e0: 2006 mov r0, #6 2009e2: f007 fb0a bl 0x207ffa ; $AI_ConfigBitAsInput 2009e6: 2008 mov r0, #8 2009e8: f007 fb00 bl 0x207fec ; $AI_ConfigBitAsOutput 2009ec: 200a mov r0, #10 ; 0xa 2009ee: f007 fafd bl 0x207fec ; $AI_ConfigBitAsOutput 2009f2: 200b mov r0, #11 ; 0xb 2009f4: f007 fb01 bl 0x207ffa ; $AI_ConfigBitAsInput 2009f8: 200c mov r0, #12 ; 0xc 2009fa: f007 faf7 bl 0x207fec ; $AI_ConfigBitAsOutput 2009fe: 2008 mov r0, #8 200a00: f007 faed bl 0x207fde ; $AI_ResetBit 200a04: 200a mov r0, #10 ; 0xa 200a06: f007 faea bl 0x207fde ; $AI_ResetBit 200a0a: 200c mov r0, #12 ; 0xc 200a0c: f007 fae7 bl 0x207fde ; $AI_ResetBit ; tail end of TI's original code 200a10: 2001 mov r0, #1 200a12: f009 fe2d bl 0x20a670 200a16: 2002 mov r0, #2 200a18: f009 fe2a bl 0x20a670 200a1c: b001 add sp, #4 200a1e: bd30 pop {r4, r5, pc} $Init_Drivers: 200a20: b500 push {lr} 200a22: f7c5 fdfd bl 0x1c6620 200a26: f7c6 fd8d bl 0x1c7544 200a2a: f780 fe7e bl 0x18172a 200a2e: f797 ffef bl 0x198a10 200a32: f7eb f8d9 bl 0x1ebbe8 200a36: f00c fbb5 bl 0x20d1a4 200a3a: f7a5 fc81 bl 0x1a6340 200a3e: f754 f8a1 bl 0x154b84 200a42: f7d3 f89e bl 0x1d3b82 200a46: bd00 pop {pc} $Init_Serial_Flows: 200a48: b500 push {lr} 200a4a: 4828 ldr r0, =0x83a728 ; via 0x200aec 200a4c: f7c4 fe7e bl 0x1c574c 200a50: 2000 mov r0, #0 200a52: 2102 mov r1, #2 200a54: 2200 mov r2, #0 200a56: f7c4 fef2 bl 0x1c583e 200a5a: f7c4 ff4c bl 0x1c58f6 200a5e: bd00 pop {pc} $Init_Unmask_IT: 200a60: b500 push {lr} 200a62: 2004 mov r0, #4 200a64: f008 fdf7 bl 0x209656 200a68: 2012 mov r0, #18 ; 0x12 200a6a: f008 fdf4 bl 0x209656 200a6e: 2007 mov r0, #7 200a70: f008 fdf1 bl 0x209656 200a74: 2008 mov r0, #8 200a76: f008 fdee bl 0x209656 200a7a: bd00 pop {pc} $GpUnmaskRTCAlarmInterrupts: 200a7c: b500 push {lr} 200a7e: 200a mov r0, #10 ; 0xa 200a80: f008 fde9 bl 0x209656 200a84: bd00 pop {pc} 200a86: 46c0 nop (mov r8, r8) $AI_EnableBit: 207fb4: 4a5a ldr r2, =0xfffef00a ; via 0x208120 207fb6: 2101 mov r1, #1 207fb8: 4081 lsl r1, r0 207fba: 8810 ldrh r0, [r2, #0] 207fbc: 4301 orr r1, r0 207fbe: 8011 strh r1, [r2, #0] 207fc0: 4770 bx lr $AI_DisableBit: 207fc2: 4a57 ldr r2, =0xfffef00a ; via 0x208120 207fc4: 2101 mov r1, #1 207fc6: 4081 lsl r1, r0 207fc8: 8810 ldrh r0, [r2, #0] 207fca: 4388 bic r0, r1 207fcc: 8010 strh r0, [r2, #0] 207fce: 4770 bx lr $AI_SetBit: 207fd0: 4a54 ldr r2, =0xfffe4802 ; via 0x208124 207fd2: 2101 mov r1, #1 207fd4: 4081 lsl r1, r0 207fd6: 8810 ldrh r0, [r2, #0] 207fd8: 4301 orr r1, r0 207fda: 8011 strh r1, [r2, #0] 207fdc: 4770 bx lr $AI_ResetBit: 207fde: 4a51 ldr r2, =0xfffe4802 ; via 0x208124 207fe0: 2101 mov r1, #1 207fe2: 4081 lsl r1, r0 207fe4: 8810 ldrh r0, [r2, #0] 207fe6: 4388 bic r0, r1 207fe8: 8010 strh r0, [r2, #0] 207fea: 4770 bx lr $AI_ConfigBitAsOutput: 207fec: 4a4e ldr r2, =0xfffe4804 ; via 0x208128 207fee: 2101 mov r1, #1 207ff0: 4081 lsl r1, r0 207ff2: 8810 ldrh r0, [r2, #0] 207ff4: 4388 bic r0, r1 207ff6: 8010 strh r0, [r2, #0] 207ff8: 4770 bx lr $AI_ConfigBitAsInput: 207ffa: 4a4b ldr r2, =0xfffe4804 ; via 0x208128 207ffc: 2101 mov r1, #1 207ffe: 4081 lsl r1, r0 208000: 8810 ldrh r0, [r2, #0] 208002: 4301 orr r1, r0 208004: 8011 strh r1, [r2, #0] 208006: 4770 bx lr $AI_ReadBit: 208008: 4948 ldr r1, =0xfffe4800 ; via 0x20812c 20800a: 8809 ldrh r1, [r1, #0] 20800c: 4101 asr r1, r0 20800e: 07c8 lsl r0, r1, #31 208010: 0fc0 lsr r0, r0, #31 208012: 0600 lsl r0, r0, #24 208014: 0e00 lsr r0, r0, #24 208016: 4770 bx lr $AI_Power: 208018: b500 push {lr} 20801a: 2800 cmp r0, #0 20801c: d101 bne 0x208022 20801e: f7be fe3d bl 0x1c6c9c 208022: bd00 pop {pc} $AI_ResetIoConfig: 208024: 4940 ldr r1, =0xfffe4804 ; via 0x208128 208026: 4842 ldr r0, =0xffff ; via 0x208130 208028: 8008 strh r0, [r1, #0] 20802a: 483d ldr r0, =0xfffef00a ; via 0x208120 20802c: 2100 mov r1, #0 20802e: 8001 strh r1, [r0, #0] 208030: 4770 bx lr $AI_ClockEnable: 208032: 4940 ldr r1, =0xfffe4806 ; via 0x208134 208034: 2020 mov r0, #32 ; 0x20 208036: 880a ldrh r2, [r1, #0] 208038: 4310 orr r0, r2 20803a: 8008 strh r0, [r1, #0] 20803c: 4770 bx lr $AI_InitIOConfig: 20803e: b500 push {lr} 208040: f7ff fff0 bl 0x208024 ; $AI_ResetIoConfig ; insert new to this J100 version (not from TI, not in C11x, not in C139) ; clears bit 10 in FFFE:F008 to ensure that I/O 3 is a GPIO 208044: 493c ldr r1, =0xfffef008 ; via 0x208138 208046: 483d ldr r0, =0xfbff ; via 0x20813c 208048: 880a ldrh r2, [r1, #0] 20804a: 4010 and r0, r2 20804c: 8008 strh r0, [r1, #0] 20804e: 2000 mov r0, #0 208050: f7ff ffb0 bl 0x207fb4 ; $AI_EnableBit 208054: 2002 mov r0, #2 208056: f7ff ffad bl 0x207fb4 ; $AI_EnableBit 20805a: 2003 mov r0, #3 20805c: f7ff ffaa bl 0x207fb4 ; $AI_EnableBit 208060: 2004 mov r0, #4 208062: f7ff ffa7 bl 0x207fb4 ; $AI_EnableBit 208066: 2005 mov r0, #5 208068: f7ff ffa4 bl 0x207fb4 ; $AI_EnableBit 20806c: 2006 mov r0, #6 20806e: f7ff ffa1 bl 0x207fb4 ; $AI_EnableBit 208072: 2007 mov r0, #7 208074: f7ff ff9e bl 0x207fb4 ; $AI_EnableBit 208078: 2008 mov r0, #8 20807a: f7ff ff9b bl 0x207fb4 ; $AI_EnableBit 20807e: 2009 mov r0, #9 208080: f7ff ff98 bl 0x207fb4 ; $AI_EnableBit 208084: 4927 ldr r1, =0xfffe4802 ; via 0x208124 208086: 203f mov r0, #63 ; 0x3f 208088: 0200 lsl r0, r0, #8 20808a: 8008 strh r0, [r1, #0] 20808c: 2001 mov r0, #1 20808e: f7ff ffad bl 0x207fec ; $AI_ConfigBitAsOutput 208092: 2002 mov r0, #2 208094: f7ff ffaa bl 0x207fec ; $AI_ConfigBitAsOutput 208098: 2005 mov r0, #5 20809a: f7ff ffa7 bl 0x207fec ; $AI_ConfigBitAsOutput 20809e: 2003 mov r0, #3 2080a0: f7ff ffab bl 0x207ffa ; $AI_ConfigBitAsInput 2080a4: 2004 mov r0, #4 2080a6: f7ff ffa8 bl 0x207ffa ; $AI_ConfigBitAsInput 2080aa: 2007 mov r0, #7 2080ac: f7ff ff9e bl 0x207fec ; $AI_ConfigBitAsOutput 2080b0: 2008 mov r0, #8 2080b2: f7ff ff9b bl 0x207fec ; $AI_ConfigBitAsOutput 2080b6: 200c mov r0, #12 ; 0xc 2080b8: f7ff ff98 bl 0x207fec ; $AI_ConfigBitAsOutput 2080bc: 2008 mov r0, #8 2080be: f7ff ff8e bl 0x207fde ; $AI_ResetBit 2080c2: 200c mov r0, #12 ; 0xc 2080c4: f7ff ff8b bl 0x207fde ; $AI_ResetBit 2080c8: 2009 mov r0, #9 2080ca: f7ff ff96 bl 0x207ffa ; $AI_ConfigBitAsInput 2080ce: 200b mov r0, #11 ; 0xb 2080d0: f7ff ff93 bl 0x207ffa ; $AI_ConfigBitAsInput 2080d4: 200d mov r0, #13 ; 0xd 2080d6: f7ff ff90 bl 0x207ffa ; $AI_ConfigBitAsInput 2080da: 200e mov r0, #14 ; 0xe 2080dc: f7ff ff86 bl 0x207fec ; $AI_ConfigBitAsOutput 2080e0: 200f mov r0, #15 ; 0xf 2080e2: f7ff ff83 bl 0x207fec ; $AI_ConfigBitAsOutput 2080e6: bd00 pop {pc} $AI_SelectIOForIT: 2080e8: 0109 lsl r1, r1, #4 2080ea: 1840 add r0, r0, r1 2080ec: 0040 lsl r0, r0, #1 2080ee: 3001 add r0, #1 2080f0: 4913 ldr r1, =0xfffe4814 ; via 0x208140 2080f2: 8008 strh r0, [r1, #0] 2080f4: 4770 bx lr ; new function added in this J100 version 2080f6: 4913 ldr r1, =0xfffe481a ; via 0x208144 2080f8: 8008 strh r0, [r1, #0] 2080fa: 4770 bx lr $AI_CheckITSource: 2080fc: 2100 mov r1, #0 2080fe: 4a12 ldr r2, =0xfffe4816 ; via 0x208148 208100: 8812 ldrh r2, [r2, #0] 208102: 4210 tst r0, r2 208104: d000 beq 0x208108 208106: 2101 mov r1, #1 208108: 1c08 add r0, r1, #0 20810a: 4770 bx lr $AI_UnmaskIT: 20810c: 4a0f ldr r2, =0xfffe4818 ; via 0x20814c 20810e: 8811 ldrh r1, [r2, #0] 208110: 4381 bic r1, r0 208112: 8011 strh r1, [r2, #0] 208114: 4770 bx lr $AI_MaskIT: 208116: 4a0d ldr r2, =0xfffe4818 ; via 0x20814c 208118: 8811 ldrh r1, [r2, #0] 20811a: 4301 orr r1, r0 20811c: 8011 strh r1, [r2, #0] 20811e: 4770 bx lr $INC_Initialize: 212190: b510 push {r4, lr} 212192: 1c04 add r4, r0, #0 212194: 4813 ldr r0, =0x83ac94 ; via 0x2121e4 212196: 2101 mov r1, #1 212198: 6001 str r1, [r0, #0] 21219a: f001 f877 bl 0x21328c 21219e: f001 f879 bl 0x213294 2121a2: f001 f839 bl 0x213218 2121a6: f000 fba7 bl 0x2128f8 2121aa: f7fb f8a9 bl 0x20d300 2121ae: f000 fd77 bl 0x212ca0 2121b2: f000 fdd5 bl 0x212d60 2121b6: f000 fdc3 bl 0x212d40 2121ba: f000 fdf1 bl 0x212da0 2121be: f000 fdaf bl 0x212d20 2121c2: f000 fdfd bl 0x212dc0 2121c6: f000 fd8b bl 0x212ce0 2121ca: f7fd ff93 bl 0x2100f4 2121ce: f000 fdd7 bl 0x212d80 2121d2: 1c20 add r0, r4, #0 2121d4: f000 fc6c bl 0x212ab0 ; $Application_Initialize 2121d8: 4902 ldr r1, =0x83ac94 ; via 0x2121e4 2121da: 2002 mov r0, #2 2121dc: 6008 str r0, [r1, #0] 2121de: f79e fc77 bl 0x1b0ad0 2121e2: bd10 pop {r4, pc} $Application_Initialize: 212ab0: b500 push {lr} 212ab2: f7ed feed bl 0x200890 ; $Init_Target 212ab6: f7ed ffb3 bl 0x200a20 ; $Init_Drivers 212aba: f7bb fd7c bl 0x1ce5b6 212abe: f72d f931 bl 0x13fd24 212ac2: f7bb fd78 bl 0x1ce5b6 212ac6: f7ed ffbf bl 0x200a48 ; $Init_Serial_Flows 212aca: f7a3 fbb2 bl 0x1b6232 212ace: f7ed ffc7 bl 0x200a60 ; $Init_Unmask_IT 212ad2: bd00 pop {pc} _INC_Initialize: ; call veneer 21308c: e92d4000 stmdb sp!, {lr} 213090: e28fe001 add lr, pc, #1 213094: e12fff1e bx lr 213098: f7ff f87a bl 0x212190 ; $INC_Initialize 21309c: 4778 bx pc 21309e: 46c0 nop (mov r8, r8) 2130a0: e8bd8000 ldmia sp!, {pc}