view compal/sym-fw-disasm @ 390:37ee46a0dde7

compal/sym-fw-disasm: some study of buz.obj code
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 01 Apr 2022 04:30:44 +0000
parents f724d574cff3
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}