📄 data_log2.asm
字号:
; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
PTS2_1: ; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
SPLK #POS_TRIG_S1,* ; task_ptr = #POS_TRIG_S1
; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
B DL_EXIT ; Branch to DL_EXIT
; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
DL_TRIGGERED: ; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_skip_cntr
;----------------------------------------------------------------------------------
LACC * ; ACC = dlog_skip_cntr
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_skip_cntr
;----------------------------------------------------------------------------------
ADD #1 ; ACC = dlog_skip_cntr + 1
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_skip_cntr
;----------------------------------------------------------------------------------
SACL * ; dlog_skip_cntr = dlog_skip_cntr + 1
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_skip_cntr
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_prescale
;----------------------------------------------------------------------------------
SUB * ; ACC = dlog_skip_cntr + 1 - dlog_prescale
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_prescale
;----------------------------------------------------------------------------------
BCND DL_EXIT, NEQ ; Branch to DL_EXIT if ACC =! 0
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_prescale
;----------------------------------------------------------------------------------
SBRK #8 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_iptr1
;----------------------------------------------------------------------------------
; Data is logged here
LAR AR3,*,AR3 ; AR3 = *dlog_iptr1
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_iptr1, ARP=AR3
;----------------------------------------------------------------------------------
LACC *,AR2 ; ACC = *(*dlog_iptr1)
; ARP=AR3, AR0=dlog_iptr1, AR2->dlog_iptr1, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr1
;----------------------------------------------------------------------------------
LAR AR3,*,AR3 ; AR3 = *graph_ptr1
; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr1, ARP=AR3
;----------------------------------------------------------------------------------
SACL *+,AR2 ; *graph_ptr1 = *(*dlog_iptr1)
; ARP=AR5, AR0=dlog_iptr1, AR2->graph_ptr1, ARP=AR2
;----------------------------------------------------------------------------------
SAR AR3,* ; graph_ptr1 = AR3 (update graph_ptr1)
; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr1
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_iptr2
;----------------------------------------------------------------------------------
LAR AR3,*,AR3 ; AR3 = *dlog_iptr2
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_iptr2, ARP=AR3
;----------------------------------------------------------------------------------
LACC *,AR2 ; ACC = *(*dlog_iptr2)
; ARP=AR3, AR0=dlog_iptr1, AR2->dlog_iptr2, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr2
;----------------------------------------------------------------------------------
LAR AR3,*,AR3 ; AR3 = *graph_ptr2
; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr2, ARP=AR3
;----------------------------------------------------------------------------------
SACL *+,AR2 ; *graph_ptr2 = *(*dlog_iptr2)
; ARP=AR5, AR0=dlog_iptr1, AR2->graph_ptr2, ARP=AR2
;----------------------------------------------------------------------------------
SAR AR3,*+ ; graph_ptr2 = AR3 (update graph_ptr2)
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_skip_cntr
;----------------------------------------------------------------------------------
SPLK #0,*+ ; dlog_skip_cntr = 0
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr
;----------------------------------------------------------------------------------
LACC * ; ACC = dlog_cntr
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr
;----------------------------------------------------------------------------------
ADD #1 ; ACC = dlog_cntr + 1
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr
;----------------------------------------------------------------------------------
SACL * ; dlog_cntr = dlog_cntr + 1
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr_max
;----------------------------------------------------------------------------------
SUB * ; ACC = dlog_cntr + 1 - dlog_cntr_max
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr_max
;----------------------------------------------------------------------------------
BCND DL_EXIT,NEQ ; Brach to DL_EXIT if ACC =! 0
; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr_max
;----------------------------------------------------------------------------------
SBRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->dlog_cntr
;----------------------------------------------------------------------------------
SPLK #0,*+ ; dlog_cntr = 0
; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
SPLK #POS_TRIG_S1,* ; task_ptr = #POS_TRIG_S1
; ARP=AR2, AR0=dlog_iptr1, AR2->task_ptr
;----------------------------------------------------------------------------------
ADRK #3 ; ARP=AR2, AR0=dlog_iptr1, AR2->dl_buffer1_adr
;----------------------------------------------------------------------------------
LACC * ; ACC = dl_buffer1_adr
; ARP=AR2, AR0=dlog_iptr1, AR2->dl_buffer1_adr
;----------------------------------------------------------------------------------
SBRK #7 ; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr1
;----------------------------------------------------------------------------------
SACL * ; graph_ptr1 = dl_buffer1_adr
; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr1
;----------------------------------------------------------------------------------
ADRK #8 ; ARP=AR2, AR0=dlog_iptr1, AR2->dl_buffer2_adr
;----------------------------------------------------------------------------------
LACC * ; ACC = dl_buffer2_adr
; ARP=AR2, AR0=dlog_iptr1, AR2->dl_buffer2_adr
;----------------------------------------------------------------------------------
SBRK #7 ; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr2
;----------------------------------------------------------------------------------
SACL * ; graph_ptr2 = dl_buffer2_adr
; ARP=AR2, AR0=dlog_iptr1, AR2->graph_ptr2
;----------------------------------------------------------------------------------
DL_EXIT:
;----------------------------------------------------------------------------------
_data_log_update_exit:
MAR *,AR1 ; can be removed if this condition is met on
; every path to this code. (i.e., ARP=AR1 here)
CLRC OVM
CLRC SXM
SBRK #(__data_log_update_framesize+1)
LAR AR0,*-
PSHD *
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -