123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
-
-
-
- OS_File * &8
- OS_Module * &1e
- XOS_AddCallBack * &20054
- XOS_RemoveCallBack * &2005f
-
-
-
- GET h.RegNames
- EXPORT DMA_Handler
- EXPORT AddSineWaves
-
- IMPORT |callback_entry|
- IMPORT |sound_entry|
- IMPORT |sin_tab|
-
-
- AREA Assemb , CODE, READONLY
-
-
-
- ADR_callback_entry
- DCD callback_entry
- ADR_sound_entry
- DCD sound_entry
- ADR_sin_tab
- DCD sin_tab
-
-
-
-
-
- DMA_Handler
-
-
-
-
- MOV r5,ip
- MOV ip,sp
- STMFD sp!, {fp,ip,lr}
- STMFD sp!, {r5}
-
- MOV r12,r0
- BL sound_entry
-
-
- CMP r0,#1
- BNE DMA_return
-
-
- TEQ pc,pc
- MRSEQ r8, CPSR
- MOVNE r8,pc
- ORR r9,r8,#3
- MSREQ CPSR_c, r9
- TEQNEP r9,#0
- NOP
- STR r14, [r13,#-4]!
-
-
-
- LDR r0,ADR_callback_entry
- SWI XOS_AddCallBack
-
-
- LDR r14, [r13],#4
- TEQ pc,pc
- MSREQ CPSR_c, r8
- TEQNEP r8,#0
- NOP
-
-
- DMA_return
- LDMFD sp!,{ip}
- LDMFD sp, {fp,sp,pc}
-
-
- AddSineWaves
-
-
-
-
-
-
-
- MOV ip,sp
- STMFD sp!, {r5-r9,ip,lr}
- LDR r5,ADR_sin_tab
- MOV r6,#0
- MOV r0,r0,LSL #16
- MOV r8,r0
-
- MOV r7,#1
-
- as1
- MOV ip,r8,LSR #21
- LDR r9,[r5,ip,LSL #1]
- MOV r9,r9,LSL #16
- MOV r9,r9,ASR #16
- LDR ip,[r3,r7,LSL #2]
- MLA r6,r9,ip,r6
-
- ADD r8,r8,r0
- ADD r7,r7,#1
- CMP r7,r1
- BLE as1
-
- RSB r6,r6,#0
-
- as2
- MOV ip,r8,LSR #21
- LDR r9,[r5,ip,LSL #1]
- MOV r9,r9,LSL #16
- MOV r9,r9,ASR #16
- LDR ip,[r3,r7,LSL #2]
- MLA r6,r9,ip,r6
-
- ADD r8,r8,r0
- ADD r7,r7,#1
- CMP r7,r2
- BLE as2
-
- MOV r0,r6
- LDMFD sp, {r5-r9,sp,pc}
- END
|