www.pudn.com > g729Decoder.rar > SYN_FILT.asm


;========================================================================== 
;  File Name 
;  ---------- 
;  SYN_FIL.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Synthesis filtering 1/A(z). 
; 
;  Ref 
;  ------ 
;  FILTER.C (Syn_filt) 
;========================================================================== 
        .mmregs 
        .include  ../include/const.h 
        .include  ../include/tab_ld8a.h 
        .include  ../include/ld8amem.h 
 
        .text 
        .def    Syn_filt1       ; Updata = 1 
        .def    Syn_filt2       ; Updata = 1 
 
        .def    Syn_filt3       ; Updata = 0 
 
        .asg    "AR0", AR_Counter 
        .asg    "AR1", pCounter 
        .asg    "AR2", pBiQ12 
        .asg    "AR3", pXn 
        .asg    "AR4", pYn2 
        .asg    "AR5", pYn 
 
Syn_filt1: 
 
	PSHM	AR7 
 
        STM     #0, AR_Counter 
        MVMM    pYn, pYn2                 ; Updata =1 
        MAR     *+pYn2(#L_FRAME-1)        ; Modify pYn2 
        STM     #M - 1, BRC 
        STM     #M - 1, AR7 
        MAR     *pYn- 
 
        RPTB    EndLE10 - 1 
 
                LD      *pXn+, 13, B 
 
                MVMM    AR_Counter, pCounter 
                NOP 
                CMPM    *(pCounter), #0 
                NOP 
                BC      L01, TC 
                MAR     *pCounter- 
                RPT     *(pCounter) 
                        MAS     *pBiQ12+, *pYn-, B 
 
                MVMM    AR_Counter, pCounter 
                NOP 
                        MAR     *pCounter- 
                RPT     *(pCounter) 
                        MAR     *pYn+ 
 
L01:            MVMM    AR7, AR6 
                NOP 
                RPT     *(AR6) 
                        MAS     *pBiQ12+, *pYn2-, B 
                MAR     *+pBiQ12(#-M) 
                MVMM    AR7, AR6 
                NOP 
                RPT     *(AR6) 
                        MAR     *pYn2+ 
 
                MAR     *AR_Counter+ 
                MAR     *AR7- 
 
                ADD     #1, 12, B 
                LD      B, 3, B 
                SAT     B 
                STL     B, -16, *+pYn 
 
EndLE10: 
 
 
        SUB     #M + 1, A 
        STLM    A, BRC 
        STM     #M, BK 
 
        RPTB   EndGT10 - 1 
 
                LD      *pXn+, 13, A 
                MVMM    pYn, pYn2         
                RPT     #M - 1 
                        MAS     *pBiQ12+, *pYn2-, A 
                MAR     *+pBiQ12(#-M) 
 
 
                ADD     #1, 12, A 
                LD      A, 3, A 
                SAT     A 
                STL     A, -16, *+pYn 
 
EndGT10: 
	POPM	AR7 
        RET 
 
Syn_filt2: 
        MAR     *pYn- 
        STM     #M - 1, BRC 
        RPTB   EndLE20 - 1 
                LD      *pXn+, 13, B 
                MVMM    pYn, pYn2             ;Updata=1  Modify pYn2 
                RPT     #M - 1 
                        MAS     *pBiQ12+, *pYn2-, B 
                MAR     *+pBiQ12(#-M) 
 
 
                ADD     #1, 12, B 
                LD      B, 3, B 
                SAT     B 
                STL     B, -16, *+pYn 
EndLE20: 
 
        SUB     #M + 1, A 
        STLM    A, BRC 
        STM     #M, BK 
 
        RPTB   EndGT20 - 1 
 
                LD      *pXn+, 13, A 
                MVMM    pYn, pYn2 
                RPT     #M - 1 
                        MAS     *pBiQ12+, *pYn2-, A 
                MAR     *+pBiQ12(#-M) 
 
                ADD     #1, 12, A 
                LD      A, 3, A 
                SAT     A 
                STL     A, -16, *+pYn 
 
 
EndGT20: 
 
        RET 
 
 
Syn_filt3: 
 
	PSHM	AR7 
 
        MAR     *+pYn2(#M-1)                 ; Updata=0 
 
        STM     #0, AR_Counter 
        STM     #M - 1, BRC 
        STM     #M - 1, AR7 
        MAR     *pYn- 
 
        RPTB    EndLE30 - 1 
                LD      *pXn+, 13, B 
 
                MVMM    AR_Counter, pCounter 
                NOP 
                CMPM    *(pCounter), #0 
                NOP 
                BC      L03, TC 
                MAR     *pCounter- 
                RPT     *(pCounter) 
                        MAS     *pBiQ12+, *pYn-, B 
 
                MVMM    AR_Counter, pCounter 
                NOP 
                MAR     *pCounter- 
                RPT     *(pCounter) 
                        MAR     *pYn+ 
 
L03:            MVMM    AR7, AR6 
                NOP 
                RPT     *(AR6) 
                        MAS     *pBiQ12+, *pYn2-, B 
                MAR     *+pBiQ12(#-M) 
                RPT     *(AR6) 
                        MAR     *pYn2+ 
                MVMM    AR7, AR6 
 
                MAR     *AR_Counter+ 
                MAR     *AR7- 
 
                ADD     #1, 12, B 
                LD      B, 3, B 
                SAT     B 
                STL     B, -16, *+pYn 
 
EndLE30: 
 
 
        SUB     #M + 1, A 
        STLM    A, BRC 
        STM     #M, BK		 
 
        RPTB   EndGT30 - 1 
 
                LD      *pXn+, 13, A 
                MVMM    pYn, pYn2 
                RPT     #M - 1 
                        MAS     *pBiQ12+, *pYn2-, A 
                MAR     *+pBiQ12(#-M) 
 
 
                ADD     #1, 12, A 
                LD      A, 3, A 
                SAT     A 
                STL     A, -16, *+pYn 
 
EndGT30: 
	POPM	AR7 
        RET