📄 svgen_dq.asm
字号:
;--------------------------------------------------------------------------------
;Sector calculations ("case statement")
;--------------------------------------------------------------------------------
LACC *+ ; Load sector #.
; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
ADD #SECTOR_TABLE_BASE
;--------------------------------------------------------------------------------
TBLR * ; FR3 = Sector subroutine address.
; ARP=AR3. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
LACC *,AR0 ; ACC = Sector subroutine address.
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
BACC ; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
; Sector 0: this is special case for (Ualfa,Ubeta) = (0,0)
;--------------------------------------------------------------------------------
SECTOR_SR0: MAR *,AR2 ; ARP=AR2. AR0->FR2, AR2->ta, AR3->FR3.
;--------------------------------------------------------------------------------
SPLK #0,*+ ; ta = 0
; ARP=AR2. AR0->FR2, AR2->tb, AR3->FR3.
;--------------------------------------------------------------------------------
SPLK #0,*+ ; tb = 0
; ARP=AR2. AR0->FR2, AR2->tc, AR3->FR3.
;--------------------------------------------------------------------------------
SPLK #0,*- ; tc = 0
; ARP=AR2. AR0->FR2, AR2->tb, AR3->FR3.
;--------------------------------------------------------------------------------
MAR *-,AR0 ; ARP=AR0. AR0->FR2, AR2->ta, AR3->FR3.
;--------------------------------------------------------------------------------
B DUMMY ; ARP=AR0. AR0->FR2, AR2->ta, AR3->FR3.
;--------------------------------------------------------------------------------
; Sector Subroutine #1. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR1: LACC *-,AR3 ; ACC = Z
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = Z. ( FR3 = t1.)
; ARP=AR0. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *,AR3 ; ACC = Y.
; 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->ta AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = tb + t1.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *,AR3 ; Store ta = tb + t1.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = tb + t2.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
ADRK #2 ; Point AR2 to tc.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store tc.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
; Sector Subroutine #2. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR2: MAR *- ; ARP=AR0. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
LACC *-,AR3 ; ACC = Y
; ARP=AR3. AR0->FR0 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = Y. ( FR3 = t1.)
; ARP=AR0. AR0->FR0 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *+,AR3 ; ACC = X.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store t2 = -X. ( 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.
;--------------------------------------------------------------------------------
SACL *,AR3 ; Store ta
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = ta + t1.
; ARP=AR2. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
ADRK #2 ; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SACL *-,AR3 ; Store tc = ta + t1.
; ARP=AR3. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = tc + t2.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
SACL * ; Store tb.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
;--------------------------------------------------------------------------------
; Sector Subroutine #3. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR3: LACC *-,AR3 ; ACC = Z
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = -Z. ( FR3 = t1.)
; ARP=AR0. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
MAR *- ; ARP=AR0. AR0->FR0 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *+,AR3 ; ACC = X.
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store t2 = X. ( 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.
;--------------------------------------------------------------------------------
SACL *+,AR3 ; Store ta
; ARP=AR3. AR0->FR1 AR2->tb AR3->FR3.
;--------------------------------------------------------------------------------
ADD *+,AR2 ; ACC = ta + t1
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
SACL *+,AR3 ; Store tb = ta + t1.
; ARP=AR3. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
ADD *,AR2 ; ACC = tb + t2.
; ARP=AR2. AR0->FR1 AR2->tc AR3->FR4.
;--------------------------------------------------------------------------------
SACL *- ; Store tc.
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
B SV_POST_PROCESS
; ARP=AR2. AR0->FR1 AR2->tb AR3->FR4.
;--------------------------------------------------------------------------------
;--------------------------------------------------------------------------------
; Sector Subroutine #4. On arrival :
; ARP=AR0. AR0->FR2 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SECTOR_SR4: SBRK #2 ; ARP=AR0. AR0->FR0 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
LACC *+,AR3 ; ACC = X
; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
NEG ; ARP=AR3. AR0->FR1 AR2->ta AR3->FR3.
;--------------------------------------------------------------------------------
SACL *+,AR0 ; Store t1 = -X. ( FR3 = t1.)
; ARP=AR0. AR0->FR1 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
MAR *+ ; ARP=AR0. AR0->FR2 AR2->ta AR3->FR4.
;--------------------------------------------------------------------------------
LACC *-,AR3 ; ACC = Z.
; 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.
;--------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -