📄 record3.s
字号:
addi r7,1
dlh r10,qtab_723_24+4
nop
tst r1,r10
blt quan_next1
addi r7,1
quan_next1:
tstsi r2,0
bgte quan_next3
movi r8,7
sub r7,r8,r7 // i=7-i
j quan_next4
quan_next3:
tsti r7,0
bne quan_next4
movi r7,7
quan_next4:
movw %i_buffer,r7 // calculate the i
andi r7,0x4
movw %recon_var1,r7
movw %recon_var3,r3
movw r7,%i_buffer
shl r7,1
addi r7,_dqintab
dlhr r10,r7
nop
addi r10,0x8000
andi r10,0xffff
subi r10,0x8000
movw %recon_var2,r10
jsr r7,reconstruct // goto recontruct sub programm to
// calculate out dq
movw r8,%i_buffer
shl r8,1
addi r8,_witab
dlhr r10,r8
nop
addi r10,0x8000
andi r10,0xffff
subi r10,0x8000
sub r10,r3 // y0=y + ((_witab[i]-y) >> 5 );
shra r10,5
add r8,r3,r10
tstsi r8,544
blt loop_next1
tstsi r8,5120
blte loop_next2
movi r8,5120
j loop_next2
loop_next1:
movi r8,544
loop_next2:
dsh r8,y0
jsr r7,block4l
movw r8,%i_buffer
dlw r10,out_bits
nop
shlv r8,r10
dlw r7,out_buffer
nop
or r7,r8
dsw r7,out_buffer
addi r10,3
dsw r10,out_bits
tsti r10,8
blt adpcm_tail1
mov r0,r7
andi r7,0xff
subi r10,8
dsw r10,out_bits
dsbr r7,r5
addi r5,1
shra r0,8
dsw r0,out_buffer
adpcm_tail1: nop
//---------------------------------------------------------------------------
adpcm_tail:
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// next for store data all 12 bytes !!!!!!!!!!!
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//----------------------------------------------------------------------------------------------
// next for transfer the data to main memory
//----------------------------------------------------------------------------------------------
movi StartAddrHigh, APP_DATA_SEG
la r1, (output_data_buffer)
la r0, (local_micro_44)
shr r0, 2
shr r1, 2
movi BlockSize,0 //
movi BlockSkip,0
#ifdef F11025
movi DMASize,5 // 11.025 24 bytes
#else
movi DMASize,2 // 5.5k 12 bytes
#endif
mov LocalAddr, r0
dmarr r1
readback_wait:
bdb readback_wait
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// movi AGRAdr0,local_micro_44 // dump data for debug use
// li r0,0x55555555
// mov a0(4),r0
// mov a0(4),r0
// mov a0(4),r0 // dump data for debug use
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
dlw r0,record_fifo_current_address
nop
#ifdef F11025
addi r1,r0,24 // 11.025k
#else
addi r1,r0,12 // 5.5k
#endif
dsw r1,record_fifo_current_address // address add 12 for next frame
mov r1,r0
shr r0,16 // pick the segment
andi r0,0xffff
andi r1,0xffff
mov StartAddrHigh, r0
la r0, (local_micro_44)
shr r0, 2
shr r1, 2
mov LocalAddr, r0
dmawr r1
putout_wait:
bdb putout_wait
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//--------------------------------------------------------------------------
movi StartAddrHigh, APP_DATA_SEG
la r1, (mic_data_buffer)
la r0, (local_micro_44)
shr r0, 2
shr r1, 2
movi BlockSize,31 //0 // pick back 128*4 byte from main memory
movi BlockSkip,0
movi DMASize,31
loop 8, restore_local_buffer // data need process by next sub programm
mov LocalAddr, r0
dmarr r1
restore_local_wait:
bdb restore_local_wait
addi r0, 32
addi r1, 32
restore_local_buffer:
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
#endif
nop
j r6
nop
//----------------------------------------------------------------------------
//---------------- end of adpcm record ---------------------------------------
//----------------------------------------------------------------------------
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
.global SUB_play
.text
.align 4
//----------------------------------------------------------------------------
//------------------------- Next for play programm ---------------------------
//----------------------------------------------------------------------------
SUB_play:
mov r24,DcacheBase
//----------------------------------------------------------------------------
movi DcacheBase, APP_DATA_SEG
dsw r0,r0_temp
dsw r1,r1_temp
dsw r2,r2_temp
dsw r3,r3_temp
dsw r4,r4_temp
dsw r5,r5_temp
dsw r6,r6_temp
dsw r7,r7_temp
dsw r8,r8_temp
dsw r9,r9_temp
dsw r10,r10_temp
mov r0,BlockSize
dsw r0,BlockSize_temp
mov r0,BlockSkip
dsw r0,BlockSkip_temp
mov r0,DMASize
dsw r0,DMASize_temp
SUB_play_next:
jsr r9,real_play
//------------------------------------------------------------------------------
SUB_play_end:
movi DcacheBase,APP_DATA_SEG
dlw r2,r2_temp
dlw r3,r3_temp
dlw r4,r4_temp
dlw r5,r5_temp
dlw r7,r7_temp
dlw r8,r8_temp
dlw r9,r9_temp
dlw r10,r10_temp
dlw r0,BlockSize_temp
nop
mov BlockSize,r0
dlw r0,BlockSkip_temp
nop
mov BlockSkip,r0
dlw r0,DMASize_temp
nop
mov DMASize,r0
dlw r0,r0_temp // restore the register
dlw r1,r1_temp
mov DcacheBase,r24
nop
j r11 // return to call programm
nop
//----------------------------------------------------------------------------
//************************ next for real play sub programm *******************
//----------------------------------------------------------------------------
real_play:
movi DcacheBase,APP_DATA_SEG
dlw r0,play_on_off_flag // here need to check the record on off flag
nop
andi r0,0xffff // for main programm use
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -