⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fcode.asm

📁 文件为美军4800bps语音压缩编码标准在TI的DSP芯片TMS320C5X上的实时实现源代码。
💻 ASM
字号:
	.version        50
	.mmregs
	.MLIB "MAC.LIB"
	.GLOBAL EMAX
	.BSS SUBCODE_I,1
	.bss FRAME_LOOP,1

	.BSS TJ,2	;//by durbin LSP34
	.BSS TEMP,1	;//by pctorc, durbin
	.BSS CORFLAG,1	;//by pctorc, durbin
	.BSS STACK,2
	.BSS DIVISOR,1	;//by durbin
	.BSS SIGNFLAG,1 ;//by pctorc,durbin
	.bss LSPFLAG,1
	.bss ACCBUF,2
	.BSS ACCBBUF,2
	;.BSS STATUS,2
	.BSS IBUF,1
	.BSS MINPQ,2
	.BSS BB,5		;//PTENCODE
	.BSS PINDEX,1		;//BY PTENCODE
	.BSS SSUB_ADDR,1
	.BSS FIRST_SUB,1
	.BSS ADDR_SYN_S,1
	;.BSS ADDR_SIG,1
	.BSS ACC_PUSH,2
	;.BSS ADDR_SP_OUT,1
	.BSS SP_STACK,1

	;--------
	.COPY "WARRAY.ASM"
	.copy "set_con.asm"
	;-----------
	.data
	.COPY "DATA_SEG.ASM"
	;----------
	.text
	B C50_START	;0 RS
	.SPACE 16*2	;2 INT1
	.SPACE 16*2	;4 INT2
	.SPACE 16*2	;6 INT3
	.SPACE 16*2	;8 TINT
	B SP0_RE_TRAP	;10 RINT
	.SPACE 16*2	;12 XINT
	;B SP0_TX	;12 XINT
	.SPACE 16*2	;14 TRNT
	.SPACE 16*2	;16 TXNT
	.SPACE 16*2	;18 INT4
	;------------------------
C50_START
	CALL C50_INIT
	LDP #ACCBUF
	;B FORE_HERE
	LACC #10H
	SAMM IMR	;OPEN RINT
	;CLRC INTM
	;NOP
	;SPLK #SP_IN_DATA+1, ADDR_SP_IN_DATA
	;SPLK #SP_OUT_DATA+180, ADDR_SP_OUT_DATA
	SPLK #S0, ADDR_SP_IN_DATA
	LACC #S0
	SLAC ADDR_SP_OUT_DATA
CODE_AGAIN
	;=============================
	LDP #ACCBUF
	CLR0 D1A,229
	CLR0 D1B,229
	CLR0 D2A,22
	CLR0 D2B,22
	CLR0 D3A,22
	CLR0 D3B,22
	CLR0 D4A,22
	CLR0 D4B,22
	CLR0 SOLD,240      	;SOLD[I]=0
	LACC #TRUE
	SACL FIRST_SUB
	LDP #FRAME_LOOP
	;LACC #S0
	;SACL ADDR_SIG
	;SACL ADDR_SIG_OUT
	LACC #1
	SACL OLDPTR		;//PSEARCH
	LACC #DEBUG_FRAME
	LACL #1
	SACL FRAME_LOOP
GET_SIGNAL
	;SPLK #SP_OUT_DATA,ADDR_SYN_S
	LACC ADDR_SP_IN_DATA
	SACL ADDR_SYN_S
	CALL GETS
	CALL HAMSIG
	call GETCOR
	call DURBIN
	CALL BWEXP
	CALL PCTORC
	call PCLSP
	CALL LSP34
	CALL INTAN
	LACC #0
	SACL SUBCODE_I
	LACC #SUBLSP
	SACL ADDR_LSP
	LACC #SOLD+120
	SACL SSUB_ADDR
SUBCODE
	  ;----------
	  CALL LSPPC
	  ;----------
	  CALL CSUB
	  ;--------
	  LACC ADDR_SYN_S
	  SAMM BMAR
	  ADD #60
	  SACL ADDR_SYN_S
	  LAR AR0,#SYN_S
	  MAR *,AR0
	  RPT #59
	    BLDD *+,BMAR
	  CLRC INTM;!!!!!!!!!!!!!!!!!!
	  ;---------
	  lacc SSUB_ADDR
	  ADD #60
	  SACL SSUB_ADDR
	  ;-----
	  LACC #FALSE
	  SACL FIRST_SUB
	  ;----------
	  LACC ADDR_LSP
	  ADD #10
	  SACL ADDR_LSP
	  LACC SUBCODE_I
	  ADD #1
	  SACL SUBCODE_I
	  SUB #4
	BCND SUBCODE,NEQ
	;-------for (i = 0; i < ll; i++) sold[i] = snew[i];
	MOVEFR 240,SNEW,SOLD
	;------
	;LACC ADDR_SIG
	;ADD #FLEN
	;SACL ADDR_SIG
	LACC FRAME_LOOP
	ADD #1
	SACL FRAME_LOOP
	sub #DEBUG_FRAME
	BCND GET_SIGNAL,LEQ
	;B CODE_AGAIN
FORE_HERE
	;LACC #10H
	;SAMM IMR	;OPEN RINT
	CLRC INTM
	NOP
HERE:	B $

	.BSS ADDR_SP_OUT_DATA,2
	.BSS ADDR_SP_IN_DATA,1
SP0_RE_TRAP
	LAMM AR0
	SACL SP_STACK
	;----IN=====
	LAMM DRR
	;B SP0_T1
	;=========
	;SAMM DXR
	BSAR 2
	SACL PCM
	CALL PCMTOLINEAR	;PCM->SLK
	;----
	LACC ADDR_SP_IN_DATA
	SAMM AR0
	ADD #1
	;SACL ADDR_SP_IN_DATA
	MAR *,AR0
	LACC SLK
	SACL *,2

;--=========OUT======--------------
SP0_T1
	LLAC ADDR_SP_OUT_DATA
	SAMM AR0
	ADD #1
	SACB
	LACC #S0
	ADD #DEBUG_FRAME*240
	CRLT
	NOP
	XC 2,C
	  ;LACC #SP_OUT_DATA
	  LACC #S0
	SLAC ADDR_SP_OUT_DATA
	MAR *,AR0
	LACC *
	BSAR 2
	SACL SRK
	CALL LINEARTOPCM	;SRK->PCM
	LACC PCM
	SAMM DXR
	;----
	LACC SP_STACK
	SAMM AR0
	RETE
;=================================
;=================================
	.INCLUDE "SUB_INCL.ASM"
	.INCLUDE "PCM.ASM"
	.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -