Specifications

Protocol Definitions
C-18
;*****************************************************************************
; Routine Name: X F E R _ S C I _ 2 _ P R O G Routine Type: SR
;*****************************************************************************
XFER_SCI_2_PROG:
MAR *, AR0
LAR AR0, LENGTH
LACC DEST ;ACC=dest address
XSP0 CALL FETCH_SCI_WORD
TBLW data_buf ;data_buff––>[*ACC]
ADD #01h ;ACC++
BANZ XSP0 ;loop ”length” times
RET
;*****************************************************************************
; Routine Name: F E T C H _ S C I _ W O R D Routine Type: SR
;
; Description: Version which expects Lo byte / Hi byte sequence from Host &
; also echoes byte
;*****************************************************************************
FETCH_SCI_WORD:
POINT_B1
SACL stk0
LDP #SCIRXST>>7
FSW0 CALL KICK_DOG
BIT SCIRXST,BIT6 ;Test RXRDY bit
BCND FSW0, NTC ;If RXRDY=0,then repeat loop
LACC SCIRXBUF ;First byte is Lo byte
SACL SCITXBUF ;Echo byte back
AND #0FFh ;Clear upper byte
FSW1 CALL KICK_DOG
BIT SCIRXST,BIT6 ;Test RXRDY bit
BCND FSW1, NTC ;If RXRDY=0,then repeat loop
NOP
ADD SCIRXBUF,8 ;Concatenate Hi byte to Lo
SFL ;used ’cause 7 is max in SACH
SACH SCITXBUF,7 ;Echo byte back (after SFL 8)
POINT_B1
SFR ;restore ACC as before
SACL data_buf ;Save received word
LACC stk0
RET
;*****************************************************************************
; Check the destination address, and switch B0 into program space if needed.
;*****************************************************************************
CHECK_DEST: LACC DEST
AND #0FE00H ;Anywhere in B0 means flip B0
SUB #0FE00h ;use both pri & sec B0 ranges