FreeCalypso > hg > freecalypso-reveng
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 389:623316d1ece7 | 390:37ee46a0dde7 |
|---|---|
| 2 ; and AI_InitIOConfig() in the special Mot C11x fw version with symbols | 2 ; and AI_InitIOConfig() in the special Mot C11x fw version with symbols |
| 3 ; (R87.2.1.03.m0 and R87.2.1.03.map), made in order to look into these | 3 ; (R87.2.1.03.m0 and R87.2.1.03.map), made in order to look into these |
| 4 ; critical board-specific init functions and in order to better prepare | 4 ; critical board-specific init functions and in order to better prepare |
| 5 ; ourselves for doing similar analysis on other Compal fw versions | 5 ; ourselves for doing similar analysis on other Compal fw versions |
| 6 ; for which we don't have any symbols. | 6 ; for which we don't have any symbols. |
| 7 ; | |
| 8 ; 2022 update: we have now also done some disassembly of Compal's buzzer | |
| 9 ; melody player code, guided by the linker map and symbol table. | |
| 7 | 10 |
| 8 0: ea000225 b 0x89c | 11 0: ea000225 b 0x89c |
| 9 4: ea000825 b 0x20a0 | 12 4: ea000825 b 0x20a0 |
| 10 8: ea000825 b 0x20a4 | 13 8: ea000825 b 0x20a4 |
| 11 c: ea000825 b 0x20a8 | 14 c: ea000825 b 0x20a8 |
| 200 22ec: e51f0200 ldr r0, =0x280c ; via 0x20f4 | 203 22ec: e51f0200 ldr r0, =0x280c ; via 0x20f4 |
| 201 22f0: e3700001 cmn r0, #1 | 204 22f0: e3700001 cmn r0, #1 |
| 202 22f4: 1b000077 blne 0x24d8 ; _auto_init | 205 22f4: 1b000077 blne 0x24d8 ; _auto_init |
| 203 22f8: e1a00002 mov r0, r2 | 206 22f8: e1a00002 mov r0, r2 |
| 204 22fc: ea061cdf b 0x189680 ; _INC_Initialize | 207 22fc: ea061cdf b 0x189680 ; _INC_Initialize |
| 208 | |
| 209 ; Compal-original buz.obj .text section | |
| 210 | |
| 211 $PWT_BZ_set: | |
| 212 16dba8: 49de ldr r1, =0xfffef008 ; via 0x16df24 | |
| 213 16dbaa: 2020 mov r0, #32 ; 0x20 | |
| 214 16dbac: 880a ldrh r2, [r1, #0] | |
| 215 16dbae: 4310 orr r0, r2 | |
| 216 16dbb0: 8008 strh r0, [r1, #0] | |
| 217 16dbb2: 4770 bx lr | |
| 218 | |
| 219 $PWT_BZ_reset: | |
| 220 16dbb4: 49db ldr r1, =0xfffef008 ; via 0x16df24 | |
| 221 16dbb6: 48dc ldr r0, =0xffdf ; via 0x16df28 | |
| 222 16dbb8: 880a ldrh r2, [r1, #0] | |
| 223 16dbba: 4010 and r0, r2 | |
| 224 16dbbc: 8008 strh r0, [r1, #0] | |
| 225 16dbbe: 4770 bx lr | |
| 226 | |
| 227 $lmi_buzzer_on: | |
| 228 16dbc0: b510 push {r4, lr} | |
| 229 16dbc2: 4bda ldr r3, =0xfffe8802 ; via 0x16df2c | |
| 230 16dbc4: 2201 mov r2, #1 | |
| 231 16dbc6: 781c ldrb r4, [r3, #0] | |
| 232 16dbc8: 4322 orr r2, r4 | |
| 233 16dbca: 701a strb r2, [r3, #0] | |
| 234 16dbcc: 4ad8 ldr r2, =0xfffe8800 ; via 0x16df30 | |
| 235 16dbce: 7010 strb r0, [r2, #0] | |
| 236 16dbd0: 2001 mov r0, #1 | |
| 237 16dbd2: 0049 lsl r1, r1, #1 | |
| 238 16dbd4: 4308 orr r0, r1 | |
| 239 16dbd6: 7050 strb r0, [r2, #1] | |
| 240 16dbd8: bd10 pop {r4, pc} | |
| 241 | |
| 242 $lmi_buzzer_off: | |
| 243 16dbda: 48d6 ldr r0, =0xfffe8801 ; via 0x16df34 | |
| 244 16dbdc: 7841 ldrb r1, [r0, #1] | |
| 245 16dbde: 0849 lsr r1, r1, #1 | |
| 246 16dbe0: d305 bcc 0x16dbee | |
| 247 16dbe2: 2100 mov r1, #0 | |
| 248 16dbe4: 7001 strb r1, [r0, #0] | |
| 249 16dbe6: 21fe mov r1, #254 ; 0xfe | |
| 250 16dbe8: 7842 ldrb r2, [r0, #1] | |
| 251 16dbea: 4011 and r1, r2 | |
| 252 16dbec: 7041 strb r1, [r0, #1] | |
| 253 16dbee: 4770 bx lr | |
| 254 | |
| 255 $pick_tempo_shift: | |
| 256 16dbf0: 1e80 sub r0, r0, #2 | |
| 257 16dbf2: 2800 cmp r0, #0 | |
| 258 16dbf4: d012 beq 0x16dc1c | |
| 259 16dbf6: 3801 sub r0, #1 | |
| 260 16dbf8: 2800 cmp r0, #0 | |
| 261 16dbfa: d00d beq 0x16dc18 | |
| 262 16dbfc: 3803 sub r0, #3 | |
| 263 16dbfe: 2802 cmp r0, #2 | |
| 264 16dc00: d90a bls 0x16dc18 | |
| 265 16dc02: 3806 sub r0, #6 | |
| 266 16dc04: 2801 cmp r0, #1 | |
| 267 16dc06: d907 bls 0x16dc18 | |
| 268 16dc08: 3803 sub r0, #3 | |
| 269 16dc0a: 2802 cmp r0, #2 | |
| 270 16dc0c: d904 bls 0x16dc18 | |
| 271 16dc0e: 3804 sub r0, #4 | |
| 272 16dc10: 2801 cmp r0, #1 | |
| 273 16dc12: d901 bls 0x16dc18 | |
| 274 16dc14: 2000 mov r0, #0 | |
| 275 16dc16: 4770 bx lr | |
| 276 16dc18: 2001 mov r0, #1 | |
| 277 16dc1a: 4770 bx lr | |
| 278 16dc1c: 2002 mov r0, #2 | |
| 279 16dc1e: 4770 bx lr | |
| 280 | |
| 281 $pick_freq_shift: | |
| 282 16dc20: 1e40 sub r0, r0, #1 | |
| 283 16dc22: 2813 cmp r0, #19 ; 0x13 | |
| 284 16dc24: d903 bls 0x16dc2e | |
| 285 16dc26: 3825 sub r0, #37 ; 0x25 | |
| 286 16dc28: 2800 cmp r0, #0 | |
| 287 16dc2a: d02f beq 0x16dc8c | |
| 288 16dc2c: e02c b 0x16dc88 | |
| 289 16dc2e: a102 add r1, pc, #8 | |
| 290 16dc30: 0080 lsl r0, r0, #2 | |
| 291 16dc32: 5808 ldr r0, [r1, r0] | |
| 292 16dc34: 4687 mov pc, r0 | |
| 293 16dc36: 46c0 nop (mov r8, r8) | |
| 294 | |
| 295 16dc38: 0016dca8 | |
| 296 16dc3c: 0016dca4 | |
| 297 16dc40: 0016dca0 | |
| 298 16dc44: 0016dca8 | |
| 299 16dc48: 0016dc9c | |
| 300 16dc4c: 0016dca8 | |
| 301 16dc50: 0016dc88 | |
| 302 16dc54: 0016dca8 | |
| 303 16dc58: 0016dc98 | |
| 304 16dc5c: 0016dc98 | |
| 305 16dc60: 0016dc90 | |
| 306 16dc64: 0016dc90 | |
| 307 16dc68: 0016dc9c | |
| 308 16dc6c: 0016dc9c | |
| 309 16dc70: 0016dc88 | |
| 310 16dc74: 0016dc98 | |
| 311 16dc78: 0016dca8 | |
| 312 16dc7c: 0016dc88 | |
| 313 16dc80: 0016dc94 | |
| 314 16dc84: 0016dc90 | |
| 315 | |
| 316 16dc88: 2100 mov r1, #0 | |
| 317 16dc8a: e00f b 0x16dcac | |
| 318 16dc8c: 2101 mov r1, #1 | |
| 319 16dc8e: e00d b 0x16dcac | |
| 320 16dc90: 2103 mov r1, #3 | |
| 321 16dc92: e00a b 0x16dcaa | |
| 322 16dc94: 2106 mov r1, #6 | |
| 323 16dc96: e008 b 0x16dcaa | |
| 324 16dc98: 2101 mov r1, #1 | |
| 325 16dc9a: e006 b 0x16dcaa | |
| 326 16dc9c: 2102 mov r1, #2 | |
| 327 16dc9e: e004 b 0x16dcaa | |
| 328 16dca0: 2105 mov r1, #5 | |
| 329 16dca2: e002 b 0x16dcaa | |
| 330 16dca4: 2108 mov r1, #8 | |
| 331 16dca6: e000 b 0x16dcaa | |
| 332 16dca8: 2104 mov r1, #4 | |
| 333 16dcaa: 43c9 mvn r1, r1 | |
| 334 16dcac: 48a2 ldr r0, =0x83e408 ; _freq_shift | |
| 335 16dcae: 6001 str r1, [r0, #0] | |
| 336 16dcb0: 2100 mov r1, #0 | |
| 337 16dcb2: 5e40 ldrsh r0, [r0, r1] | |
| 338 16dcb4: 4770 bx lr | |
| 339 | |
| 340 $lmi_custom_tone_req_ring: | |
| 341 16dcb6: b5f0 push {r4, r5, r6, r7, lr} | |
| 342 16dcb8: 1c04 add r4, r0, #0 | |
| 343 16dcba: 4da0 ldr r5, =0x83e414 ; _lmi_audio_control | |
| 344 16dcbc: 2005 mov r0, #5 | |
| 345 16dcbe: 7028 strb r0, [r5, #0] | |
| 346 16dcc0: 2c25 cmp r4, #37 ; 0x25 | |
| 347 16dcc2: d001 beq 0x16dcc8 | |
| 348 16dcc4: 2c26 cmp r4, #38 ; 0x26 | |
| 349 16dcc6: d101 bne 0x16dccc | |
| 350 16dcc8: 2004 mov r0, #4 | |
| 351 16dcca: 7028 strb r0, [r5, #0] | |
| 352 16dccc: 2600 mov r6, #0 | |
| 353 16dcce: 706e strb r6, [r5, #1] | |
| 354 16dcd0: 2c01 cmp r4, #1 | |
| 355 16dcd2: d101 bne 0x16dcd8 | |
| 356 16dcd4: 489a ldr r0, =0x34ab4 ; _custom_tone_volume_table_1 | |
| 357 16dcd6: e008 b 0x16dcea | |
| 358 16dcd8: 2c02 cmp r4, #2 | |
| 359 16dcda: d003 beq 0x16dce4 | |
| 360 16dcdc: 2c0b cmp r4, #11 ; 0xb | |
| 361 16dcde: d001 beq 0x16dce4 | |
| 362 16dce0: 2c09 cmp r4, #9 | |
| 363 16dce2: d101 bne 0x16dce8 | |
| 364 16dce4: 4897 ldr r0, =0x34abc ; _custom_tone_volume_table_2 | |
| 365 16dce6: e000 b 0x16dcea | |
| 366 16dce8: 4897 ldr r0, =0x34aac ; _custom_tone_volume_table | |
| 367 16dcea: 5c40 ldrb r0, [r0, r1] | |
| 368 16dcec: 70a8 strb r0, [r5, #2] | |
| 369 16dcee: 70ea strb r2, [r5, #3] | |
| 370 16dcf0: 2701 mov r7, #1 | |
| 371 16dcf2: 712f strb r7, [r5, #4] | |
| 372 16dcf4: 80ee strh r6, [r5, #6] | |
| 373 16dcf6: f018 faeb bl 0x1862d0 ; $mmiGetRingTone | |
| 374 16dcfa: 2c00 cmp r4, #0 | |
| 375 16dcfc: dd1d ble 0x16dd3a | |
| 376 16dcfe: 2c2a cmp r4, #42 ; 0x2a | |
| 377 16dd00: dc1b bgt 0x16dd3a | |
| 378 16dd02: 0121 lsl r1, r4, #4 | |
| 379 16dd04: 1841 add r1, r0, r1 | |
| 380 16dd06: 4a91 ldr r2, =0x83e40c ; _lmi_playing_tone | |
| 381 16dd08: 1c08 add r0, r1, #0 | |
| 382 16dd0a: 3810 sub r0, #16 ; 0x10 | |
| 383 16dd0c: 6800 ldr r0, [r0, #0] | |
| 384 16dd0e: 6010 str r0, [r2, #0] | |
| 385 16dd10: 200c mov r0, #12 ; 0xc | |
| 386 16dd12: 1a08 sub r0, r1, r0 | |
| 387 16dd14: 498e ldr r1, =0x83e410 ; _freq_component | |
| 388 16dd16: 7802 ldrb r2, [r0, #0] | |
| 389 16dd18: 700a strb r2, [r1, #0] | |
| 390 16dd1a: 498e ldr r1, =0x83e411 ; _style_infor | |
| 391 16dd1c: 700f strb r7, [r1, #0] | |
| 392 16dd1e: 2c2a cmp r4, #42 ; 0x2a | |
| 393 16dd20: db02 blt 0x16dd28 | |
| 394 16dd22: 4885 ldr r0, =0x83e408 ; _freq_shift | |
| 395 16dd24: 6006 str r6, [r0, #0] | |
| 396 16dd26: e006 b 0x16dd36 | |
| 397 16dd28: 4a83 ldr r2, =0x83e408 ; _freq_shift | |
| 398 16dd2a: 6841 ldr r1, [r0, #4] | |
| 399 16dd2c: 6011 str r1, [r2, #0] | |
| 400 16dd2e: 6880 ldr r0, [r0, #8] | |
| 401 16dd30: 7829 ldrb r1, [r5, #0] | |
| 402 16dd32: 1840 add r0, r0, r1 | |
| 403 16dd34: 7028 strb r0, [r5, #0] | |
| 404 16dd36: 4888 ldr r0, =0x83e404 ; _lmi_play_state | |
| 405 16dd38: 7007 strb r7, [r0, #0] | |
| 406 16dd3a: bdf0 pop {r4, r5, r6, r7, pc} | |
| 407 | |
| 408 $lmi_custom_tone_req: | |
| 409 16dd3c: b530 push {r4, r5, lr} | |
| 410 16dd3e: 4c7f ldr r4, =0x83e414 ; _lmi_audio_control | |
| 411 16dd40: 2505 mov r5, #5 | |
| 412 16dd42: 7025 strb r5, [r4, #0] | |
| 413 16dd44: 2500 mov r5, #0 | |
| 414 16dd46: 7065 strb r5, [r4, #1] | |
| 415 16dd48: 4d7f ldr r5, =0x34aac ; _custom_tone_volume_table | |
| 416 16dd4a: 5c69 ldrb r1, [r5, r1] | |
| 417 16dd4c: 70a1 strb r1, [r4, #2] | |
| 418 16dd4e: 70e2 strb r2, [r4, #3] | |
| 419 16dd50: 2101 mov r1, #1 | |
| 420 16dd52: 7121 strb r1, [r4, #4] | |
| 421 16dd54: 2200 mov r2, #0 | |
| 422 16dd56: 80e2 strh r2, [r4, #6] | |
| 423 16dd58: 4a7e ldr r2, =0x83e411 ; _style_infor | |
| 424 16dd5a: 7011 strb r1, [r2, #0] | |
| 425 16dd5c: 4a7b ldr r2, =0x83e40c ; _lmi_playing_tone | |
| 426 16dd5e: 6010 str r0, [r2, #0] | |
| 427 16dd60: 487b ldr r0, =0x83e410 ; _freq_component | |
| 428 16dd62: 7003 strb r3, [r0, #0] | |
| 429 16dd64: 4874 ldr r0, =0x83e408 ; _freq_shift | |
| 430 16dd66: 2200 mov r2, #0 | |
| 431 16dd68: 6002 str r2, [r0, #0] | |
| 432 16dd6a: 487b ldr r0, =0x83e404 ; _lmi_play_state | |
| 433 16dd6c: 7001 strb r1, [r0, #0] | |
| 434 16dd6e: bd30 pop {r4, r5, pc} | |
| 435 | |
| 436 $DM_buzzer_ringtone_control: | |
| 437 16dd70: b500 push {lr} | |
| 438 16dd72: 2800 cmp r0, #0 | |
| 439 16dd74: d107 bne 0x16dd86 | |
| 440 16dd76: f7ff ff30 bl 0x16dbda ; $lmi_buzzer_off | |
| 441 16dd7a: f7ff ff1b bl 0x16dbb4 ; $PWT_BZ_reset | |
| 442 16dd7e: 4976 ldr r1, =0x83e404 ; _lmi_play_state | |
| 443 16dd80: 2000 mov r0, #0 | |
| 444 16dd82: 7008 strb r0, [r1, #0] | |
| 445 16dd84: bd00 pop {pc} | |
| 446 16dd86: 1c10 add r0, r2, #0 | |
| 447 16dd88: 1c1a add r2, r3, #0 | |
| 448 16dd8a: f7ff ff94 bl 0x16dcb6 ; $lmi_custom_tone_req_ring | |
| 449 16dd8e: f7ff ff0b bl 0x16dba8 ; $PWT_BZ_set | |
| 450 16dd92: bd00 pop {pc} | |
| 451 | |
| 452 $DM_buzzer_control: | |
| 453 16dd94: b590 push {r4, r7, lr} | |
| 454 16dd96: af03 add r7, sp, #12 ; 0xc | |
| 455 16dd98: 1c1c add r4, r3, #0 | |
| 456 16dd9a: 783b ldrb r3, [r7, #0] | |
| 457 16dd9c: 2800 cmp r0, #0 | |
| 458 16dd9e: d107 bne 0x16ddb0 | |
| 459 16dda0: f7ff ff1b bl 0x16dbda ; $lmi_buzzer_off | |
| 460 16dda4: f7ff ff06 bl 0x16dbb4 ; $PWT_BZ_reset | |
| 461 16dda8: 496b ldr r1, =0x83e404 ; _lmi_play_state | |
| 462 16ddaa: 2000 mov r0, #0 | |
| 463 16ddac: 7008 strb r0, [r1, #0] | |
| 464 16ddae: bd90 pop {r4, r7, pc} | |
| 465 16ddb0: 1c10 add r0, r2, #0 | |
| 466 16ddb2: 1c22 add r2, r4, #0 | |
| 467 16ddb4: f7ff ffc2 bl 0x16dd3c ; $lmi_custom_tone_req | |
| 468 16ddb8: f7ff fef6 bl 0x16dba8 ; $PWT_BZ_set | |
| 469 16ddbc: bd90 pop {r4, r7, pc} | |
| 470 | |
| 471 $BZ_status: | |
| 472 16ddbe: 2000 mov r0, #0 | |
| 473 16ddc0: 4965 ldr r1, =0x83e404 ; _lmi_play_state | |
| 474 16ddc2: 7809 ldrb r1, [r1, #0] | |
| 475 16ddc4: 2900 cmp r1, #0 | |
| 476 16ddc6: d000 beq 0x16ddca | |
| 477 16ddc8: 2001 mov r0, #1 | |
| 478 16ddca: 4770 bx lr | |
| 479 | |
| 480 $lmi_custom_tone_handler: | |
| 481 16ddcc: b570 push {r4, r5, r6, lr} | |
| 482 16ddce: b094 sub sp, #80 ; 0x50 | |
| 483 16ddd0: 4d61 ldr r5, =0x83e404 ; _lmi_play_state | |
| 484 16ddd2: 7828 ldrb r0, [r5, #0] | |
| 485 16ddd4: 2800 cmp r0, #0 | |
| 486 16ddd6: d100 bne 0x16ddda | |
| 487 16ddd8: e099 b 0x16df0e | |
| 488 16ddda: 485c ldr r0, =0x83e40c ; _lmi_playing_tone | |
| 489 16dddc: 6801 ldr r1, [r0, #0] | |
| 490 16ddde: 4c57 ldr r4, =0x83e414 ; _lmi_audio_control | |
| 491 16dde0: 7860 ldrb r0, [r4, #1] | |
| 492 16dde2: 0080 lsl r0, r0, #2 | |
| 493 16dde4: 180e add r6, r1, r0 | |
| 494 16dde6: 7920 ldrb r0, [r4, #4] | |
| 495 16dde8: 1e40 sub r0, r0, #1 | |
| 496 16ddea: 2800 cmp r0, #0 | |
| 497 16ddec: d053 beq 0x16de96 | |
| 498 16ddee: 3801 sub r0, #1 | |
| 499 16ddf0: 2800 cmp r0, #0 | |
| 500 16ddf2: d035 beq 0x16de60 | |
| 501 16ddf4: 3801 sub r0, #1 | |
| 502 16ddf6: 2800 cmp r0, #0 | |
| 503 16ddf8: d15b bne 0x16deb2 | |
| 504 16ddfa: 2006 mov r0, #6 | |
| 505 16ddfc: 5f00 ldrsh r0, [r0, r4] | |
| 506 16ddfe: 2800 cmp r0, #0 | |
| 507 16de00: dc44 bgt 0x16de8c | |
| 508 16de02: 7860 ldrb r0, [r4, #1] | |
| 509 16de04: 3001 add r0, #1 | |
| 510 16de06: 7060 strb r0, [r4, #1] | |
| 511 16de08: 7860 ldrb r0, [r4, #1] | |
| 512 16de0a: 0080 lsl r0, r0, #2 | |
| 513 16de0c: 180d add r5, r1, r0 | |
| 514 16de0e: 8868 ldrh r0, [r5, #2] | |
| 515 16de10: 2800 cmp r0, #0 | |
| 516 16de12: d10f bne 0x16de34 | |
| 517 16de14: 7861 ldrb r1, [r4, #1] | |
| 518 16de16: 484e ldr r0, =0x83e410 ; _freq_component | |
| 519 16de18: 7800 ldrb r0, [r0, #0] | |
| 520 16de1a: 3801 sub r0, #1 | |
| 521 16de1c: 4281 cmp r1, r0 | |
| 522 16de1e: da04 bge 0x16de2a | |
| 523 16de20: 4944 ldr r1, =0xfffe8801 ; via 0x16df34 | |
| 524 16de22: 2000 mov r0, #0 | |
| 525 16de24: 7008 strb r0, [r1, #0] | |
| 526 16de26: 2003 mov r0, #3 | |
| 527 16de28: e015 b 0x16de56 | |
| 528 16de2a: 2001 mov r0, #1 | |
| 529 16de2c: 7120 strb r0, [r4, #4] | |
| 530 16de2e: 2000 mov r0, #0 | |
| 531 16de30: 7060 strb r0, [r4, #1] | |
| 532 16de32: e011 b 0x16de58 | |
| 533 16de34: 4840 ldr r0, =0x83e408 ; _freq_shift | |
| 534 16de36: 8801 ldrh r1, [r0, #0] | |
| 535 16de38: 8868 ldrh r0, [r5, #2] | |
| 536 16de3a: 1808 add r0, r1, r0 | |
| 537 16de3c: 0400 lsl r0, r0, #16 | |
| 538 16de3e: 0c00 lsr r0, r0, #16 | |
| 539 16de40: 0040 lsl r0, r0, #1 | |
| 540 16de42: 4946 ldr r1, =0x34ac4 ; _l1_tone_table | |
| 541 16de44: 5c08 ldrb r0, [r1, r0] | |
| 542 16de46: 78a1 ldrb r1, [r4, #2] | |
| 543 16de48: 786a ldrb r2, [r5, #1] | |
| 544 16de4a: 1889 add r1, r1, r2 | |
| 545 16de4c: 0609 lsl r1, r1, #24 | |
| 546 16de4e: 0e09 lsr r1, r1, #24 | |
| 547 16de50: f7ff feb6 bl 0x16dbc0 ; $lmi_buzzer_on | |
| 548 16de54: 2002 mov r0, #2 | |
| 549 16de56: 7120 strb r0, [r4, #4] | |
| 550 16de58: 7828 ldrb r0, [r5, #0] | |
| 551 16de5a: 7821 ldrb r1, [r4, #0] | |
| 552 16de5c: 4348 mul r0, r1 | |
| 553 16de5e: e018 b 0x16de92 | |
| 554 16de60: 2006 mov r0, #6 | |
| 555 16de62: 5f00 ldrsh r0, [r0, r4] | |
| 556 16de64: 2800 cmp r0, #0 | |
| 557 16de66: dc11 bgt 0x16de8c | |
| 558 16de68: 2100 mov r1, #0 | |
| 559 16de6a: 4832 ldr r0, =0xfffe8801 ; via 0x16df34 | |
| 560 16de6c: 7001 strb r1, [r0, #0] | |
| 561 16de6e: 7862 ldrb r2, [r4, #1] | |
| 562 16de70: 4837 ldr r0, =0x83e410 ; _freq_component | |
| 563 16de72: 7800 ldrb r0, [r0, #0] | |
| 564 16de74: 3801 sub r0, #1 | |
| 565 16de76: 4282 cmp r2, r0 | |
| 566 16de78: db02 blt 0x16de80 | |
| 567 16de7a: 2001 mov r0, #1 | |
| 568 16de7c: 7061 strb r1, [r4, #1] | |
| 569 16de7e: e003 b 0x16de88 | |
| 570 16de80: 4834 ldr r0, =0x83e411 ; _style_infor | |
| 571 16de82: 7800 ldrb r0, [r0, #0] | |
| 572 16de84: 80e0 strh r0, [r4, #6] | |
| 573 16de86: 2003 mov r0, #3 | |
| 574 16de88: 7120 strb r0, [r4, #4] | |
| 575 16de8a: e040 b 0x16df0e | |
| 576 16de8c: 2006 mov r0, #6 | |
| 577 16de8e: 5f00 ldrsh r0, [r0, r4] | |
| 578 16de90: 3801 sub r0, #1 | |
| 579 16de92: 80e0 strh r0, [r4, #6] | |
| 580 16de94: e03b b 0x16df0e | |
| 581 16de96: 4668 mov r0, sp | |
| 582 16de98: a11e add r1, pc, #120 ; 0x78 | |
| 583 16de9a: f01a f9e7 bl 0x18826c ; $sprintf | |
| 584 16de9e: 4668 mov r0, sp | |
| 585 16dea0: f751 fd90 bl 0xbf9c4 ; $L1_send_debug | |
| 586 16dea4: 78e0 ldrb r0, [r4, #3] | |
| 587 16dea6: 2800 cmp r0, #0 | |
| 588 16dea8: d003 beq 0x16deb2 | |
| 589 16deaa: 4829 ldr r0, =0x83e410 ; _freq_component | |
| 590 16deac: 7800 ldrb r0, [r0, #0] | |
| 591 16deae: 2800 cmp r0, #0 | |
| 592 16deb0: d106 bne 0x16dec0 | |
| 593 16deb2: f7ff fe92 bl 0x16dbda ; $lmi_buzzer_off | |
| 594 16deb6: f7ff fe7d bl 0x16dbb4 ; $PWT_BZ_reset | |
| 595 16deba: 2000 mov r0, #0 | |
| 596 16debc: 7028 strb r0, [r5, #0] | |
| 597 16debe: e026 b 0x16df0e | |
| 598 16dec0: 8870 ldrh r0, [r6, #2] | |
| 599 16dec2: 2800 cmp r0, #0 | |
| 600 16dec4: d109 bne 0x16deda | |
| 601 16dec6: 481b ldr r0, =0xfffe8801 ; via 0x16df34 | |
| 602 16dec8: 1c42 add r2, r0, #1 | |
| 603 16deca: 2101 mov r1, #1 | |
| 604 16decc: 7813 ldrb r3, [r2, #0] | |
| 605 16dece: 4319 orr r1, r3 | |
| 606 16ded0: 7011 strb r1, [r2, #0] | |
| 607 16ded2: 2100 mov r1, #0 | |
| 608 16ded4: 7001 strb r1, [r0, #0] | |
| 609 16ded6: 2003 mov r0, #3 | |
| 610 16ded8: e00f b 0x16defa | |
| 611 16deda: 4917 ldr r1, =0x83e408 ; _freq_shift | |
| 612 16dedc: 8809 ldrh r1, [r1, #0] | |
| 613 16dede: 1840 add r0, r0, r1 | |
| 614 16dee0: 0400 lsl r0, r0, #16 | |
| 615 16dee2: 0c00 lsr r0, r0, #16 | |
| 616 16dee4: 0040 lsl r0, r0, #1 | |
| 617 16dee6: 491d ldr r1, =0x34ac4 ; _l1_tone_table | |
| 618 16dee8: 5c08 ldrb r0, [r1, r0] | |
| 619 16deea: 78a1 ldrb r1, [r4, #2] | |
| 620 16deec: 7872 ldrb r2, [r6, #1] | |
| 621 16deee: 1889 add r1, r1, r2 | |
| 622 16def0: 0609 lsl r1, r1, #24 | |
| 623 16def2: 0e09 lsr r1, r1, #24 | |
| 624 16def4: f7ff fe64 bl 0x16dbc0 ; $lmi_buzzer_on | |
| 625 16def8: 2002 mov r0, #2 | |
| 626 16defa: 7120 strb r0, [r4, #4] | |
| 627 16defc: 7830 ldrb r0, [r6, #0] | |
| 628 16defe: 7821 ldrb r1, [r4, #0] | |
| 629 16df00: 4348 mul r0, r1 | |
| 630 16df02: 80e0 strh r0, [r4, #6] | |
| 631 16df04: 78e0 ldrb r0, [r4, #3] | |
| 632 16df06: 28ff cmp r0, #255 ; 0xff | |
| 633 16df08: d001 beq 0x16df0e | |
| 634 16df0a: 1e40 sub r0, r0, #1 | |
| 635 16df0c: 70e0 strb r0, [r4, #3] | |
| 636 16df0e: b014 add sp, #80 ; 0x50 | |
| 637 16df10: bd70 pop {r4, r5, r6, pc} | |
| 638 16df12: 46c0 nop (mov r8, r8) | |
| 205 | 639 |
| 206 $Init_Target: | 640 $Init_Target: |
| 207 17ba8c: b530 push {r4, r5, lr} | 641 17ba8c: b530 push {r4, r5, lr} |
| 208 17ba8e: b081 sub sp, #4 | 642 17ba8e: b081 sub sp, #4 |
| 209 17ba90: 496e ldr r1, =0xfffef008 ; via 0x17bc4c | 643 17ba90: 496e ldr r1, =0xfffef008 ; via 0x17bc4c |
| 580 18226c: 8811 ldrh r1, [r2, #0] | 1014 18226c: 8811 ldrh r1, [r2, #0] |
| 581 18226e: 4301 orr r1, r0 | 1015 18226e: 4301 orr r1, r0 |
| 582 182270: 8011 strh r1, [r2, #0] | 1016 182270: 8011 strh r1, [r2, #0] |
| 583 182272: 4770 bx lr | 1017 182272: 4770 bx lr |
| 584 | 1018 |
| 1019 ; buzzer.obj .text section follows, as identified in the linker map. | |
| 1020 ; All code is strictly unchanged from TCS211 original. | |
| 1021 | |
| 1022 $BZ_Init: | |
| 1023 186124: 4770 bx lr | |
| 1024 | |
| 1025 $BZ_Enable: | |
| 1026 186126: 492e ldr r1, =0xfffe480e ; via 0x1861e0 | |
| 1027 186128: 2001 mov r0, #1 | |
| 1028 18612a: 880a ldrh r2, [r1, #0] | |
| 1029 18612c: 4310 orr r0, r2 | |
| 1030 18612e: 8008 strh r0, [r1, #0] | |
| 1031 186130: 4770 bx lr | |
| 1032 | |
| 1033 $BZ_Disable: | |
| 1034 186132: 482b ldr r0, =0xfffe480e ; via 0x1861e0 | |
| 1035 186134: 8801 ldrh r1, [r0, #0] | |
| 1036 186136: 0409 lsl r1, r1, #16 | |
| 1037 186138: 0c49 lsr r1, r1, #17 | |
| 1038 18613a: 0049 lsl r1, r1, #1 | |
| 1039 18613c: 8001 strh r1, [r0, #0] | |
| 1040 18613e: 4770 bx lr | |
| 1041 | |
| 1042 $BZ_Tone: | |
| 1043 186140: 21ff mov r1, #255 ; 0xff | |
| 1044 186142: 3101 add r1, #1 | |
| 1045 186144: 4288 cmp r0, r1 | |
| 1046 186146: db00 blt 0x18614a | |
| 1047 186148: 20ff mov r0, #255 ; 0xff | |
| 1048 18614a: 4926 ldr r1, =0xfffe4808 ; via 0x1861e4 | |
| 1049 18614c: 8008 strh r0, [r1, #0] | |
| 1050 18614e: 4770 bx lr | |
| 1051 | |
| 1052 $BZ_Volume: | |
| 1053 186150: 2840 cmp r0, #64 ; 0x40 | |
| 1054 186152: db00 blt 0x186156 | |
| 1055 186154: 203f mov r0, #63 ; 0x3f | |
| 1056 186156: 4924 ldr r1, =0xfffe4812 ; via 0x1861e8 | |
| 1057 186158: 8008 strh r0, [r1, #0] | |
| 1058 18615a: 4770 bx lr | |
| 1059 | |
| 1060 $BZ_KeyBeep_ON: | |
| 1061 18615c: b500 push {lr} | |
| 1062 18615e: b081 sub sp, #4 | |
| 1063 186160: f7ff ffe0 bl 0x186124 | |
| 1064 186164: 20ff mov r0, #255 ; 0xff | |
| 1065 186166: f7ff fff3 bl 0x186150 | |
| 1066 18616a: f7ff ffdc bl 0x186126 | |
| 1067 18616e: 2032 mov r0, #50 ; 0x32 | |
| 1068 186170: f7ff ffe6 bl 0x186140 | |
| 1069 186174: 2000 mov r0, #0 | |
| 1070 186176: e001 b 0x18617c | |
| 1071 186178: 9800 ldr r0, [sp, #0] | |
| 1072 18617a: 3001 add r0, #1 | |
| 1073 18617c: 9000 str r0, [sp, #0] | |
| 1074 18617e: 9900 ldr r1, [sp, #0] | |
| 1075 186180: 481a ldr r0, =0x4268 ; via 0x1861ec | |
| 1076 186182: 4281 cmp r1, r0 | |
| 1077 186184: dbf8 blt 0x186178 | |
| 1078 186186: f7ff ffd4 bl 0x186132 | |
| 1079 18618a: b001 add sp, #4 | |
| 1080 18618c: bd00 pop {pc} | |
| 1081 | |
| 1082 $BZ_KeyBeep_OFF: | |
| 1083 18618e: b500 push {lr} | |
| 1084 186190: b081 sub sp, #4 | |
| 1085 186192: f7ff ffc7 bl 0x186124 | |
| 1086 186196: 20ff mov r0, #255 ; 0xff | |
| 1087 186198: f7ff ffda bl 0x186150 | |
| 1088 18619c: f7ff ffc3 bl 0x186126 | |
| 1089 1861a0: 2064 mov r0, #100 ; 0x64 | |
| 1090 1861a2: f7ff ffcd bl 0x186140 | |
| 1091 1861a6: 2000 mov r0, #0 | |
| 1092 1861a8: e001 b 0x1861ae | |
| 1093 1861aa: 9800 ldr r0, [sp, #0] | |
| 1094 1861ac: 3001 add r0, #1 | |
| 1095 1861ae: 9000 str r0, [sp, #0] | |
| 1096 1861b0: 9900 ldr r1, [sp, #0] | |
| 1097 1861b2: 480e ldr r0, =0x4268 ; via 0x1861ec | |
| 1098 1861b4: 4281 cmp r1, r0 | |
| 1099 1861b6: dbf8 blt 0x1861aa | |
| 1100 1861b8: f7ff ffbb bl 0x186132 | |
| 1101 1861bc: b001 add sp, #4 | |
| 1102 1861be: bd00 pop {pc} | |
| 1103 | |
| 1104 $LT_Enable: | |
| 1105 1861c0: 4770 bx lr | |
| 1106 | |
| 1107 $LT_Disable: | |
| 1108 1861c2: 4770 bx lr | |
| 1109 | |
| 1110 $LT_Level: | |
| 1111 1861c4: 2840 cmp r0, #64 ; 0x40 | |
| 1112 1861c6: db00 blt 0x1861ca | |
| 1113 1861c8: 203f mov r0, #63 ; 0x3f | |
| 1114 1861ca: 4909 ldr r1, =0xfffe4810 ; via 0x1861f0 | |
| 1115 1861cc: 8008 strh r0, [r1, #0] | |
| 1116 1861ce: 4770 bx lr | |
| 1117 | |
| 1118 $LT_Status: | |
| 1119 1861d0: 4803 ldr r0, =0xfffe480e ; via 0x1861e0 | |
| 1120 1861d2: 8800 ldrh r0, [r0, #0] | |
| 1121 1861d4: 0840 lsr r0, r0, #1 | |
| 1122 1861d6: 07c0 lsl r0, r0, #31 | |
| 1123 1861d8: 0fc0 lsr r0, r0, #31 | |
| 1124 1861da: 0600 lsl r0, r0, #24 | |
| 1125 1861dc: 0e00 lsr r0, r0, #24 | |
| 1126 1861de: 4770 bx lr | |
| 1127 | |
| 585 $INC_Initialize: | 1128 $INC_Initialize: |
| 586 1887ac: b510 push {r4, lr} | 1129 1887ac: b510 push {r4, lr} |
| 587 1887ae: 1c04 add r4, r0, #0 | 1130 1887ae: 1c04 add r4, r0, #0 |
| 588 1887b0: 4813 ldr r0, =0x83e688 ; via 0x188800 | 1131 1887b0: 4813 ldr r0, =0x83e688 ; via 0x188800 |
| 589 1887b2: 2101 mov r1, #1 | 1132 1887b2: 2101 mov r1, #1 |
