📄 dcm44l.a51
字号:
$TITLE (iDCM 44 COMMUNICATIONS FIRMWARE: LOCAL MODULE)
$DATE (8 AUGUST 86)
$NOMO
$PAGING
$REGISTERBANK (0)
;***************************************************************************
;*
;* TITLE: iDCM 44 COMMUNICATIONS FIRMWARE: LOCAL MODULE
;*
;* RELEASE: 2.0
;*
;* DESCRIPTION: THIS MODULE CONTAINS THE LOCAL PROCEDURES
;*
;* UPDATES:
;*
;***************************************************************************
;*
;* COPYRIGHT 1983, 1986 INTEL CORPORATION
;*
;* INTEL CORPORATION PROPRIETARY INFORMATION. THIS LISTING
;* IS SUPPLIED UNDER THE TERMS OF A LICENSE AGREEMENT WITH
;* INTEL CORPORATION AND MAY NOT BE COPIED NOR DISCLOSED
;* EXCEPT IN ACCORDANCE WITH THE TERMS OF THAT AGREEMENT.
;*
;***************************************************************************
NAME DCM44L
USING 0
$INCLUDE (REG44.PDF)
$INCLUDE (DCM44C.LIT)
PUBLIC send_local
EXTRN CODE (process_rac_cmd)
EXTRN CODE (reqsendmessage)
DCMFW_CODE_SEG SEGMENT CODE
RSEG DCMFW_CODE_SEG
$EJECT
;***************************************************************************
;*
;* PROCEDURE: send_local
;*
;* PURPOSE: Route messages to local tasks
;*
;* CALLED FROM: None
;*
;* ENTERED FROM: local_message_switch
;*
;* CALLS: RQsendmessage (msg_ptr in DPTR)
;*
;* ENTERS: process_rac_cmd (msg_ptr in R0)
;*
;* INPUTS: Msg_Ptr: R0
;*
;* MODIFIES: None
;*
;* DESTROYS: A, R1, R0, DPTR
;*
;* RETURNS: Nothing
;*
;* DESCRIPTION: Send Local determines if a message is intended
;* for the RAC task or for a user task, then sends it
;* to either.
;*
;* The respective conditions are: if the message type
;* is an order, and the destination task is 0 then
;* the message is sent on to the RAC function.
;* Otherwise, the message is sent to a local user
;* via RQSENDMESSAGE.
;*
;* REGISTER BANK: 0
;*
;***************************************************************************
send_local:
MOV A, R0
ADD A, #MESSAGE_ROUTE_OFS ;
MOV R1, A ;Get route information from
MOV A, @R1 ; message
JB ACC.MSG_TYPE_BPOS, l_send_user ;If it is a reply, send to the
; user
INC R1 ;Get task address information
INC R1 ; Message_Task field 2
; bytes beyond route.
MOV A, #DEST_TASK_MSK
ANL A, @R1 ;Otherwise, Check for dest task
JNZ l_send_user ;If zero, then do the RAC
AJMP process_rac_cmd ; function, msg ptr in R0
l_send_user: ;Otherwise send to local user
MOV DPL, R0 ;Use RQsend message
MOV DPH, #0
CALL REQSENDMESSAGE ; with msg_ptr in DPTR
RET ;return to wherever
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -