          CTEXT  COMMMLI - MEMORY LINK INTERFACE MACROS.
COMMMLI   SPACE  4
*         COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
COMMMLI   SPACE  4
***       COMMMLI - MEMORY LINK INTERFACE MACROS.
*         D. A. HENSELER. 79/04/25.
COMMMLI   SPACE  4
***       COMMMLI CONTAINS MACROS THAT INTERFACE TO THE NOS/VE
*         MEMORY LINK INTERFACE.
*         COMMON DECK COMSMLI CONTAINS THE SYMBOL EQUIVALENCES REQUIRED
*         BY THESE MACROS.COMMON DECK COMCMLI CONTAINS THE ROUTINE MLI=.
          SPACE  3
***       TRANSFR - TRANSFER PARAMETER BLOCK WORD TO ADDRESS SPECIFIED
*                   IN OTHER WORD. (A.J.GEERSEN JUNE 84)
          SPACE  1
          PURGMAC TRANSFR
          SPACE  1
TRANSFR   MACRO  P1,P2
          SA1    =XMLIPAR+P1
          SA2    =XMLIPAR+P2
          BX6    X1
          SA6    X2
          ENDM
ADDSPL    SPACE  4
***       ADDSPL - ADD SENDER TO PERMIT LIST.
*
*         ADDSPL ANAME,SNAME,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME DOING THE ADDSPL
*                        REQUEST.
*                SNAME = ADDRESS OF NAME OF THE APPLICATION BEING ADDED
*                        TO THE PERMIT LIST.
*                STATUS = ADDRESS OF STATUS RETURN WORD.
*
*         EXIT   SENDER ADDED TO PERMIT LIST IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC ADDSPL
          SPACE  2
ADDSPL    MACRO  ANAME,SNAME,STATUS
          PPARMM ANAME,MLPAN
          PPARMM SNAME,MLPSN
          PPARMD STATUS,MLPST
          PPARMD MLFAD,MLPFN
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
ADDSPL    ENDM
CONFIRM   SPACE  4
***       CONFIRM - CONFIRM A MESSAGE CAN BE SENT TO AN APPLICATION.
*
*         CONFIRM ANAME,DNAME,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME DOING THE CONFIRM
*                        REQUEST.
*                DNAME = ADDRESS OF THE APPLICATION NAME TO BE CHECKED
*                        FOR SEND PERMISSION.
*                STATUS = ADDRESS OF THE STATUS RETURN WORD.
*
*         EXIT   STATUS RETURN INDICATES WHETHER OR NOT THE SEND WILL
*                BE ALLOWED.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC CONFIRM
          SPACE  2
CONFIRM   MACRO  ANAME,DNAME,STATUS
          PPARMM ANAME,MLPAN
          PPARMM DNAME,MLPSN
          PPARMD STATUS,MLPST
          PPARMD MLFCO,MLPFN
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
CONFIRM   ENDM
DELSPL    SPACE  4
***       DELSPL - DELETE SENDER FROM PERMIT LIST.
*
*         DELSPL ANAME,SNAME,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME DOING THE
*                        DELSPL REQUEST.
*                SNAME = ADDRESS OF APPLICATION NAME TO BE DELETED FROM
*                        THE PERMIT LIST.
*                STATUS = ADDRESS OF STATUS RETURN WORD.
*
*         EXIT   SENDER DELETED FROM PERMIT LIST IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC DELSPL
          SPACE  2
DELSPL    MACRO  ANAME,SNAME,STATUS
          PPARMM ANAME,MLPAN
          PPARMM SNAME,MLPSN
          PPARMD STATUS,MLPST
          PPARMD MLFDE,MLPFN
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
DELSPL    ENDM
FETCHRL   SPACE  4
***       FETCHRL - FETCH RECEIVE LIST FOR SPECIFIC/ALL SENDER(S).
*
*         FETCHRL ANAME,SNAME,FWA,COUNT,STATUS
*
*         ENTRY  ANAME = ADDRESS OF THE APPLICATION NAME PERFORMING THE
*                        FETCHRL REQUEST.
*                SNAME = ADDR. OF APPLICATION NAME FOR WHICH TO RETURN
*                        INFORMATION (IF ZERO RETURN FOR ALL SENDERS).
*                COUNT = ADDRESS OF A WORD IN WHICH TO RETURN THE COUNT
*                        OF RECEIVE LIST ITEMS RETURNED.
*                FWA = ADDRESS OF THE AREA TO RECEIVE THE INFORMATION.
*                STATUS = ADDRESS OF THE STATUS RETURN WORD.
*
*         EXIT   RECEIVE LIST RETURNED IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC FETCHRL
          SPACE  2
FETCHRL   MACRO  ANAME,SNAME,FWA,COUNT,STATUS
          PPARMM ANAME,MLPAN
          PPARMM SNAME,MLPSN
          PPARMD COUNT,MLPCN
          PPARMD FWA,MLPFA
          PPARMD STATUS,MLPST
          PPARMD MLFFE,MLPFN
          SA1    =XMLIPAR+MLPCN
          SA1    X1
          BX6    X1
          SA6    =XMLIPAR+MLPV1
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
          TRANSFR MLPV1,MLPCN
FETCHRL   ENDM
PPARMD    SPACE  4
***       PPARMD - PROCESS PARAMETER FOR MLI MACROS (DIRECT)
*
*         PPARMD P,OFFSET
*
*         ENTRY  P = NAME OF PARAMETER.
*                IF P IS OMITTED, ZERO IS ASSUMED.
*                OFFSET = OFFSET WITHIN MLIPAR IN WHICH TO STORE VALUE.
*
*         EXIT   VALUE STORED AT =XMLIPAR + OFFSET.
*                (USED WHEN P IS THE ACTUAL VALUE TO BE USED.)
*
*         USES   X - 6.
*                B - NONE.
*                A - 6.
          SPACE  2
          PURGMAC PPARMD
          SPACE  2
PPARMD    MACRO  P,OFFSET
A         IFC    EQ,$P$$
          MX6    0
A         ELSE
          R=     X6,P
A         ENDIF
          SA6    =XMLIPAR+OFFSET
PPARMD    ENDM
PPARMM    SPACE  4
***       PPARMM - PROCESS PARAMETER FOR MLI MACROS (FROM MEMORY)
*
*         PPARMM P,OFFSET
*
*         ENTRY  P = NAME OF PARAMETER.
*                IF P IS OMITTED, ZERO IS ASSUMED.
*                OFFSET = OFFSET WITHIN MLIPAR IN WHICH TO STORE VALUE.
*
*         EXIT   VALUE CONTIANED IN MEMORY ADDRESS P IS MOVED TO
*                =XMLIPAR + OFFSET. (USED WHEN P IS THE ADDRESS OF THE
*                DESIRED VALUE).
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC PPARMM
          SPACE  2
PPARMM    MACRO  P,OFFSET
A         IFC    EQ,$P$$
          MX6    0
A         ELSE
          SA1    P
          BX6    X1
A         ENDIF
          SA6    =XMLIPAR+OFFSET
PPARMM    ENDM
RECEIVE   SPACE  4
***       RECEIVE - RECEIVE SPECIFIC QUEUED MESSAGE.
*
*    RECEIVE ANAME,ARBINFO,SIGNAL,FWA,MSGLEN,BUFLEN,RINDEX,SENDER,STATUS
*
*         ENTRY  ANAME = ADDRESS OF THE APPLICATION NAME PERFORMING
*                        THE REQUEST.
*                ARBINFO = ADDRESS TO RECEIVE THE ARBITRARY INFO FIELD
*                          OF THE MESSAGE.
*                SIGNAL = ADDRESS OF MLT$SIGNAL_RECORD,OR NIL (377777B).
*                FWA = ADDRESS OF THE FIRST WORD OF THE BUFFER TO
*                      RECEIVE THE MESSAGE.
*                MSGLEN = ADDRESS OF A WORD TO RECEIVE THE LENGTH OF THE
*                         MESSAGE WHICH WAS TRANSFERRED.
*                BUFLEN = ADDRESS OF THE LENGTH OF THE MESSAGE BUFFER.
*                RINDEX = ADDRESS OF RECEIVE INDEX OF DESIRED MESSAGE.
*                SENDER = ADDRESS OF A WORD TO RECEIVE THE APPLICATION
*                         NAME OF THE SENDER OF THE MESSAGE.
*                STATUS = ADDRESS OF THE STATUS RETURN WORD.
*
*         EXIT   MESSAGE MOVED TO BUFFER IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC RECEIVE
          SPACE  2
RECEIVE   MACRO  ANAME,ARBINFO,SIGNAL,FWA,MSGLEN,BUFLEN,RINDEX,SENDER,ST
,ATUS
          LOCAL  NOSIG
          PPARMM ANAME,MLPAN
          PPARMM RINDEX,MLPRI
          PPARMD FWA,MLPFA
          PPARMM BUFLEN,MLPBL
A         IFC    EQ,$SIGNAL$$
          SX6    377777B
A         ELSE
          R=     X6,SIGNAL
A         ENDIF
          SA6    =XMLIPAR+MLPSG
          SX1    377777B
          BX1    X1-X6
          ZR     X1,NOSIG
          SA1    SIGNAL
          BX6    X1
          SA6    =XMLIPAR+MLPSV
NOSIG     BSS    0
          PPARMD MSGLEN,MLPLN
          PPARMD ARBINFO,MLPAR
          PPARMD SENDER,MLPSN
          PPARMD STATUS,MLPST
          PPARMD MLFRE,MLPFN
          SA1    =XMLIPAR+MLPLN
          SA1    X1
          BX6    X1
          SA6    =XMLIPAR+MLPV1
          SA1    =XMLIPAR+MLPAR
          SA1    X1
          BX6    X1
          SA6    =XMLIPAR+MLPV2
          SA1    =XMLIPAR+MLPSN
          SA1    X1
          BX6    X1
          SA6    =XMLIPAR+MLPV3
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
          TRANSFR MLPV1,MLPLN
          TRANSFR MLPV2,MLPAR
          TRANSFR MLPV3,MLPSN
RECEIVE   ENDM
SEND      SPACE  4
***       SEND - SEND TO MESSAGE TO ANOTHER MLI APPLICATION.
*
*         SEND   ANAME,ARBINFO,SIGNAL,FWA,BUFLEN,DNAME,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME PERFORMING THE SEND
*                        REQUEST.
*                ARBINFO = ADDRESS OF THE ARBITRARY INFO TO BE PASSED
*                          WITH THE MESSAGE.
*                SIGNAL = ADDRESS OF MLT$SIGNAL_RECORD OR NIL (377777B).
*                FWA = ADDRESS OF THE FIRST WORD OF THE MESSAGE TEXT.
*                BUFLEN = ADDRESS OF THE LENGTH OF THE MESSAGE BUFFER.
*                DNAME = ADDRESS OF APPLICATION NAME TO WHICH THE
*                        MESSAGE IS TO BE SENT.
*                STATUS = ADDRESS OF THE STATUS RETURN WORD.
*
*         EXIT   MESSAGE SENT IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC SEND
          SPACE  2
SEND      MACRO  ANAME,ARBINFO,SIGNAL,FWA,BUFLEN,DNAME,STATUS
          LOCAL  NOSIG
          PPARMM ANAME,MLPAN
          PPARMM DNAME,MLPSN
          PPARMM ARBINFO,MLPAR
          PPARMD FWA,MLPFA
          PPARMM BUFLEN,MLPBL
A         IFC    EQ,$SIGNAL$$
          SX6    377777B
A         ELSE
          R=     X6,SIGNAL
A         ENDIF
          SA6    =XMLIPAR+MLPSG
          SX1    377777B
          BX1    X1-X6
          ZR     X1,NOSIG
          SA1    SIGNAL
          BX6    X1
          SA6    =XMLIPAR+MLPSV
NOSIG     BSS    0
          PPARMD STATUS,MLPST
          PPARMD MLFSE,MLPFN
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
SEND      ENDM
SIGNOFF   SPACE  4
***       SIGNOFF - SIGN OFF FROM MEMORY LINK INTERFACE.
*
*         SIGNOFF ANAME,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME BEING SIGNED OFF.
*                STATUS = ADDRESS OF STATUS RETURN WORD.
*
*         EXIT   APPLICATION SIGNED OFF IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
*
*         USES   X - 1, 6.
*                B - NONE.
*                A - 1, 6.
          SPACE  2
          PURGMAC SIGNOFF
          SPACE  2
SIGNOFF   MACRO  ANAME,STATUS
          PPARMM ANAME,MLPAN
          PPARMD STATUS,MLPST
          PPARMD MLFOF,MLPFN
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
SIGNOFF   ENDM
SIGNON    SPACE  4
***       SIGNON - SIGN ON TO MEMORY LINK INTERFACE.
*
*         SIGNON ANAME,MAXMSG,UNIQUE,STATUS
*
*         ENTRY  ANAME = ADDRESS OF APPLICATION NAME BEING SIGNED ON.
*                MAXMSG = ADDRESS OF THE MAXIMUM NUMBER OF MESSAGES
*                         THAT CAN BE QUEUED FOR THIS APPLICATION.
*                UNIQUE = ADDRESS OF A WORD WHERE A UNIQUE APPLICATION
*                         NAME WILL BE RETURNED.
*                STATUS = ADDRESS OF STATUS RETURN WORD.
*
*         EXIT   APPLICATION SIGNED ON IF POSSIBLE.
*                STATUS PARAMETER CONTAINS A STATUS CODE.
*
*         CALLS  MLI=
          SPACE  2
          PURGMAC SIGNON
          SPACE  2
SIGNON    MACRO  ANAME,MAXMSG,UNIQUE,STATUS
          PPARMM ANAME,MLPAN
          PPARMM MAXMSG,MLPMM
          PPARMD UNIQUE,MLPSN
          PPARMD STATUS,MLPST
          PPARMD MLFON,MLPFN
          SA1    =XMLIPAR+MLPSN
          SA1    X1
          BX6    X1
          SA6    =XMLIPAR+MLPV1
          RJ     =XMLI=
          TRANSFR MLPSV,MLPST
          TRANSFR MLPV1,MLPSN
SIGNON    ENDM
          SPACE  2
          ENDX
