📄 gaecnra.s54
字号:
*-------------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2003 MICHAEL TSIROULNIKOV, ALL RIGHTS RESERVED" *
* *
*-------------------------------------------------------------------------*/
.mmregs
.include "gaeci.h54"
.sect ".ftext2"
;-------------------------------------------------------------------------
.ref _gaec_utl_exp
.ref _gaec_utl_en2log
_DB52p21 .set 8875
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
.global _gaec_nr_nrg
;-------------------------------------------------------------------------
_gaec_nr_nrg
; GAEC_tDb *pDb = a
; GAEC_tSc *pSc = sp(1)
;
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
;
; ar2 -> pDb->aslNrPrior[band]
; ar3 -> pSc->asErrEn[band]
; ar4 = pNr
; ar5 -> pDb->asVadRxNse[band]
;
mvmm ar3, ar4
mar *+ar4(#GAEC_tSc.u.aNr)
mar *+ar3(#GAEC_tSc.asErrEn)
mvmm ar2, ar5
mar *+ar5(#GAEC_tDb.asVadErrNse)
mar *+ar2(#GAEC_tDb.aslNrPrior)
;
; loop start
stm #(GAEC_BANDS+1)-1, brc
rptb N20-1
ld *ar3+, a
add #GAEC_1DB*25, a
ld #GAEC_1DB*15, b
min a
call _gaec_utl_exp
stl a, *ar4(#GAEC_tScNr.sSig)
squr *ar4(#GAEC_tScNr.sSig), a
dst a, *ar4(#GAEC_tScNr.slSig)
ld *ar5+, a
add #GAEC_1DB*25, a
call _gaec_utl_exp
ld a, 8, a
ld a, 8, a
squr a, b
dst b, *ar4(#GAEC_tScNr.slNse)
dld *ar4(#GAEC_tScNr.slSig), a
sub b, a
ld #0, b
max a
dld *ar2+, b
sub b, a
add a, -6, b
dst b, *ar4(#GAEC_tScNr.slEst)
mar *+ar4(#GAEC_tScNr_Sz)
N20
ret
;-------------------------------------------------------------------------
.global _gaec_nr_coef
;-------------------------------------------------------------------------
_gaec_nr_coef
; GAEC_tDb *pDb = a - not used
; GAEC_tSc *pSc = sp(1)
;
ssbx sxm
mvdk *sp(1), ar3
mar *+ar3(#GAEC_tSc.u.aNr)
;
; local vars
_s1 .set 0
_s2 .set 1
frame #-2
;
stm #(GAEC_BANDS+1)-1, brc
rptb N30-1
dld *ar3(#GAEC_tScNr.slEst), a
dadd *ar3(#GAEC_tScNr.slNse), a
call _gaec_utl_en2log
stl a, _s1
dld *ar3(#GAEC_tScNr.slEst), a
call _gaec_utl_en2log
sub *sp(_s1), a
stl a, *sp(_s1)
dld *ar3(#GAEC_tScNr.slSig), a
call _gaec_utl_en2log
stl a, *sp(_s2)
dld *ar3(#GAEC_tScNr.slNse), a
call _gaec_utl_en2log
sub *sp(_s2), a
ld #GAEC_1DB*8, b
min a
stl a, *sp(_s2)
ld *sp(_s1), 1, a
call _gaec_utl_exp
stl a, *sp(_s1)
ld *sp(_s2), 1, a
call _gaec_utl_exp
stl a, *sp(_s2)
add *sp(_s1), a
ld a, 8, a
ld a, 8, a
mpya *sp(_s1)
add #2048, b
ld b, -12, a
call _gaec_utl_en2log
add #_DB52p21, a
ld #0, b
min a
call _gaec_utl_exp
stl a, *ar3(#GAEC_tScNr.sCoef)
mar *+ar3(#GAEC_tScNr_Sz)
N30
frame #2
ret
;-------------------------------------------------------------------------
.global _gaec_nr_upd
;-------------------------------------------------------------------------
_gaec_nr_upd
; GAEC_tDb *pDb = a
; GAEC_tSc *pSc = sp(1)
;
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
mar *+ar3(#GAEC_tSc.u.aNr)
mvmm ar2, ar4
mar *+ar4(#GAEC_tDb.aslNrPrior)
mar *+ar2(#GAEC_tDb.asNrCoef)
;
stm #(GAEC_BANDS+1)-1, brc
rptb N40-1
ld *ar3(#GAEC_tScNr.sCoef), a
sub #1024, a, b
bc N44, bgt
sub #720, a, b
bc N42, bgt
sub #410, a, b
bc N43, bgt
; case: <= 410
ld #410, a
sub *ar2, a
bd N44
ld a, -3, a
add *ar2, a
N42 ; case > 710
sub *ar2, a
bd N44
ld a, -1, a
add *ar2, a
N43 ; case > 410
sub *ar2, a
ld a, -2, a
add *ar2, a
N44
stl a, *ar2
ld *ar3(#GAEC_tScNr.sSig), t
mpy *ar2+, a
ld a, 4, a
squr A, b
dst b, *ar4+
;
mar *+ar3(#GAEC_tScNr_Sz)
N40
ret
;-------------------------------------------------------------------------
.global _gaec_nr_att
;-------------------------------------------------------------------------
_gaec_nr_att
; GAEC_tDb *pDb = a
; GAEC_tSc *pSc = sp(1)
;
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
mar *+ar2(#GAEC_tDb.asNrCoef)
mvmm ar3, ar5
mar *+ar5(#GAEC_tSc.u.asTmp)
rpt #(GAEC_BANDS+1)-1
mvdd *ar2+, *ar5+
mvmm ar5, ar4
mar *+ar4(#-GAEC_BANDS)
rpt #(GAEC_BANDS-1)-1
mvdd *ar4+, *ar5+
mar *+ar5(#-GAEC_BANDS*2) ; back to asTmp[0]
mvmm ar3, ar4
mar *+ar4(#GAEC_tSc.aasErr0)
stm #(2*GAEC_BANDS)-1, ar2
N10
ld *ar5+, t
stm #GAEC_ERR_SZ-1, brc
rptb N11-1
mpy *ar4, a
add #1, 11, a
sth a, 4, *ar4+
N11
banz N10, *ar2-
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -