FreeCalypso > hg > freecalypso-reveng
view compal/sym-fw-disasm @ 401:4b6b595ae0a0
compal/boot/code-deriv: new analysis
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 14 Jan 2023 23:59:23 +0000 |
parents | 37ee46a0dde7 |
children |
line wrap: on
line source
; This disassembly is an analysis of the boot path up to Init_Target() ; and AI_InitIOConfig() in the special Mot C11x fw version with symbols ; (R87.2.1.03.m0 and R87.2.1.03.map), made in order to look into these ; critical board-specific init functions and in order to better prepare ; ourselves for doing similar analysis on other Compal fw versions ; for which we don't have any symbols. ; ; 2022 update: we have now also done some disassembly of Compal's buzzer ; melody player code, guided by the linker map and symbol table. 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: ; Compal's addition for 26 MHz clock input to Calypso 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] ; matches TI's version from here 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, =0x83e730 ; 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: eb00051e bl 0x1dd8 ; _sta_select_application 95c: e8bd100f ldmia sp!, {r0, r1, r2, r3, r12} 960: ea0005e4 b 0x20f8 ; _INT_Initialize _INT_Initialize: ; beginning matches TI's 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 ; diff from TI: Compal's full RAM clearing 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: e3a01741 mov r1, #17039360 ; 0x1040000 21d4: e2411080 sub r1, r1, #128 ; 0x80 21d8: e4802004 str r2, [r0], #4 21dc: e1500001 cmp r0, r1 21e0: 1afffffc bne 0x21d8 ; TI's code continues with INT_Loaded_Flag setting 21e4: e3a00001 mov r0, #1 21e8: e59f12c8 ldr r1, =0x83e6f4 ; via 0x24b8 21ec: e5810000 str r0, [r1] 21f0: e59f02bc ldr r0, =0x83e818 ; 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, =0x83e6dc ; via 0x24bc 2208: e583a000 str r10, [r3] 220c: e1a0d002 mov sp, r2 2210: e59f32a8 ldr r3, =0x834920 ; 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, =0x83e780 ; 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, =0x83e780 ; 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, =0x83cfd8 ; 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, =0x83d05c ; via 0x24c8 22a4: e5831000 str r1, [r3] 22a8: e3a01002 mov r1, #2 22ac: e59f3218 ldr r3, =0x83d06c ; via 0x24cc 22b0: e5831000 str r1, [r3] 22b4: e1a04002 mov r4, r2 22b8: eb061cb4 bl 0x189590 ; _f_load_int_mem 22bc: e1a02004 mov r2, r4 22c0: e59f11f4 ldr r1, =0x83e6dc ; 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, =0x280c ; via 0x20f4 22f0: e3700001 cmn r0, #1 22f4: 1b000077 blne 0x24d8 ; _auto_init 22f8: e1a00002 mov r0, r2 22fc: ea061cdf b 0x189680 ; _INC_Initialize ; Compal-original buz.obj .text section $PWT_BZ_set: 16dba8: 49de ldr r1, =0xfffef008 ; via 0x16df24 16dbaa: 2020 mov r0, #32 ; 0x20 16dbac: 880a ldrh r2, [r1, #0] 16dbae: 4310 orr r0, r2 16dbb0: 8008 strh r0, [r1, #0] 16dbb2: 4770 bx lr $PWT_BZ_reset: 16dbb4: 49db ldr r1, =0xfffef008 ; via 0x16df24 16dbb6: 48dc ldr r0, =0xffdf ; via 0x16df28 16dbb8: 880a ldrh r2, [r1, #0] 16dbba: 4010 and r0, r2 16dbbc: 8008 strh r0, [r1, #0] 16dbbe: 4770 bx lr $lmi_buzzer_on: 16dbc0: b510 push {r4, lr} 16dbc2: 4bda ldr r3, =0xfffe8802 ; via 0x16df2c 16dbc4: 2201 mov r2, #1 16dbc6: 781c ldrb r4, [r3, #0] 16dbc8: 4322 orr r2, r4 16dbca: 701a strb r2, [r3, #0] 16dbcc: 4ad8 ldr r2, =0xfffe8800 ; via 0x16df30 16dbce: 7010 strb r0, [r2, #0] 16dbd0: 2001 mov r0, #1 16dbd2: 0049 lsl r1, r1, #1 16dbd4: 4308 orr r0, r1 16dbd6: 7050 strb r0, [r2, #1] 16dbd8: bd10 pop {r4, pc} $lmi_buzzer_off: 16dbda: 48d6 ldr r0, =0xfffe8801 ; via 0x16df34 16dbdc: 7841 ldrb r1, [r0, #1] 16dbde: 0849 lsr r1, r1, #1 16dbe0: d305 bcc 0x16dbee 16dbe2: 2100 mov r1, #0 16dbe4: 7001 strb r1, [r0, #0] 16dbe6: 21fe mov r1, #254 ; 0xfe 16dbe8: 7842 ldrb r2, [r0, #1] 16dbea: 4011 and r1, r2 16dbec: 7041 strb r1, [r0, #1] 16dbee: 4770 bx lr $pick_tempo_shift: 16dbf0: 1e80 sub r0, r0, #2 16dbf2: 2800 cmp r0, #0 16dbf4: d012 beq 0x16dc1c 16dbf6: 3801 sub r0, #1 16dbf8: 2800 cmp r0, #0 16dbfa: d00d beq 0x16dc18 16dbfc: 3803 sub r0, #3 16dbfe: 2802 cmp r0, #2 16dc00: d90a bls 0x16dc18 16dc02: 3806 sub r0, #6 16dc04: 2801 cmp r0, #1 16dc06: d907 bls 0x16dc18 16dc08: 3803 sub r0, #3 16dc0a: 2802 cmp r0, #2 16dc0c: d904 bls 0x16dc18 16dc0e: 3804 sub r0, #4 16dc10: 2801 cmp r0, #1 16dc12: d901 bls 0x16dc18 16dc14: 2000 mov r0, #0 16dc16: 4770 bx lr 16dc18: 2001 mov r0, #1 16dc1a: 4770 bx lr 16dc1c: 2002 mov r0, #2 16dc1e: 4770 bx lr $pick_freq_shift: 16dc20: 1e40 sub r0, r0, #1 16dc22: 2813 cmp r0, #19 ; 0x13 16dc24: d903 bls 0x16dc2e 16dc26: 3825 sub r0, #37 ; 0x25 16dc28: 2800 cmp r0, #0 16dc2a: d02f beq 0x16dc8c 16dc2c: e02c b 0x16dc88 16dc2e: a102 add r1, pc, #8 16dc30: 0080 lsl r0, r0, #2 16dc32: 5808 ldr r0, [r1, r0] 16dc34: 4687 mov pc, r0 16dc36: 46c0 nop (mov r8, r8) 16dc38: 0016dca8 16dc3c: 0016dca4 16dc40: 0016dca0 16dc44: 0016dca8 16dc48: 0016dc9c 16dc4c: 0016dca8 16dc50: 0016dc88 16dc54: 0016dca8 16dc58: 0016dc98 16dc5c: 0016dc98 16dc60: 0016dc90 16dc64: 0016dc90 16dc68: 0016dc9c 16dc6c: 0016dc9c 16dc70: 0016dc88 16dc74: 0016dc98 16dc78: 0016dca8 16dc7c: 0016dc88 16dc80: 0016dc94 16dc84: 0016dc90 16dc88: 2100 mov r1, #0 16dc8a: e00f b 0x16dcac 16dc8c: 2101 mov r1, #1 16dc8e: e00d b 0x16dcac 16dc90: 2103 mov r1, #3 16dc92: e00a b 0x16dcaa 16dc94: 2106 mov r1, #6 16dc96: e008 b 0x16dcaa 16dc98: 2101 mov r1, #1 16dc9a: e006 b 0x16dcaa 16dc9c: 2102 mov r1, #2 16dc9e: e004 b 0x16dcaa 16dca0: 2105 mov r1, #5 16dca2: e002 b 0x16dcaa 16dca4: 2108 mov r1, #8 16dca6: e000 b 0x16dcaa 16dca8: 2104 mov r1, #4 16dcaa: 43c9 mvn r1, r1 16dcac: 48a2 ldr r0, =0x83e408 ; _freq_shift 16dcae: 6001 str r1, [r0, #0] 16dcb0: 2100 mov r1, #0 16dcb2: 5e40 ldrsh r0, [r0, r1] 16dcb4: 4770 bx lr $lmi_custom_tone_req_ring: 16dcb6: b5f0 push {r4, r5, r6, r7, lr} 16dcb8: 1c04 add r4, r0, #0 16dcba: 4da0 ldr r5, =0x83e414 ; _lmi_audio_control 16dcbc: 2005 mov r0, #5 16dcbe: 7028 strb r0, [r5, #0] 16dcc0: 2c25 cmp r4, #37 ; 0x25 16dcc2: d001 beq 0x16dcc8 16dcc4: 2c26 cmp r4, #38 ; 0x26 16dcc6: d101 bne 0x16dccc 16dcc8: 2004 mov r0, #4 16dcca: 7028 strb r0, [r5, #0] 16dccc: 2600 mov r6, #0 16dcce: 706e strb r6, [r5, #1] 16dcd0: 2c01 cmp r4, #1 16dcd2: d101 bne 0x16dcd8 16dcd4: 489a ldr r0, =0x34ab4 ; _custom_tone_volume_table_1 16dcd6: e008 b 0x16dcea 16dcd8: 2c02 cmp r4, #2 16dcda: d003 beq 0x16dce4 16dcdc: 2c0b cmp r4, #11 ; 0xb 16dcde: d001 beq 0x16dce4 16dce0: 2c09 cmp r4, #9 16dce2: d101 bne 0x16dce8 16dce4: 4897 ldr r0, =0x34abc ; _custom_tone_volume_table_2 16dce6: e000 b 0x16dcea 16dce8: 4897 ldr r0, =0x34aac ; _custom_tone_volume_table 16dcea: 5c40 ldrb r0, [r0, r1] 16dcec: 70a8 strb r0, [r5, #2] 16dcee: 70ea strb r2, [r5, #3] 16dcf0: 2701 mov r7, #1 16dcf2: 712f strb r7, [r5, #4] 16dcf4: 80ee strh r6, [r5, #6] 16dcf6: f018 faeb bl 0x1862d0 ; $mmiGetRingTone 16dcfa: 2c00 cmp r4, #0 16dcfc: dd1d ble 0x16dd3a 16dcfe: 2c2a cmp r4, #42 ; 0x2a 16dd00: dc1b bgt 0x16dd3a 16dd02: 0121 lsl r1, r4, #4 16dd04: 1841 add r1, r0, r1 16dd06: 4a91 ldr r2, =0x83e40c ; _lmi_playing_tone 16dd08: 1c08 add r0, r1, #0 16dd0a: 3810 sub r0, #16 ; 0x10 16dd0c: 6800 ldr r0, [r0, #0] 16dd0e: 6010 str r0, [r2, #0] 16dd10: 200c mov r0, #12 ; 0xc 16dd12: 1a08 sub r0, r1, r0 16dd14: 498e ldr r1, =0x83e410 ; _freq_component 16dd16: 7802 ldrb r2, [r0, #0] 16dd18: 700a strb r2, [r1, #0] 16dd1a: 498e ldr r1, =0x83e411 ; _style_infor 16dd1c: 700f strb r7, [r1, #0] 16dd1e: 2c2a cmp r4, #42 ; 0x2a 16dd20: db02 blt 0x16dd28 16dd22: 4885 ldr r0, =0x83e408 ; _freq_shift 16dd24: 6006 str r6, [r0, #0] 16dd26: e006 b 0x16dd36 16dd28: 4a83 ldr r2, =0x83e408 ; _freq_shift 16dd2a: 6841 ldr r1, [r0, #4] 16dd2c: 6011 str r1, [r2, #0] 16dd2e: 6880 ldr r0, [r0, #8] 16dd30: 7829 ldrb r1, [r5, #0] 16dd32: 1840 add r0, r0, r1 16dd34: 7028 strb r0, [r5, #0] 16dd36: 4888 ldr r0, =0x83e404 ; _lmi_play_state 16dd38: 7007 strb r7, [r0, #0] 16dd3a: bdf0 pop {r4, r5, r6, r7, pc} $lmi_custom_tone_req: 16dd3c: b530 push {r4, r5, lr} 16dd3e: 4c7f ldr r4, =0x83e414 ; _lmi_audio_control 16dd40: 2505 mov r5, #5 16dd42: 7025 strb r5, [r4, #0] 16dd44: 2500 mov r5, #0 16dd46: 7065 strb r5, [r4, #1] 16dd48: 4d7f ldr r5, =0x34aac ; _custom_tone_volume_table 16dd4a: 5c69 ldrb r1, [r5, r1] 16dd4c: 70a1 strb r1, [r4, #2] 16dd4e: 70e2 strb r2, [r4, #3] 16dd50: 2101 mov r1, #1 16dd52: 7121 strb r1, [r4, #4] 16dd54: 2200 mov r2, #0 16dd56: 80e2 strh r2, [r4, #6] 16dd58: 4a7e ldr r2, =0x83e411 ; _style_infor 16dd5a: 7011 strb r1, [r2, #0] 16dd5c: 4a7b ldr r2, =0x83e40c ; _lmi_playing_tone 16dd5e: 6010 str r0, [r2, #0] 16dd60: 487b ldr r0, =0x83e410 ; _freq_component 16dd62: 7003 strb r3, [r0, #0] 16dd64: 4874 ldr r0, =0x83e408 ; _freq_shift 16dd66: 2200 mov r2, #0 16dd68: 6002 str r2, [r0, #0] 16dd6a: 487b ldr r0, =0x83e404 ; _lmi_play_state 16dd6c: 7001 strb r1, [r0, #0] 16dd6e: bd30 pop {r4, r5, pc} $DM_buzzer_ringtone_control: 16dd70: b500 push {lr} 16dd72: 2800 cmp r0, #0 16dd74: d107 bne 0x16dd86 16dd76: f7ff ff30 bl 0x16dbda ; $lmi_buzzer_off 16dd7a: f7ff ff1b bl 0x16dbb4 ; $PWT_BZ_reset 16dd7e: 4976 ldr r1, =0x83e404 ; _lmi_play_state 16dd80: 2000 mov r0, #0 16dd82: 7008 strb r0, [r1, #0] 16dd84: bd00 pop {pc} 16dd86: 1c10 add r0, r2, #0 16dd88: 1c1a add r2, r3, #0 16dd8a: f7ff ff94 bl 0x16dcb6 ; $lmi_custom_tone_req_ring 16dd8e: f7ff ff0b bl 0x16dba8 ; $PWT_BZ_set 16dd92: bd00 pop {pc} $DM_buzzer_control: 16dd94: b590 push {r4, r7, lr} 16dd96: af03 add r7, sp, #12 ; 0xc 16dd98: 1c1c add r4, r3, #0 16dd9a: 783b ldrb r3, [r7, #0] 16dd9c: 2800 cmp r0, #0 16dd9e: d107 bne 0x16ddb0 16dda0: f7ff ff1b bl 0x16dbda ; $lmi_buzzer_off 16dda4: f7ff ff06 bl 0x16dbb4 ; $PWT_BZ_reset 16dda8: 496b ldr r1, =0x83e404 ; _lmi_play_state 16ddaa: 2000 mov r0, #0 16ddac: 7008 strb r0, [r1, #0] 16ddae: bd90 pop {r4, r7, pc} 16ddb0: 1c10 add r0, r2, #0 16ddb2: 1c22 add r2, r4, #0 16ddb4: f7ff ffc2 bl 0x16dd3c ; $lmi_custom_tone_req 16ddb8: f7ff fef6 bl 0x16dba8 ; $PWT_BZ_set 16ddbc: bd90 pop {r4, r7, pc} $BZ_status: 16ddbe: 2000 mov r0, #0 16ddc0: 4965 ldr r1, =0x83e404 ; _lmi_play_state 16ddc2: 7809 ldrb r1, [r1, #0] 16ddc4: 2900 cmp r1, #0 16ddc6: d000 beq 0x16ddca 16ddc8: 2001 mov r0, #1 16ddca: 4770 bx lr $lmi_custom_tone_handler: 16ddcc: b570 push {r4, r5, r6, lr} 16ddce: b094 sub sp, #80 ; 0x50 16ddd0: 4d61 ldr r5, =0x83e404 ; _lmi_play_state 16ddd2: 7828 ldrb r0, [r5, #0] 16ddd4: 2800 cmp r0, #0 16ddd6: d100 bne 0x16ddda 16ddd8: e099 b 0x16df0e 16ddda: 485c ldr r0, =0x83e40c ; _lmi_playing_tone 16dddc: 6801 ldr r1, [r0, #0] 16ddde: 4c57 ldr r4, =0x83e414 ; _lmi_audio_control 16dde0: 7860 ldrb r0, [r4, #1] 16dde2: 0080 lsl r0, r0, #2 16dde4: 180e add r6, r1, r0 16dde6: 7920 ldrb r0, [r4, #4] 16dde8: 1e40 sub r0, r0, #1 16ddea: 2800 cmp r0, #0 16ddec: d053 beq 0x16de96 16ddee: 3801 sub r0, #1 16ddf0: 2800 cmp r0, #0 16ddf2: d035 beq 0x16de60 16ddf4: 3801 sub r0, #1 16ddf6: 2800 cmp r0, #0 16ddf8: d15b bne 0x16deb2 16ddfa: 2006 mov r0, #6 16ddfc: 5f00 ldrsh r0, [r0, r4] 16ddfe: 2800 cmp r0, #0 16de00: dc44 bgt 0x16de8c 16de02: 7860 ldrb r0, [r4, #1] 16de04: 3001 add r0, #1 16de06: 7060 strb r0, [r4, #1] 16de08: 7860 ldrb r0, [r4, #1] 16de0a: 0080 lsl r0, r0, #2 16de0c: 180d add r5, r1, r0 16de0e: 8868 ldrh r0, [r5, #2] 16de10: 2800 cmp r0, #0 16de12: d10f bne 0x16de34 16de14: 7861 ldrb r1, [r4, #1] 16de16: 484e ldr r0, =0x83e410 ; _freq_component 16de18: 7800 ldrb r0, [r0, #0] 16de1a: 3801 sub r0, #1 16de1c: 4281 cmp r1, r0 16de1e: da04 bge 0x16de2a 16de20: 4944 ldr r1, =0xfffe8801 ; via 0x16df34 16de22: 2000 mov r0, #0 16de24: 7008 strb r0, [r1, #0] 16de26: 2003 mov r0, #3 16de28: e015 b 0x16de56 16de2a: 2001 mov r0, #1 16de2c: 7120 strb r0, [r4, #4] 16de2e: 2000 mov r0, #0 16de30: 7060 strb r0, [r4, #1] 16de32: e011 b 0x16de58 16de34: 4840 ldr r0, =0x83e408 ; _freq_shift 16de36: 8801 ldrh r1, [r0, #0] 16de38: 8868 ldrh r0, [r5, #2] 16de3a: 1808 add r0, r1, r0 16de3c: 0400 lsl r0, r0, #16 16de3e: 0c00 lsr r0, r0, #16 16de40: 0040 lsl r0, r0, #1 16de42: 4946 ldr r1, =0x34ac4 ; _l1_tone_table 16de44: 5c08 ldrb r0, [r1, r0] 16de46: 78a1 ldrb r1, [r4, #2] 16de48: 786a ldrb r2, [r5, #1] 16de4a: 1889 add r1, r1, r2 16de4c: 0609 lsl r1, r1, #24 16de4e: 0e09 lsr r1, r1, #24 16de50: f7ff feb6 bl 0x16dbc0 ; $lmi_buzzer_on 16de54: 2002 mov r0, #2 16de56: 7120 strb r0, [r4, #4] 16de58: 7828 ldrb r0, [r5, #0] 16de5a: 7821 ldrb r1, [r4, #0] 16de5c: 4348 mul r0, r1 16de5e: e018 b 0x16de92 16de60: 2006 mov r0, #6 16de62: 5f00 ldrsh r0, [r0, r4] 16de64: 2800 cmp r0, #0 16de66: dc11 bgt 0x16de8c 16de68: 2100 mov r1, #0 16de6a: 4832 ldr r0, =0xfffe8801 ; via 0x16df34 16de6c: 7001 strb r1, [r0, #0] 16de6e: 7862 ldrb r2, [r4, #1] 16de70: 4837 ldr r0, =0x83e410 ; _freq_component 16de72: 7800 ldrb r0, [r0, #0] 16de74: 3801 sub r0, #1 16de76: 4282 cmp r2, r0 16de78: db02 blt 0x16de80 16de7a: 2001 mov r0, #1 16de7c: 7061 strb r1, [r4, #1] 16de7e: e003 b 0x16de88 16de80: 4834 ldr r0, =0x83e411 ; _style_infor 16de82: 7800 ldrb r0, [r0, #0] 16de84: 80e0 strh r0, [r4, #6] 16de86: 2003 mov r0, #3 16de88: 7120 strb r0, [r4, #4] 16de8a: e040 b 0x16df0e 16de8c: 2006 mov r0, #6 16de8e: 5f00 ldrsh r0, [r0, r4] 16de90: 3801 sub r0, #1 16de92: 80e0 strh r0, [r4, #6] 16de94: e03b b 0x16df0e 16de96: 4668 mov r0, sp 16de98: a11e add r1, pc, #120 ; 0x78 16de9a: f01a f9e7 bl 0x18826c ; $sprintf 16de9e: 4668 mov r0, sp 16dea0: f751 fd90 bl 0xbf9c4 ; $L1_send_debug 16dea4: 78e0 ldrb r0, [r4, #3] 16dea6: 2800 cmp r0, #0 16dea8: d003 beq 0x16deb2 16deaa: 4829 ldr r0, =0x83e410 ; _freq_component 16deac: 7800 ldrb r0, [r0, #0] 16deae: 2800 cmp r0, #0 16deb0: d106 bne 0x16dec0 16deb2: f7ff fe92 bl 0x16dbda ; $lmi_buzzer_off 16deb6: f7ff fe7d bl 0x16dbb4 ; $PWT_BZ_reset 16deba: 2000 mov r0, #0 16debc: 7028 strb r0, [r5, #0] 16debe: e026 b 0x16df0e 16dec0: 8870 ldrh r0, [r6, #2] 16dec2: 2800 cmp r0, #0 16dec4: d109 bne 0x16deda 16dec6: 481b ldr r0, =0xfffe8801 ; via 0x16df34 16dec8: 1c42 add r2, r0, #1 16deca: 2101 mov r1, #1 16decc: 7813 ldrb r3, [r2, #0] 16dece: 4319 orr r1, r3 16ded0: 7011 strb r1, [r2, #0] 16ded2: 2100 mov r1, #0 16ded4: 7001 strb r1, [r0, #0] 16ded6: 2003 mov r0, #3 16ded8: e00f b 0x16defa 16deda: 4917 ldr r1, =0x83e408 ; _freq_shift 16dedc: 8809 ldrh r1, [r1, #0] 16dede: 1840 add r0, r0, r1 16dee0: 0400 lsl r0, r0, #16 16dee2: 0c00 lsr r0, r0, #16 16dee4: 0040 lsl r0, r0, #1 16dee6: 491d ldr r1, =0x34ac4 ; _l1_tone_table 16dee8: 5c08 ldrb r0, [r1, r0] 16deea: 78a1 ldrb r1, [r4, #2] 16deec: 7872 ldrb r2, [r6, #1] 16deee: 1889 add r1, r1, r2 16def0: 0609 lsl r1, r1, #24 16def2: 0e09 lsr r1, r1, #24 16def4: f7ff fe64 bl 0x16dbc0 ; $lmi_buzzer_on 16def8: 2002 mov r0, #2 16defa: 7120 strb r0, [r4, #4] 16defc: 7830 ldrb r0, [r6, #0] 16defe: 7821 ldrb r1, [r4, #0] 16df00: 4348 mul r0, r1 16df02: 80e0 strh r0, [r4, #6] 16df04: 78e0 ldrb r0, [r4, #3] 16df06: 28ff cmp r0, #255 ; 0xff 16df08: d001 beq 0x16df0e 16df0a: 1e40 sub r0, r0, #1 16df0c: 70e0 strb r0, [r4, #3] 16df0e: b014 add sp, #80 ; 0x50 16df10: bd70 pop {r4, r5, r6, pc} 16df12: 46c0 nop (mov r8, r8) $Init_Target: 17ba8c: b530 push {r4, r5, lr} 17ba8e: b081 sub sp, #4 17ba90: 496e ldr r1, =0xfffef008 ; via 0x17bc4c 17ba92: 2003 mov r0, #3 17ba94: 0340 lsl r0, r0, #13 17ba96: 8008 strh r0, [r1, #0] 17ba98: f006 f860 bl 0x181b5c ; $TM_DisableWatchdog 17ba9c: 486c ldr r0, =0xfffffd02 ; via 0x17bc50 17ba9e: 2105 mov r1, #5 17baa0: 8001 strh r1, [r0, #0] 17baa2: 2180 mov r1, #128 ; 0x80 17baa4: 8802 ldrh r2, [r0, #0] 17baa6: 4311 orr r1, r2 17baa8: 8001 strh r1, [r0, #0] 17baaa: 496a ldr r1, =0xffdf ; via 0x17bc54 17baac: 8802 ldrh r2, [r0, #0] 17baae: 4011 and r1, r2 17bab0: 8001 strh r1, [r0, #0] 17bab2: 4d69 ldr r5, =0xfffff900 ; via 0x17bc58 17bab4: 20ff mov r0, #255 ; 0xff 17bab6: 0200 lsl r0, r0, #8 17bab8: 8028 strh r0, [r5, #0] 17baba: 4c68 ldr r4, =0xffff9800 ; via 0x17bc5c 17babc: 4868 ldr r0, =0xfff3 ; via 0x17bc60 17babe: 8821 ldrh r1, [r4, #0] 17bac0: 4008 and r0, r1 17bac2: 8020 strh r0, [r4, #0] 17bac4: 8820 ldrh r0, [r4, #0] 17bac6: 8020 strh r0, [r4, #0] 17bac8: 4866 ldr r0, =0xf01f ; via 0x17bc64 17baca: 8821 ldrh r1, [r4, #0] 17bacc: 4008 and r0, r1 17bace: 8020 strh r0, [r4, #0] 17bad0: 2001 mov r0, #1 17bad2: 0280 lsl r0, r0, #10 17bad4: 8821 ldrh r1, [r4, #0] 17bad6: 4308 orr r0, r1 17bad8: 8020 strh r0, [r4, #0] 17bada: 2000 mov r0, #0 17badc: 2102 mov r1, #2 17bade: 2200 mov r2, #0 17bae0: f006 fd30 bl 0x182544 ; $CLKM_InitARMClock 17bae4: 4860 ldr r0, =0xfffffb00 ; via 0x17bc68 17bae6: 21a3 mov r1, #163 ; 0xa3 17bae8: 8001 strh r1, [r0, #0] 17baea: 8041 strh r1, [r0, #2] 17baec: 22a5 mov r2, #165 ; 0xa5 17baee: 8082 strh r2, [r0, #4] 17baf0: 80c1 strh r1, [r0, #6] 17baf2: 2180 mov r1, #128 ; 0x80 17baf4: 8141 strh r1, [r0, #10] ; 0xa 17baf6: 21c0 mov r1, #192 ; 0xc0 17baf8: 8181 strh r1, [r0, #12] ; 0xc 17bafa: 2140 mov r1, #64 ; 0x40 17bafc: 8101 strh r1, [r0, #8] 17bafe: 2020 mov r0, #32 ; 0x20 17bb00: 8068 strh r0, [r5, #2] 17bb02: 2000 mov r0, #0 17bb04: 80a8 strh r0, [r5, #4] 17bb06: 2010 mov r0, #16 ; 0x10 17bb08: 8821 ldrh r1, [r4, #0] 17bb0a: 4308 orr r0, r1 17bb0c: 8020 strh r0, [r4, #0] 17bb0e: 4857 ldr r0, =0xfffffa08 ; via 0x17bc6c 17bb10: 4957 ldr r1, =0xffff ; via 0x17bc70 17bb12: 8001 strh r1, [r0, #0] 17bb14: 8041 strh r1, [r0, #2] 17bb16: 2103 mov r1, #3 17bb18: 8181 strh r1, [r0, #12] ; 0xc 17bb1a: f004 ff21 bl 0x180960 ; $IQ_SetupInterrupts 17bb1e: 4855 ldr r0, =0xfffffc00 ; via 0x17bc74 17bb20: 2124 mov r1, #36 ; 0x24 17bb22: 8001 strh r1, [r0, #0] 17bb24: 210d mov r1, #13 ; 0xd 17bb26: 8041 strh r1, [r0, #2] 17bb28: 2500 mov r5, #0 17bb2a: 4853 ldr r0, =0xfffe2016 ; via 0x17bc78 17bb2c: 8005 strh r5, [r0, #0] 17bb2e: 4953 ldr r1, =0xfffe2014 ; via 0x17bc7c 17bb30: 2002 mov r0, #2 17bb32: 8008 strh r0, [r1, #0] 17bb34: 4952 ldr r1, =0xfffe2002 ; via 0x17bc80 17bb36: 2084 mov r0, #132 ; 0x84 17bb38: 8008 strh r0, [r1, #0] 17bb3a: 4852 ldr r0, =0xfffe2000 ; via 0x17bc84 17bb3c: 4952 ldr r1, =0x3de0 ; via 0x17bc88 17bb3e: 8001 strh r1, [r0, #0] 17bb40: 4952 ldr r1, =0xfffe2022 ; via 0x17bc8c ; ULPD setup different from TI's: SETUP_FRAME constant is 10 ; instead of TI's 12, probably resulting from the shorter SETUP_SLICER 17bb42: 220a mov r2, #10 ; 0xa 17bb44: 800a strh r2, [r1, #0] 17bb46: 4952 ldr r1, =0xfffe2020 ; via 0x17bc90 17bb48: 4a52 ldr r2, =0x45a ; via 0x17bc94 17bb4a: 800a strh r2, [r1, #0] 17bb4c: 4a52 ldr r2, =0xfffe201e ; via 0x17bc98 ; ULPD setup different from TI's: SETUP_SLICER constant is 330 ; instead of TI's 660 17bb4e: 21ff mov r1, #255 ; 0xff 17bb50: 314b add r1, #75 ; 0x4b 17bb52: 8011 strh r1, [r2, #0] 17bb54: 4951 ldr r1, =0xfffe201c ; via 0x17bc9c 17bb56: 221f mov r2, #31 ; 0x1f 17bb58: 800a strh r2, [r1, #0] 17bb5a: 4951 ldr r1, =0xfffe2024 ; via 0x17bca0 17bb5c: 800d strh r5, [r1, #0] 17bb5e: 4951 ldr r1, =0xfffe2010 ; via 0x17bca4 17bb60: 2202 mov r2, #2 17bb62: 880b ldrh r3, [r1, #0] 17bb64: 431a orr r2, r3 17bb66: 800a strh r2, [r1, #0] 17bb68: 4b4e ldr r3, =0xfffe2010 ; via 0x17bca4 17bb6a: 2104 mov r1, #4 17bb6c: 881a ldrh r2, [r3, #0] 17bb6e: 4311 orr r1, r2 17bb70: 8019 strh r1, [r3, #0] 17bb72: 4c4d ldr r4, =0xfffef006 ; via 0x17bca8 17bb74: 2127 mov r1, #39 ; 0x27 17bb76: 80e1 strh r1, [r4, #6] 17bb78: 8a01 ldrh r1, [r0, #16] ; 0x10 17bb7a: 0849 lsr r1, r1, #1 17bb7c: d30f bcc 0x17bb9e 17bb7e: 8a01 ldrh r1, [r0, #16] ; 0x10 17bb80: 0409 lsl r1, r1, #16 17bb82: 0c49 lsr r1, r1, #17 17bb84: 0049 lsl r1, r1, #1 17bb86: 8201 strh r1, [r0, #16] ; 0x10 17bb88: 2101 mov r1, #1 17bb8a: e001 b 0x17bb90 17bb8c: 9900 ldr r1, [sp, #0] 17bb8e: 3101 add r1, #1 17bb90: 9100 str r1, [sp, #0] 17bb92: 9900 ldr r1, [sp, #0] 17bb94: 2932 cmp r1, #50 ; 0x32 17bb96: d3f9 bcc 0x17bb8c 17bb98: 8a41 ldrh r1, [r0, #18] ; 0x12 17bb9a: 2900 cmp r1, #0 17bb9c: d0fc beq 0x17bb98 17bb9e: f006 fb10 bl 0x1821c2 ; $AI_ClockEnable 17bba2: f006 fb14 bl 0x1821ce ; $AI_InitIOConfig 17bba6: 2027 mov r0, #39 ; 0x27 17bba8: 0500 lsl r0, r0, #20 17bbaa: 8005 strh r5, [r0, #0] ; extra code not in TI's version ; superfluous bit clearing in the FFFE:F006 debug register 17bbac: 483f ldr r0, =0xffbf ; via 0x17bcac 17bbae: 8821 ldrh r1, [r4, #0] 17bbb0: 4008 and r0, r1 17bbb2: 8020 strh r0, [r4, #0] ; setting GPIO 2 high - shuts off UART 17bbb4: 2002 mov r0, #2 17bbb6: f006 fad3 bl 0x182160 ; $AI_SetBit ; setting bits 9 and 5 in FFFE:F00A - selecting IO9 and IO13 17bbba: 2001 mov r0, #1 17bbbc: 0240 lsl r0, r0, #9 17bbbe: 88a1 ldrh r1, [r4, #4] 17bbc0: 4308 orr r0, r1 17bbc2: 80a0 strh r0, [r4, #4] 17bbc4: 2020 mov r0, #32 ; 0x20 17bbc6: 88a1 ldrh r1, [r4, #4] 17bbc8: 4308 orr r0, r1 17bbca: 80a0 strh r0, [r4, #4] ; tail end of TI's original code 17bbcc: 2001 mov r0, #1 17bbce: f005 ffd3 bl 0x181b78 ; $TM_EnableTimer 17bbd2: 2002 mov r0, #2 17bbd4: f005 ffd0 bl 0x181b78 ; $TM_EnableTimer 17bbd8: b001 add sp, #4 17bbda: bd30 pop {r4, r5, pc} $Init_Drivers: 17bbdc: b500 push {lr} 17bbde: f7ca fb85 bl 0x1462ec 17bbe2: f7cc fab7 bl 0x148154 17bbe6: f00c fdac bl 0x188742 17bbea: f00c fdab bl 0x188744 17bbee: f7eb f9c5 bl 0x166f7c 17bbf2: f7ed fcb2 bl 0x16955a 17bbf6: f7cc fabf bl 0x148178 17bbfa: f7e3 f9e6 bl 0x15efca 17bbfe: f007 fe1d bl 0x18383c 17bc02: f7ed fa9b bl 0x16913c 17bc06: f77e fb27 bl 0xfa258 17bc0a: bd00 pop {pc} $Init_Serial_Flows: 17bc0c: b500 push {lr} 17bc0e: 4828 ldr r0, =0x83dfa8 ; via 0x17bcb0 17bc10: f7c9 ffea bl 0x145be8 17bc14: 2000 mov r0, #0 17bc16: 2102 mov r1, #2 17bc18: 2200 mov r2, #0 17bc1a: f7ca f85e bl 0x145cda 17bc1e: f7ca f8b8 bl 0x145d92 17bc22: bd00 pop {pc} $Init_Unmask_IT: 17bc24: b500 push {lr} 17bc26: 2004 mov r0, #4 17bc28: f004 fefb bl 0x180a22 ; $IQ_Unmask 17bc2c: 2012 mov r0, #18 ; 0x12 17bc2e: f004 fef8 bl 0x180a22 ; $IQ_Unmask 17bc32: 2007 mov r0, #7 17bc34: f004 fef5 bl 0x180a22 ; $IQ_Unmask 17bc38: 2008 mov r0, #8 17bc3a: f004 fef2 bl 0x180a22 ; $IQ_Unmask 17bc3e: bd00 pop {pc} $GpUnmaskRTCAlarmInterrupts: 17bc40: b500 push {lr} 17bc42: 200a mov r0, #10 ; 0xa 17bc44: f004 feed bl 0x180a22 ; $IQ_Unmask 17bc48: bd00 pop {pc} 17bc4a: 46c0 nop (mov r8, r8) $AI_EnableBit: 182144: 4a4b ldr r2, =0xfffef00a ; via 0x182274 182146: 2101 mov r1, #1 182148: 4081 lsl r1, r0 18214a: 8810 ldrh r0, [r2, #0] 18214c: 4301 orr r1, r0 18214e: 8011 strh r1, [r2, #0] 182150: 4770 bx lr $AI_DisableBit: 182152: 4a48 ldr r2, =0xfffef00a ; via 0x182274 182154: 2101 mov r1, #1 182156: 4081 lsl r1, r0 182158: 8810 ldrh r0, [r2, #0] 18215a: 4388 bic r0, r1 18215c: 8010 strh r0, [r2, #0] 18215e: 4770 bx lr $AI_SetBit: 182160: 4a45 ldr r2, =0xfffe4802 ; via 0x182278 182162: 2101 mov r1, #1 182164: 4081 lsl r1, r0 182166: 8810 ldrh r0, [r2, #0] 182168: 4301 orr r1, r0 18216a: 8011 strh r1, [r2, #0] 18216c: 4770 bx lr $AI_ResetBit: 18216e: 4a42 ldr r2, =0xfffe4802 ; via 0x182278 182170: 2101 mov r1, #1 182172: 4081 lsl r1, r0 182174: 8810 ldrh r0, [r2, #0] 182176: 4388 bic r0, r1 182178: 8010 strh r0, [r2, #0] 18217a: 4770 bx lr $AI_ConfigBitAsOutput: 18217c: 4a3f ldr r2, =0xfffe4804 ; via 0x18227c 18217e: 2101 mov r1, #1 182180: 4081 lsl r1, r0 182182: 8810 ldrh r0, [r2, #0] 182184: 4388 bic r0, r1 182186: 8010 strh r0, [r2, #0] 182188: 4770 bx lr $AI_ConfigBitAsInput: 18218a: 4a3c ldr r2, =0xfffe4804 ; via 0x18227c 18218c: 2101 mov r1, #1 18218e: 4081 lsl r1, r0 182190: 8810 ldrh r0, [r2, #0] 182192: 4301 orr r1, r0 182194: 8011 strh r1, [r2, #0] 182196: 4770 bx lr $AI_ReadBit: 182198: 4939 ldr r1, =0xfffe4800 ; via 0x182280 18219a: 8809 ldrh r1, [r1, #0] 18219c: 4101 asr r1, r0 18219e: 07c8 lsl r0, r1, #31 1821a0: 0fc0 lsr r0, r0, #31 1821a2: 0600 lsl r0, r0, #24 1821a4: 0e00 lsr r0, r0, #24 1821a6: 4770 bx lr $AI_Power: 1821a8: b500 push {lr} 1821aa: 2800 cmp r0, #0 1821ac: d101 bne 0x1821b2 1821ae: f7c4 fbdb bl 0x146968 ; $ABB_Power_Off 1821b2: bd00 pop {pc} $AI_ResetIoConfig: 1821b4: 4931 ldr r1, =0xfffe4804 ; via 0x18227c 1821b6: 4833 ldr r0, =0xffff ; via 0x182284 1821b8: 8008 strh r0, [r1, #0] 1821ba: 482e ldr r0, =0xfffef00a ; via 0x182274 1821bc: 2100 mov r1, #0 1821be: 8001 strh r1, [r0, #0] 1821c0: 4770 bx lr $AI_ClockEnable: 1821c2: 4931 ldr r1, =0xfffe4806 ; via 0x182288 1821c4: 2020 mov r0, #32 ; 0x20 1821c6: 880a ldrh r2, [r1, #0] 1821c8: 4310 orr r0, r2 1821ca: 8008 strh r0, [r1, #0] 1821cc: 4770 bx lr $AI_InitIOConfig: 1821ce: b500 push {lr} 1821d0: f7ff fff0 bl 0x1821b4 ; $AI_ResetIoConfig 1821d4: 2002 mov r0, #2 1821d6: f7ff ffb5 bl 0x182144 ; $AI_EnableBit 1821da: 2003 mov r0, #3 1821dc: f7ff ffb2 bl 0x182144 ; $AI_EnableBit 1821e0: 2004 mov r0, #4 1821e2: f7ff ffaf bl 0x182144 ; $AI_EnableBit 1821e6: 2005 mov r0, #5 1821e8: f7ff ffac bl 0x182144 ; $AI_EnableBit 1821ec: 2006 mov r0, #6 1821ee: f7ff ffa9 bl 0x182144 ; $AI_EnableBit 1821f2: 2007 mov r0, #7 1821f4: f7ff ffa6 bl 0x182144 ; $AI_EnableBit 1821f8: 2008 mov r0, #8 1821fa: f7ff ffa3 bl 0x182144 ; $AI_EnableBit 1821fe: 2009 mov r0, #9 182200: f7ff ffa0 bl 0x182144 ; $AI_EnableBit 182204: 491c ldr r1, =0xfffe4802 ; via 0x182278 182206: 4821 ldr r0, =0x3f02 ; via 0x18228c 182208: 8008 strh r0, [r1, #0] 18220a: 2001 mov r0, #1 18220c: f7ff ffb6 bl 0x18217c ; $AI_ConfigBitAsOutput 182210: 2002 mov r0, #2 182212: f7ff ffb3 bl 0x18217c ; $AI_ConfigBitAsOutput 182216: 2005 mov r0, #5 182218: f7ff ffb0 bl 0x18217c ; $AI_ConfigBitAsOutput 18221c: 2007 mov r0, #7 18221e: f7ff ffad bl 0x18217c ; $AI_ConfigBitAsOutput 182222: 2009 mov r0, #9 182224: f7ff ffb1 bl 0x18218a ; $AI_ConfigBitAsInput 182228: 200b mov r0, #11 ; 0xb 18222a: f7ff ffae bl 0x18218a ; $AI_ConfigBitAsInput 18222e: 200d mov r0, #13 ; 0xd 182230: f7ff ffab bl 0x18218a ; $AI_ConfigBitAsInput 182234: 200e mov r0, #14 ; 0xe 182236: f7ff ffa1 bl 0x18217c ; $AI_ConfigBitAsOutput 18223a: 200f mov r0, #15 ; 0xf 18223c: f7ff ff9e bl 0x18217c ; $AI_ConfigBitAsOutput 182240: bd00 pop {pc} $AI_SelectIOForIT: 182242: 0109 lsl r1, r1, #4 182244: 1840 add r0, r0, r1 182246: 0040 lsl r0, r0, #1 182248: 3001 add r0, #1 18224a: 4911 ldr r1, =0xfffe4814 ; via 0x182290 18224c: 8008 strh r0, [r1, #0] 18224e: 4770 bx lr $AI_CheckITSource: 182250: 2100 mov r1, #0 182252: 4a10 ldr r2, =0xfffe4816 ; via 0x182294 182254: 8812 ldrh r2, [r2, #0] 182256: 4210 tst r0, r2 182258: d000 beq 0x18225c 18225a: 2101 mov r1, #1 18225c: 1c08 add r0, r1, #0 18225e: 4770 bx lr $AI_UnmaskIT: 182260: 4a0d ldr r2, =0xfffe4818 ; via 0x182298 182262: 8811 ldrh r1, [r2, #0] 182264: 4381 bic r1, r0 182266: 8011 strh r1, [r2, #0] 182268: 4770 bx lr $AI_MaskIT: 18226a: 4a0b ldr r2, =0xfffe4818 ; via 0x182298 18226c: 8811 ldrh r1, [r2, #0] 18226e: 4301 orr r1, r0 182270: 8011 strh r1, [r2, #0] 182272: 4770 bx lr ; buzzer.obj .text section follows, as identified in the linker map. ; All code is strictly unchanged from TCS211 original. $BZ_Init: 186124: 4770 bx lr $BZ_Enable: 186126: 492e ldr r1, =0xfffe480e ; via 0x1861e0 186128: 2001 mov r0, #1 18612a: 880a ldrh r2, [r1, #0] 18612c: 4310 orr r0, r2 18612e: 8008 strh r0, [r1, #0] 186130: 4770 bx lr $BZ_Disable: 186132: 482b ldr r0, =0xfffe480e ; via 0x1861e0 186134: 8801 ldrh r1, [r0, #0] 186136: 0409 lsl r1, r1, #16 186138: 0c49 lsr r1, r1, #17 18613a: 0049 lsl r1, r1, #1 18613c: 8001 strh r1, [r0, #0] 18613e: 4770 bx lr $BZ_Tone: 186140: 21ff mov r1, #255 ; 0xff 186142: 3101 add r1, #1 186144: 4288 cmp r0, r1 186146: db00 blt 0x18614a 186148: 20ff mov r0, #255 ; 0xff 18614a: 4926 ldr r1, =0xfffe4808 ; via 0x1861e4 18614c: 8008 strh r0, [r1, #0] 18614e: 4770 bx lr $BZ_Volume: 186150: 2840 cmp r0, #64 ; 0x40 186152: db00 blt 0x186156 186154: 203f mov r0, #63 ; 0x3f 186156: 4924 ldr r1, =0xfffe4812 ; via 0x1861e8 186158: 8008 strh r0, [r1, #0] 18615a: 4770 bx lr $BZ_KeyBeep_ON: 18615c: b500 push {lr} 18615e: b081 sub sp, #4 186160: f7ff ffe0 bl 0x186124 186164: 20ff mov r0, #255 ; 0xff 186166: f7ff fff3 bl 0x186150 18616a: f7ff ffdc bl 0x186126 18616e: 2032 mov r0, #50 ; 0x32 186170: f7ff ffe6 bl 0x186140 186174: 2000 mov r0, #0 186176: e001 b 0x18617c 186178: 9800 ldr r0, [sp, #0] 18617a: 3001 add r0, #1 18617c: 9000 str r0, [sp, #0] 18617e: 9900 ldr r1, [sp, #0] 186180: 481a ldr r0, =0x4268 ; via 0x1861ec 186182: 4281 cmp r1, r0 186184: dbf8 blt 0x186178 186186: f7ff ffd4 bl 0x186132 18618a: b001 add sp, #4 18618c: bd00 pop {pc} $BZ_KeyBeep_OFF: 18618e: b500 push {lr} 186190: b081 sub sp, #4 186192: f7ff ffc7 bl 0x186124 186196: 20ff mov r0, #255 ; 0xff 186198: f7ff ffda bl 0x186150 18619c: f7ff ffc3 bl 0x186126 1861a0: 2064 mov r0, #100 ; 0x64 1861a2: f7ff ffcd bl 0x186140 1861a6: 2000 mov r0, #0 1861a8: e001 b 0x1861ae 1861aa: 9800 ldr r0, [sp, #0] 1861ac: 3001 add r0, #1 1861ae: 9000 str r0, [sp, #0] 1861b0: 9900 ldr r1, [sp, #0] 1861b2: 480e ldr r0, =0x4268 ; via 0x1861ec 1861b4: 4281 cmp r1, r0 1861b6: dbf8 blt 0x1861aa 1861b8: f7ff ffbb bl 0x186132 1861bc: b001 add sp, #4 1861be: bd00 pop {pc} $LT_Enable: 1861c0: 4770 bx lr $LT_Disable: 1861c2: 4770 bx lr $LT_Level: 1861c4: 2840 cmp r0, #64 ; 0x40 1861c6: db00 blt 0x1861ca 1861c8: 203f mov r0, #63 ; 0x3f 1861ca: 4909 ldr r1, =0xfffe4810 ; via 0x1861f0 1861cc: 8008 strh r0, [r1, #0] 1861ce: 4770 bx lr $LT_Status: 1861d0: 4803 ldr r0, =0xfffe480e ; via 0x1861e0 1861d2: 8800 ldrh r0, [r0, #0] 1861d4: 0840 lsr r0, r0, #1 1861d6: 07c0 lsl r0, r0, #31 1861d8: 0fc0 lsr r0, r0, #31 1861da: 0600 lsl r0, r0, #24 1861dc: 0e00 lsr r0, r0, #24 1861de: 4770 bx lr $INC_Initialize: 1887ac: b510 push {r4, lr} 1887ae: 1c04 add r4, r0, #0 1887b0: 4813 ldr r0, =0x83e688 ; via 0x188800 1887b2: 2101 mov r1, #1 1887b4: 6001 str r1, [r0, #0] 1887b6: f001 f883 bl 0x1898c0 1887ba: f001 f87d bl 0x1898b8 1887be: f001 f859 bl 0x189874 1887c2: f000 fbd9 bl 0x188f78 1887c6: f7fb f8e7 bl 0x183998 1887ca: f000 fe2f bl 0x18942c 1887ce: f000 fdad bl 0x18932c 1887d2: f000 fd8b bl 0x1892ec 1887d6: f000 fd99 bl 0x18930c 1887da: f000 fde7 bl 0x1893ac 1887de: f000 fdb5 bl 0x18934c 1887e2: f000 fe13 bl 0x18940c 1887e6: f7fe f881 bl 0x1868ec 1887ea: f000 fe2f bl 0x18944c 1887ee: 1c20 add r0, r4, #0 1887f0: f000 fd10 bl 0x189214 ; $Application_Initialize 1887f4: 4902 ldr r1, =0x83e688 ; via 0x188800 1887f6: 2002 mov r0, #2 1887f8: 6008 str r0, [r1, #0] 1887fa: f7a8 ff75 bl 0x1316e8 1887fe: bd10 pop {r4, pc} $Application_Initialize: 189214: b500 push {lr} 189216: f7f2 fc39 bl 0x17ba8c ; $Init_Target 18921a: f7f2 fcdf bl 0x17bbdc ; $Init_Drivers 18921e: f7cb fa31 bl 0x154684 ; $key_pressed_times 189222: f736 fafa bl 0xbf81a ; $Cust_Init_Layer1 189226: f7cb fa2d bl 0x154684 ; $key_pressed_times 18922a: f7f2 fcef bl 0x17bc0c ; $Init_Serial_Flows 18922e: f7ad f8d6 bl 0x1363de ; $StartFrame 189232: f7f2 fcf7 bl 0x17bc24 ; $Init_Unmask_IT 189236: bd00 pop {pc} _INC_Initialize: ; call veneer 189680: e92d4000 stmdb sp!, {lr} 189684: e28fe001 add lr, pc, #1 189688: e12fff1e bx lr 18968c: f7ff f88e bl 0x1887ac ; $INC_Initialize 189690: 4778 bx pc 189692: 46c0 nop (mov r8, r8) 189694: e8bd8000 ldmia sp!, {pc}