⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dcm44l.a51

📁 8051实时操作系统
💻 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 + -