📄 fixed.asm
字号:
SACL APKF
B U18
U16 LT APK1F
MPY #15
LACC #512
APAC
BSAR 4
SACL APKF
U18
; if( (abs(dmskf-(dmlkf>>2))>=(dmlkf>>5)) || (ykf<0x600) || (tdk==1) )
; { acc=15*(long)apk1f+512;
; apkf=acc>>4;}
; else { if(trk==1) apkf=0x100;
; else apkf=(15*(long)apk1f)>>4;}
;used for reconstruct
LACC DQK
NOP
XC 2,GT
SPLK #1,S0
XC 2,EQ
SPLK #0,S0
XC 2,LT
SPLK #-1,S0
LACC DQK1
NOP
XC 2,GEQ
SPLK #1,S1
XC 2,LT
SPLK #-1,S1
LACC DQK2
NOP
XC 2,GEQ
SPLK #1,S2
XC 2,LT
SPLK #-1,S2
LACC DQK3
NOP
XC 2,GEQ
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
LDP #SLK
LACC SLK
SUB SEK
SACL DK
RET
ADAPTIVEQUANTIZER
LDP #DK
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
LDP #I0K
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
LDP #YUK1F
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
LDP #APK1F
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
LDP #DQK1
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
;*******************************************************
;*THIS SUBROUTINE INITIALIZE C50'S REGISTERS AND MEMORY*
;*******************************************************
C50_INIT
SETC OVM
SETC SXM
CLRC HM
CLRC CNF ;map DARAM B0 into data memory
LDP #0
;;;;;;;;;;;;;;;;;;;;;;;;;
; SPLK #0834h,PMST ;map 9K SARAM into both program and data memory
;relocate interrupt vector at 0x800h
SPLK #0010h,CWSR ;SET BIG MODE BIT
SPLK #0FFFFh,IOWSR ;SET I/O WAIT STATUS TO 3
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -