📄 getcor.asm
字号:
;----AR1->(long)COR[11]**, AR0->SIGNAL[240]
;===================================
;----used AR7,AR6,AR2,SPM 0,
;----AR0, AR1, AR2, AR6, AR7, BMAR, TREG0, PREG, ACC, ACCB
;----IBUF
;===================================
;COR .USECT "WARRAY",11*2
;===================================
GETCOR
LAR AR0,#SIGNAL
LAR AR1,#COR ;AR1->COR,AR0->SIGNAL
LAMM AR0
SAMM AR2
;LAR AR6,#HFLEN_1 ;120-i,AR6--
lacc #HFLEN_1
sacl IBUF
LAR AR7,#10 ;REPEAT COUNT
SPM 3
;------------ARP=0
;-------Begin calculating c0
MAR *,AR0
ZAP
RPT #HFLEN_1
MAC #SIGNAL,*+
APAC ;120 values sum ACC+=PREG*(2**shift)
;SFR ;ACC>>=1
SACB ;ACC->ACCB
;-----------
ZAP
;RPT AR6 ;AR6->RPTC
rpt IBUF
MAC #SIGNAL+120,*+
APAC ;(AR6) values sum ACC+=PREG*(2**shift)
;SFR ;ACC>>=1
ADDB ;ACC+=ACCB
;----------------
SUB #256
BCND GLT256,LEQ ;JUMP IF C0<256
;-----IF C0>=256-----------
;----GET C----------
ADD #256
MAR *,AR1
SACL *+ ;ARP=1
SACH *+,0,AR6 ;ARP=6
;-----------------
lacc IBUF
sub #1
sacl IBUF
MAR *-,AR2 ;AR6--,120-i
MAR *+,AR7 ;AR2++,*signal++
MAR *-,AR0
LAMM AR2
SAMM AR0
;LAR AR0,AR2 ;AR2->AR0 ,ARP=0
B COR_256
;----IF C0<256-----------
GLT256
SPM 0
LAR AR0,#SIGNAL
;--------------------ARP=0
COR_256
ZAP
RPT #HFLEN_1
MAC #SIGNAL,*+
APAC ;120 values sum ACC+=PREG*(2**shift)
;SFR ;ACC>>=1
SACB ;ACC->ACCB
;-----------
ZAP
;RPT AR6 ;AR6->RPTC
rpt IBUF
MAC #SIGNAL+120,*+
APAC ;120 values sum ACC+=PREG*(2**shift)
;SFR ;ACC>>=1
ADDB ;ACC+=ACCB
;----GET C----------
MAR *,AR1
SACL *+ ;ARP=1
SACH *+,0,AR6 ;ARP=6
;-----------------
lacc IBUF
sub #1
sacl IBUF
MAR *-,AR2 ;AR6--,120-i
MAR *+,AR7 ;AR2++,*signal++
;LAR AR0,AR2 ;AR2->AR0 ,ARP=7
LAMM AR2
SAMM AR0
BANZ COR_256,*-,AR0
RETD
SPM 0
NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -