📄 isrvectors.asm
字号:
.mmregs
.sect "DspIntVectors"
.def _RSTInt
.ref start
.ref _A
.ref _B
.ref _C
.ref Num
.ref _y
_RSTInt .ivec start, USE_RETA ;reset vector and stack mode
Nonmaskable .ivec NoIsr ;sint1
INT0 .ivec NoIsr ;sint2
INT2 .ivec NoIsr ;sint3
TINT0 .ivec NoIsr ;sint4
RINT0 .ivec NoIsr ;sint5
RINT1 .ivec NoIsr ;sint6
XINT1 .ivec NoIsr ;sint7
Soft8Int .ivec NoIsr ;sint8
DAM1 .ivec NoIsr ;sint9
DSPINT .ivec NoIsr ;sint10
INT3 .ivec NoIsr ;sint11
RINT2 .ivec NoIsr ;sint12
XINT2 .ivec NoIsr ;sint13
DMA4 .ivec NoIsr ;sint14
DMA5 .ivec NoIsr ;sint15
INT1 .ivec NoIsr ;sint16
XINT0 .ivec NoIsr ;sint17
DMA0 .ivec NoIsr ;sint18
INT4 .ivec NoIsr ;sint19
DMA2 .ivec NoIsr ;sint20
DMA3 .ivec NoIsr ;sint21
TINT1 .ivec TINT1_Isr ;Timer1 Interrupt Service
INT5 .ivec NoIsr ;sint23
Bus_Error .ivec NoIsr ;sint24
Emu_26 .ivec NoIsr ;sint25
Emu_27 .ivec NoIsr ;sint26
Soft28Int .ivec NoIsr ;sint27
Soft29Int .ivec NoIsr ;sint28
Soft30Int .ivec NoIsr ;sint29
Soft31Int .ivec NoIsr ;sint30
Soft32Int .ivec NoIsr ;sint31
.text
NoIsr:
NOP
NOP
RETI
TINT1_Isr:
NOP
;Jump to the end of ISR, while the suffix is full,
;in order to avoid dirty the datas out of result array
MOV *(#Num),T0
BCC TINT1_Isr_end,T0>=#101
MOV *(#_A),T1
MOV #_y,AR0
ADD T0,AR0
MOV *AR0(#-1)<<#16,AC0
MPY T1,AC0 ;AC0 = A * y(n-1)
MOV *(#_B),T1
MOV *AR0(#-2)<<#16,AC1
MAC AC1,T1,AC0 ;AC0 = AC0 + B * y(n-2)
MOV HI(AC0),T1
MOV T1,AC1
MOV #1,T1
MOV AC1<<T1,*AR0 ;y(n) = HI(AC0) * 2
ADD #1,T0
MOV T0,*(#Num) ;Suffix increasing
TINT1_Isr_end:
NOP
RETI
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -