📄 gaecepca.s55
字号:
*-------------------------------------------------------------------------*
* *
* 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
.cpl_on
.arms_on
.include "gaeci.h55"
.sect ".ftext2"
_IN_SHFT .set (3)
_EN_SHFT .set (1)
_NORM_SHFT .set (15)
_REG2 .set (1 << 8); load high!!!!
.ref _gaec_utl_en2log
; .ref _gl_sInvA ; dbg
;-------------------------------------------------------------------------
.global _gaec_epc_in
;-------------------------------------------------------------------------
_gaec_epc_in
;S16 *psSav = ar0,
;S32 *pslXcAcc = ar1,
;S16 *psXc = ar2,
;S16 *psIn = ar3,
;S32 *plsReg = ar4
;
pshboth(xar5)
sp = sp - #2
sDiv .set 0
sInv .set 1
xar5 = mar(*ar0(#(GAEC_FR_SZ/2)))
repeat (#(GAEC_EPC_SSZ-1))
*ar0+ = *ar5+
brc0 = #(GAEC_FR_SZ/2-1)
localrepeat {
ac0 = *ar3+
ac0 = ac0 + *ar3+
*ar0+ = LO(ac0 << #(-_IN_SHFT));
}
mar (*ar0-)
brc0 = #(GAEC_EPC_MAXD-1)
xar5 = xar0;
localrepeat {
ac0 = *ar0- * *ar5-
|| repeat (#(GAEC_FR_SZ/2-2))
ac0 = ac0 + (*ar0- * *ar5-);
ac1 = dbl(*ar1);
ac0 = ac0 - ac1;
ac1 = ac1 + (ac0 << #(-_EN_SHFT));
dbl(*ar1+) = ac1;
mar (ar0 + #(GAEC_FR_SZ/2));
mar (ar5 + #(GAEC_FR_SZ/2-1));
}
mar (*+ar1(#(-GAEC_EPC_MAXD*2)))
ac0 = dbl(*ar1)
ac0 = ac0 + dbl(*ar4)
dbl(*ar1) = ac0;
ac0 = mant(ac0), t0 = -exp(ac0) || nop
*sp(#sDiv) = HI(ac0)
t0 = -t0;
ac1 = #(1<<12) << #16;
repeat (#(16-1))
subc (*sp(#sDiv), ac1, ac1);
*sp(#sInv) = ac1;
; *(_gl_sInvA) = ac1; // dbg
t0 = t0 - #2;
brc0 = #(GAEC_EPC_MAXD-1)
localrepeat {
ac0 = dbl(*ar1+)
ac0 = ac0 << t0
ac1 = ac0 * *sp(#sInv)
*ar2+ = HI(ac1 << #(16-_NORM_SHFT))
}
.if 0
.endif
sp = sp + #2
xar5 = popboth()
return
;-------------------------------------------------------------------------
.global _gaec_epc_corr
;-------------------------------------------------------------------------
_gaec_epc_corr
; GAEC_tDb *pDb, = ar0
; GAEC_tScEpc *pSc = ar1
;
; snd
xar2 = mar(*ar1(#(GAEC_tScEpc.asEpcSnd + GAEC_EPC_MIND)))
ac0 = #_REG2 << #16;
repeat (#(GAEC_EPC_MAXD-GAEC_EPC_MIND-1))
ac0 = ac0 + (*ar2+ * *ar2+)
call _gaec_utl_en2log
*ar1(#(GAEC_tScEpc.sEpcSnd)) = t0;
;
; rcv
xar2 = mar(*ar1(#(GAEC_tScEpc.asEpcRcv + GAEC_EPC_MIND)))
ac0 = #_REG2 << #16;
repeat (#(GAEC_EPC_MAXD-GAEC_EPC_MIND-1))
ac0 = ac0 + (*ar2+ * *ar2+)
call _gaec_utl_en2log
*ar1(#(GAEC_tScEpc.sEpcRcv)) = t0
;
; cross - term
xar2 = mar(*ar1(#(GAEC_tScEpc.asEpcSnd + GAEC_EPC_MIND)))
xar3 = mar(*ar1(#(GAEC_tScEpc.asEpcRcv + GAEC_EPC_MIND)))
ac0 = #0;
|| repeat (#(GAEC_EPC_MAXD-GAEC_EPC_MIND-1))
ac0 = ac0 + (*ar2+ * *ar3+)
ac1 = #0;
ac0 = max (ac1, ac0)
call _gaec_utl_en2log
*ar1(#(GAEC_tScEpc.sEpcXcr)) = t0;
;
;
ac0 = t0;
ac1 = *ar1(#(GAEC_tScEpc.sEpcSnd))
ac1 = ac1 + *ar1(#(GAEC_tScEpc.sEpcRcv))
ac0 = ac0 - (ac1 << #-1);
ac1 = #(-30*GAEC_1DB)
ac0 = max(ac1, ac0)
*ar0(#(GAEC_tDb.sEpcXcr)) = ac0;
.if 0
.endif
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -