📄 gaecdtda.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"
_DTSSC .set (0)
_ERL_CRIT_THR .set (GAEC_1DB*3)
_DTD_CRIT_THR .set (GAEC_1DB*6)
_DTD_NSE_THR .set (GAEC_1DB*8)
_DTD_NSE_THR2 .set (GAEC_1DB*4) ; shifted >> 1
.ref _gaec_utl_pkt_energy
;-------------------------------------------------------------------------
.global _gaec_dtd_exp_err
;-------------------------------------------------------------------------
_gaec_dtd_exp_err
; GAEC_tDb *pDb = a
; GAEC_tSc *pSc = sp(1)
;
stlm a, ar2
mvdk *sp(1), ar3
ssbx sxm
nop
ld *ar3(#(GAEC_tSc.sRoutEn)), a
_sNew .set 0
_sMax .set 1
pshm ar1
pshm ar6
pshm ar7
frame #-2
nop
mvmm ar3, ar1
stl a, *sp(_sNew)
;
; ptrs assignment
mar *+ar1(#GAEC_tSc.sErleMax)
mvmm ar2, ar4
mar *+ar4(#GAEC_tDb.asRoutEnHst)
mvmm ar2, ar5
mar *+ar5(#GAEC_tDb.sExpectedErrEn)
mvmm ar2, ar6
mar *+ar6(#GAEC_tDb.sErleAv)
mvmm ar2, ar7
mar *+ar7(#GAEC_tDb.sErlAv)
stm #GAEC_ADF_FRS-1, brc
rptb K10-1
ld *ar4+, b
max a
K10
mar *+ar4(#-GAEC_ADF_FRS)
stl a, *sp(_sMax)
ld *ar6, a
ld *ar1, b
min b
ld *sp(_sMax), a
sub b, a
sub *ar7, a;
stl a, *sp(_sMax)
ld *ar5, a
sub *sp(_sMax), a, b
nop
nop
xc 1, blt
ld *sp(_sMax), a
xc 2, bgeq
sub #102, a ; GAEC_DB(0.6)
stl a, *ar5
;
; shift array
mvmm ar4,ar3
mar *ar3+
rpt #GAEC_ADF_FRS-2
mvdd *ar3+, *ar4+
;
; update last elem with sNew
ld *sp(_sNew), a
stl a, *ar4+
mar *+ar4(#-GAEC_ADF_FRS)
frame #2
popm ar7
popm ar6
popm ar1
ret
;-------------------------------------------------------------------------
.global _gaec_dtd_exp_err_sb
;-------------------------------------------------------------------------
_gaec_dtd_exp_err_sb
; GAEC_tDb *pDb = a
; GAEC_tSc *pSc = sp(1)
;
_sMaxSb .set 4 ; stored in sp(1) [pSc]
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar1
pshm ar1
pshm ar6
pshm ar7
;
; ptrs assignment
mvmm ar2, ar4
mar *+ar4(#GAEC_tDb.aasRoutEnHst)
mvmm ar2, ar5
mar *+ar5(#GAEC_tDb.asExpectedErrEn)
mvmm ar2, ar6
mar *+ar6(#GAEC_tDb.asErleAv)
mvmm ar2, ar7
mar *+ar7(#GAEC_tDb.asErlAv)
mvmm ar1, ar2
mar *+ar2(#GAEC_tSc.asRoutEn)
mar *+ar1(#GAEC_tSc.sErleMax)
stm #GAEC_BANDS, ar0
K21
ld *ar2, a
stm #GAEC_ADF_FRS-1, brc
rptb K20-1
ld *ar4+, b
max a
K20
mar *+ar4(#-GAEC_ADF_FRS)
stl a, *sp(_sMaxSb)
ld *ar6+, a ; psErleAv incremented
ld *ar1, b
min b
ld *sp(_sMaxSb), a
sub b, a
sub *ar7+, a ; psErlAv incremented
stl a, *sp(_sMaxSb)
ld *ar5, a
sub *sp(_sMaxSb), a, b
nop
nop
xc 1, blt
ld *sp(_sMaxSb), a
xc 2, bgeq
sub #102, a ; GAEC_DB(0.6)
stl a, *ar5+ ; psExpectedErrEn incremented
;
; shift array
mvmm ar4,ar3
mar *ar3+
rpt #GAEC_ADF_FRS-2
mvdd *ar3+, *ar4+
;
; update last elem with sNew
mvdd *ar2+, *ar4+ ; psRcvEn incremented
; psRoutHstEn incremented
banz K21, *ar0-
popm ar7
popm ar6
popm ar1
ret
;-------------------------------------------------------------------------
.global _gaec_dtd_vad_err
;-------------------------------------------------------------------------
_gaec_dtd_vad_err
; GAEC_tDb *pDb,
; GAEC_tSc *pSc,
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
mvdk *ar2(#GAEC_tDb.uAdfMode), ar5
stm #3, ar0
cmpr 01, ar5
;
; set ptrs
; ar3-> pSc->sErrEn
; ar4-> pDb->sVadRxNse
; ar5-> pDb->sVadRxCrit
; ar0-> pSc->sSinEn
;
frame #-2
_sDlt .set 0
_sNseMin .set 1
mvmm ar2, ar4
mar *+ar4(#GAEC_tDb.sVadErrNse)
mvmm ar2, ar5
mar *+ar5(#GAEC_tDb.sVadErrCrit)
mvmm ar3, ar0
mar *+ar0(#GAEC_tSc.sSinEn)
mar *+ar3(#GAEC_tSc.sErrEn)
st #GAEC_VAD_NSE_MIN, *sp(_sNseMin)
ld *ar3, a
sub *sp(_sNseMin), a
bc K31, aleq
ld *ar0, a
sub *sp(_sNseMin), a
bc K31, aleq
ld *ar3, a
sub *ar4, a
stl a, *sp(_sDlt)
sub #GAEC_VAD_CRIT_THR, a
add *ar5, a
ld #GAEC_CRIT_MIN, b
max a
ld #GAEC_CRIT_MAX, b
min a
stl a, *ar5+
sub #GAEC_VAD_CRIT_THR, a
bc K30, ageq
ld *ar4, a
xc 2, tc
add *sp(_sDlt), -3, a
xc 2, ntc
add *sp(_sDlt), -5, a
ld #GAEC_VAD_NSE_MAX, b
min a
ld *sp(_sNseMin), b
bd K32
max a
stl a, *ar4+
K30
ld *ar3, a
sub #GAEC_VAD_NSE_MAX, a
bc K32, ageq
ld *ar4, a
add #1, a
xc 2, tc
add #9, a
stl a, *ar4+
b K32
K31
ld *ar5, a
sub #GAEC_VAD_CRIT_THR, a
ld #GAEC_CRIT_MIN, b
max a
stl a, *ar5+
K32
frame #2
ret
;-------------------------------------------------------------------------
.global _gaec_dtd_vad_err_sb
;-------------------------------------------------------------------------
_gaec_dtd_vad_err_sb
; GAEC_tDb *pDb,
; GAEC_tSc *pSc,
stlm a, ar2
ssbx sxm
nop
mvdk *sp(1), ar3
mvdk *ar2(#GAEC_tDb.uAdfMode), ar5
stm #3, ar0
cmpr 01, ar5
;
; set ptrs
; ar3-> pSc->sErrEn
; ar4-> pDb->sVadRxNse
; ar5-> pDb->sVadRxCrit
; ar0-> pSc->sSinEn
;
frame #-2
_sDltSb .set 0
_sMaxEnSb .set 1
mvmm ar2, ar4
mar *+ar4(#GAEC_tDb.asVadErrNse)
mvmm ar2, ar5
mar *+ar5(#GAEC_tDb.asVadErrCrit)
mvmm ar3, ar0
mar *+ar0(#GAEC_tSc.asSinEn)
mar *+ar3(#GAEC_tSc.asErrEn)
ld #-32768, a
stm #GAEC_BANDS, brc
rptb K40-1
ld *ar3+, b
max a
K40
mar *+ar3(#-(GAEC_BANDS+1))
stl a, *sp(_sMaxEnSb)
stm #GAEC_BANDS, ar2
K41
ld *ar3, a
sub #GAEC_VAD_NSE_MIN, a
bc K43, aleq
ld *ar0, a
sub #GAEC_VAD_NSE_MIN, a
bc K43, aleq
ld *ar3, a
sub *ar4, a
stl a, *sp(_sDltSb)
sub #GAEC_VAD_CRIT_THR, a
add *ar5, a
ld #GAEC_CRIT_MIN, b
max a
ld #GAEC_CRIT_MAX, b
min a
stl a, *ar5
;;; sub #GAEC_VAD_CRIT_THR, a
bc K42, ageq
ld *ar4, a
xc 2, tc
add *sp(_sDltSb), -3, a
xc 2, ntc
add *sp(_sDltSb), -5, a
ld #GAEC_VAD_NSE_MAX, b
min a
ld #GAEC_VAD_NSE_MIN, b
bd K44
max a
stl a, *ar4
K42
ld *ar3, a
sub #GAEC_VAD_NSE_MAX, a
bc K44, ageq
ld *sp(_sMaxEnSb), a
sub #(GAEC_VAD_NSE_MAX + GAEC_1DB*10), a
bc K44, ageq
ld *ar4, a
add #1, a
xc 2, tc
add #9, a
stl a, *ar4
b K44
K43
ld *ar5, a
sub #GAEC_VAD_CRIT_THR, a
ld #GAEC_CRIT_MIN, b
max a
stl a, *ar5
K44
;
; increment pointers
mar *ar0+
mar *ar3+
mar *ar4+
mar *ar5+
banz K41, *ar2-
frame #2
ret
.if 0
;-------------------------------------------------------------------------
.global _gaec_dtd_erle
;-------------------------------------------------------------------------
_gaec_dtd_erle
; GAEC_tDb *pDb,
; GAEC_tSc *pSc,
;
ssbx sxm
mvdk *sp(1), ar3
mvmm ar3, ar4
mar *+ar4(#GAEC_tSc.asErrEn)
mvmm ar3, ar5
mar *+ar5(#GAEC_tSc.asSndEn)
mar *+ar3(#GAEC_tSc.asErle)
ld #0, b
stm #GAEC_BANDS, brc
rptb K50-1
sub *ar5+, *ar4+, a
max a
sth a, *ar3+
K50
ret
.endif
;-------------------------------------------------------------------------
.global _gaec_dtd_criteria
;-------------------------------------------------------------------------
_gaec_dtd_criteria
; GAEC_tDb *pDb,
; GAEC_tSc *pSc,
;
pshm ar1
stlm a,ar2
ssbx sxm
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -