⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 record3.s

📁 关于DVD的MPEG2用的DSP代码,在DSP的实现MPEG的压缩,解压算法.
💻 S
📖 第 1 页 / 共 5 页
字号:
                         
                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 + -