📄 svgen_dq.asm
字号:
SUB *+ ; ACC = 1-t1.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SUB *-,AR2 ; ACC = 1-t1=t2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SFR ; ACC = (1-t1=t2)/2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
ADRK #2 ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
SACL *-,AR3 ; Store tc
; ARP=AR3. AR0->FR1 AR2->tb AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = tc + t1
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
SACL *-,AR3 ; Store tb = tc + t1.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = tb + t2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *+ ; Store ta.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
; Sector Subroutine #5. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR5: SBRK #2 ; ARP=AR0. AR0->FR0 AR2->ta AR3->FR3.
LACC *+,AR3 ; ACC = X
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = X. ( FR3 = t1.)
; ^ ; ARP=AR0. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *,AR3 ; ACC = Y.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store t2 = -Y. ( FR4 = t2.)
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
LACC #7fffh ; ACCL= 1 (Q15).
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SUB *+ ; ACC = 1-t1.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SUB *-,AR2 ; ACC = 1-t1=t2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SFR ; ACC = (1-t1=t2)/2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
MAR *+ ; AR2++. Now AR2 -> tb
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR3 ; Store tb
; ARP=AR3. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = tb + t1.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SACL *,AR3 ; Store tc = tb + t1.
; ARP=AR3. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = tc + t2.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SBRK #2 ; Point AR2 to ta.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *+ ; Store ta.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
; Sector Subroutine #6. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR6: SBRK #1 ; ARP=AR0. AR0->FR1 AR2->ta AR3->FR3.
LACC *+,AR3 ; ACC = Y
; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = -Y. ( FR3 = t1.)
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *-,AR3 ; ACC = Z.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store t2 = -Z. ( FR4 = t2.)
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
LACC #7fffh ; ACCL= 1 (Q15).
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SUB *+ ; ACC = 1-t1.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SUB *-,AR2 ; ACC = 1-t1=t2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SFR ; ACC = (1-t1=t2)/2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
ADRK #2 ; AR2+=2. Now AR2 -> tc
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
SACL *,AR3 ; Store tc
; ARP=AR3. AR0->FR1 AR2->tc AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = tc + t1.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SBRK #2 ; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *+,AR3 ; Store ta = tc + t1.
; ARP=AR3. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = ta + t2.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
SACL * ; Store tb.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
SV_POST_PROCESS: ; On arrival: ; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
; Multiply tb by 2 and subtract offset = 1/2. for ta,tb,tc.
;-------------------------------------------------------------------------------
MAR *- ; AR2--
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
LACC * ; Get ta
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
SUB #3FFFh ; Subtract offset.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
SACL *+,1 ; Store (ta-0.5)*2
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;-------------------------------------------------------------------------------
LACC * ; Get tb
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;-------------------------------------------------------------------------------
SUB #3FFFh ; Subtract offset.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;-------------------------------------------------------------------------------
SACL *+,1 ; Store (tb-0.5)*2
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
LACC * ; Get tc
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
SUB #3FFFh ; Subtract offset.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
SACL *,1 ; Store (tc-0.5)*2
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;-------------------------------------------------------------------------------
DUMMY
;-------------------------------------------------------------------------------
__svgendq_exit:
MAR *,AR1 ; can be removed if this condition is met on
; every path to this code.
SPM 0
CLRC OVM
SBRK #(__svgendq_framesize+1)
LAR AR0,*-
PSHD *
RET
;-------------------------------------------------------------------------------
;SVPWM Sector routine jump table (Used to ref with BACC instruction
;-------------------------------------------------------------------------------
SECTOR_TABLE_BASE:
SR0 .word SECTOR_SR0
SR1 .word SECTOR_SR1
SR2 .word SECTOR_SR2
SR3 .word SECTOR_SR3
SR4 .word SECTOR_SR4
SR5 .word SECTOR_SR5
SR6 .word SECTOR_SR6
SR7 .word DUMMY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -