📄 txtpcm.asm
字号:
SPLK #1,S3
XC 2,LT
SPLK #-1,S3
LACC DQK4
NOP
XC 2,GEQ
SPLK #1,S4
XC 2,LT
SPLK #-1,S4
LACC DQK5
NOP
XC 2,GEQ
SPLK #1,S5
XC 2,LT
SPLK #-1,S5
LACC DQK6
NOP
XC 2,GEQ
SPLK #1,S6
XC 2,LT
SPLK #-1,S6
; if( dqk>0 ) s0=1; else {if (dqk==0) s0=0; else s0=-1;}
; if( dqk1>=0 ) s1=1; else s1=-1;
; if( dqk2>=0 ) s2=1; else s2=-1;
; if( dqk3>=0 ) s3=1; else s3=-1;
; if( dqk4>=0 ) s4=1; else s4=-1;
; if( dqk5>=0 ) s5=1; else s5=-1;
; if( dqk6>=0 ) s6=1; else s6=-1;
LT S0
MPY S1
SPL TEMP1 ;TEMP1=S0*S1
LACC TEMP1,15
LT B1K1F
MPY #255
APAC
BSAR 8
SACL B1KF
LT S0
MPY S2
SPL TEMP1 ;TEMP1=S0*S2
LACC TEMP1,15
LT B2K1F
MPY #255
APAC
BSAR 8
SACL B2KF
LT S0
MPY S3
SPL TEMP1 ;TEMP1=S0*S3
LACC TEMP1,15
LT B3K1F
MPY #255
APAC
BSAR 8
SACL B3KF
LT S0
MPY S4
SPL TEMP1 ;TEMP1=S0*S4
LACC TEMP1,15
LT B4K1F
MPY #255
APAC
BSAR 8
SACL B4KF
LT S0
MPY S5
SPL TEMP1 ;TEMP1=S0*S5
LACC TEMP1,15
LT B5K1F
MPY #255
APAC
BSAR 8
SACL B5KF
LT S0
MPY S6
SPL TEMP1 ;TEMP1=S0*S6
LACC TEMP1,15
LT B6K1F
MPY #255
APAC
BSAR 8
SACL B6KF
; b1kf=(255*(long)b1k1f+((long)(s0*s1)<<15))>>8;
; b2kf=(255*(long)b2k1f+((long)(s0*s2)<<15))>>8;
; b3kf=(255*(long)b3k1f+((long)(s0*s3)<<15))>>8;
; b4kf=(255*(long)b4k1f+((long)(s0*s4)<<15))>>8;
; b5kf=(255*(long)b5k1f+((long)(s0*s5)<<15))>>8;
; b6kf=(255*(long)b6k1f+((long)(s0*s6)<<15))>>8;
LACC TRK
BCND U19,EQ
LACC #0
SACL A1KF
SACL A2KF
SACL B1KF
SACL B2KF
SACL B3KF
SACL B4KF
SACL B5KF
SACL B6KF
U19
; if( trk==1 ){
; a1kf=0;
; a2kf=0;
; b1kf=0;
; b2kf=0;
; b3kf=0;
; b4kf=0;
; b5kf=0;
; b6kf=0;
; }
;delays
LACC B1KF
SACL B1K1F
LACC B2KF
SACL B2K1F
LACC B3KF
SACL B3K1F
LACC B4KF
SACL B4K1F
LACC B5KF
SACL B5K1F
LACC B6KF
SACL B6K1F
LACC DQK5
SACL DQK6
LACC DQK4
SACL DQK5
LACC DQK3
SACL DQK4
LACC DQK2
SACL DQK3
LACC DQK1
SACL DQK2
LACC DQK
SACL DQK1
LACC SRK1
SACL SRK2
LACC SRK
SACL SRK1
LACC YUKF
SACL YUK1F
LACC YLKFH
SACL YLK1FH
LACC YLKFL
SACL YLK1FL
LACC APKF
SACL APK1F
LACC A1KF
SACL A1K1F
LACC A2KF
SACL A2K1F
LACC PK1
SACL PK2
LACC PK
SACL PK1
RET
DELTASIGNAL
LACC SLK
SUB SEK
SACL DK
RET
ADAPTIVEQUANTIZER
LACC DK
ABS ;ACC=ABS(DK)
BCND A6,NEQ
LACC #1 ;IF ACC=0 THEN ACC=1
A6 MAR *,AR1
LAR AR1,#30
RPT #29
NORM *-
BSAR 16
BSAR 7
AND #7Fh
SACB
LAMM AR1
AND #0Fh
SACL TEMP1
LACC TEMP1,7
ADDB
SACL TEMP2
LACC TEMP2,2
SUB YKF
BSAR 2
SACL TEMP1
LACC DK
NOP
XC 2,GEQ
SPLK #0,I1K
XC 2,LT
SPLK #1,I1K
LACC TEMP1
SUB #261
BCND A4,LT
LACC #1
XOR I1K
SACL I0K
B A5
A4 LACC I1K
SACL I0K
A5 RET
INVERSEQUANTIZER
LACC I0K
SAMM DBMR
CPL I1K
BCND SS1,NTC
LACC #116
SACL TEMP1
B SS2
SS1 LACC #365
SACL TEMP1
SS2 LACC YKF
BSAR 2
ADD TEMP1
SACL TEMP2
BSAR 7
AND #0Fh
SUB #14
NEG
SAMM TREG1 ;TREG1=14-(TEMP2>>7)&0X0F
LACC TEMP2
AND #7Fh
ADD #80h
SACL TEMP3 ;TEMP3=0X80+TEMP2&0X7F
LACC TEMP3,7
SATL
SACL DQK
LACC TEMP2
NOP
XC 2,LT
SPLK #1,DQK
SS4 LACC I1K
BCND SS5,EQ
LACC DQK
NEG
SACL DQK
SS5 RET
QUANTIZERSCALE
LACC YLK1FH,16
SACB
LACL YLK1FL
ORB
BSAR 6
SACL TEMP2 ;TEMP2=YLK1F>>6
LACC YUK1F
SUB TEMP2
SACL TEMP1 ;TEMP1=YUK1F-TEMP2
SPM 3
LT TEMP1
MPY ALKF
LACC TEMP2
APAC
SACL YKF ;YKF=(ALKF*TEMP1)>>6+TEMP2
RET
SPEEDCTL
LACC APK1F
SACB
LACC #100h
CRGT
BCND SSS1,C
LACC #40h
SACL ALKF
B SSS2
SSS1 LACC APK1F
BSAR 2
SACL ALKF
SSS2 RET
RECONSTRUCT
SPM 3
;;;;;;;;;;;;;;;;;
; ZAP
; MAC B1K1F,DQK1
; MAC B2K1F,DQK2
; MAC B3K1F,DQK3
; MAC B4K1F,DQK4
; MAC B5K1F,DQK5
; MAC B6K1F,DQK6
; APAC
ZAP
LT B1K1F
MPY DQK1
APAC
LT B2K1F
MPY DQK2
APAC
LT B3K1F
MPY DQK3
APAC
LT B4K1F
MPY DQK4
APAC
LT B5K1F
MPY DQK5
APAC
LT B6K1F
MPY DQK6
APAC
BSAR 8
SACL SEZK
SPM 0
ZAP
;;;;;;;;;;;;;;;;;;;;;
; MAC A1K1F,SRK1
; MAC A2K1F,SRK2
; APAC
LT A1K1F
MPY SRK1
APAC
LT A2K1F
MPY SRK2
APAC
BSAR 14
ADD SEZK
SACL SEK
RET
;srk pcm
LINEARTOPCM
LACC SRK ;srk is a 14bits linear value
ABS
SPLK #0h,PCM
AND #0FFE0h
NOP
XC 2,NEQ
SPLK #10h,PCM
AND #0FFC0h
NOP
XC 2,NEQ
SPLK #20h,PCM
AND #0FF80h
NOP
XC 2,NEQ
SPLK #30h,PCM
AND #0FF00h
NOP
XC 2,NEQ
SPLK #40h,PCM
AND #0FE00h
NOP
XC 2,NEQ
SPLK #50h,PCM
AND #0FC00h
NOP
XC 2,NEQ
SPLK #60h,PCM
AND #0F800h
NOP
XC 2,NEQ
SPLK #70h,PCM
LACC SRK
NOP
XC 2,GEQ
OPL #80h,PCM
LACC PCM
BSAR 4
AND #7
NOP
XC 2,EQ
LACC #1
SAMM TREG1
LACC SRK
ABS
SATL
AND #15
OR PCM
XOR #55h
SACL PCM ;pcm stores PCM value
RET
;segnum qvalue
PCMTOLINEAR
SPM 0
XPL #55h,PCM
LACC PCM
BSAR 4
AND #7
SACL SEGNUM
ADD #4
SAMM TREG1
SPLK #1,SLK
LACT SLK
SACL SLK
SUB #16
NOP
XC 2,EQ
SPLK #0,SLK
LACC SEGNUM
SAMM TREG1
SPLK #1,QVALUE
LACT QVALUE
SFR
SACL QVALUE
NOP
XC 2,EQ
SPLK #1,QVALUE
LACC PCM
AND #0Fh
SFL
ADD #1
SAMM TREG0
MPYU QVALUE
LACC SLK
APAC
SACL SLK
LACC PCM
AND #80h
BCND P1,NEQ
LACC SLK
NEG
SACL SLK ;slk is 14bits linear value
P1 RET
;******************************************************************
; NOTE: Here begins three kinds of interrupt routines' processing.*
;******************************************************************
ISR4 LDP #IN_BITS
LACC #0
SACL TIMES
SACL VTIMES
LACC SWITCH
XOR #0001h
SACL SWITCH ; change serial port receiver buffer
LACC VSWITCH
XOR #0001h
SACL VSWITCH ; change serial port send buffer
LACC #BWD_SERIAL1
SAMM BMAR
LACC SWITCH
BCND K1,EQ
LACC #BWD_SERIAL2
SAMM BMAR
K1 LAR AR7,#FWD_SERIAL1
LACC VSWITCH
NOP
XC 2,EQ
LAR AR7,#FWD_SERIAL2 ; choose buffer to save received data
MAR *,AR7
RPT #319
BLDD BMAR,*+ ; whether CRC ok or not,save VOICE data to FWD_SERIAL buffer
RET
RINT CLRC XF
LDP #ENCODE
LAMM DRR
SACL PCM
CALL PCMTOLINEAR
CALL RECONSTRUCT
CALL DELTASIGNAL
CALL SPEEDCTL
CALL QUANTIZERSCALE
CALL ADAPTIVEQUANTIZER
CALL INVERSEQUANTIZER
CALL UPDATE
LDP #IN_BITS
LACC TIMES
SUB #160
BCND NODO,GEQ
LAR AR1,#BWD_SERIAL1
LACC SWITCH
NOP
XC 2,NEQ
LAR AR1,#BWD_SERIAL2
MAR *,AR1
LACC TIMES
SFL
SAMM INDX
NOP
NOP
MAR *0+,AR1
LACC I0K
SACL *+
LACC I1K
SACL *
LACC TIMES
ADD #1
SACL TIMES
NODO RETE
XINT SETC XF
LDP #IN_BITS
LACC VTIMES
SUB #160
BCND NOVOICE,GEQ
LAR AR1,#FWD_SERIAL1
LACC VSWITCH
NOP
XC 2,NEQ
LAR AR1,#FWD_SERIAL2
MAR *,AR1
LACC VTIMES
SFL
SAMM INDX
NOP
NOP
LDP #DECODE
MAR *0+,AR1
LACC *+
SACL I0K
LACC *
SACL I1K
CALL RECONSTRUCT
CALL SPEEDCTL
CALL QUANTIZERSCALE
CALL INVERSEQUANTIZER
CALL UPDATE
CALL LINEARTOPCM
LACC PCM
AND #00FFh
SAMM DXR
LDP #IN_BITS
LACC VTIMES
ADD #1
SACL VTIMES
RETE
NOVOICE LACC #54h
SAMM DXR
RETE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -