COMPMRM 
COMMON
          CTEXT  COMPMRM - MAINTENANCE REGISTER MACROS. 
          SPACE  4,10 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 MRM      SPACE  4,10 
***       COMPMRM - MAINTENANCE REGISTER MACROS.
*         B. R. HANSON       81/01/29.
          SPACE  4,10 
***              COMPMRM DEFINES SEVERAL MACROS WHICH ARE USED IN THE 
*         PACKAGES THAT NEED TO ACCESS THE MAINTENANCE CHANNEL. 
*         THE USE OF THESE MACROS REQUIRES THE PRESENCE OF THE
*         COMMON DECK *COMPMRA* AND THE DEFINITION OF THE TAGS
*         *RN*, *MRER*, AND OPTIONALLY *EC*.  *RN* IS A DIRECT CELL 
*         USED TO PASS THE REGISTER NUMBER TO *AMR*.  *MRER* IS 
*         THE ENTRY ADDRESS INTO AN ERROR PROCESSOR FOR FATAL 
*         MAINTENANCE CHANNEL ERRORS.  *EC* IS THE DIRECT CELL
*         USED BY THE MACROS TO OBTAIN THE DEFAULT PORT ACCESS CODE.
 EXITMR   SPACE  4,10 
**        EXITMR - SET MAINTENANCE REGISTER EXIT ADDRESS. 
* 
*         EXITMR ADDR 
* 
*         ENTRY  *ADDR* = ADDRESS TO CALL IF AN ERROR OCCURS. 
  
  
          PURGMAC  EXITMR 
  
 EXITMR   MACRO  ADDR 
          MACREF EXITMR 
          LDC    ADDR 
          STM    MRED        SET ERROR EXIT ADDRESS 
 EXITMR   ENDM
 FUNCMR   SPACE  4,10 
**        FUNCMR - FUNCTION MAINTENANCE CHANNEL.
* 
*         FUNCMR PAC,FUNCTION 
* 
*         ENTRY  *PAC* = ADDRESS OF PORT ACCESS CODE FOR DESIRED
*                   ELEMENT.  *EC* IS ASSUMED IF NO PARAMETER IS GIVEN. 
*                *FUNCTION* = FUNCTION TO SEND TO ELEMENT.
* 
*         CALLS  CMI, SMI.
  
  
          PURGMAC FUNCMR
  
 FUNCMR   MACRO  PAC,FN 
          MACREF FUNCMR 
          LDK    FN 
 .P       IFC    NE,$PAC$$
          LMM    PAC
 .P       ELSE
          LMD    EC 
 .P       ENDIF 
          RJM    SMI
          FAN    MR 
          RJM    CMI
 FUNCMR   ENDM
 LOCKMR   SPACE  4,10 
**        LOCKMR - SET OR CLEAR A LONG TERM INTERLOCK ON THE
*                MAINTENANCE CHANNEL. 
* 
*         LOCKMR OP,ADDR
* 
*         ENTRY  *OP* = *SET* TO SET THE LONG TERM INTERLOCK. 
*                *OP* = *CLEAR* TO CLEAR THE LONG TERM INTERLOCK. 
*                *ADDR* = OPTIONAL ERROR EXIT ADDRESS.
* 
*         CALLS  CLI, SLI.
* 
*         MACROS EXITMR.
  
  
          PURGMAC LOCKMR
  
 LOCKMR   MACRO  OP,ADDR
          MACREF LOCKMR 
 .A       IFC    NE,$ADDR$$ 
          EXITMR ADDR 
 .A       ENDIF 
 .L       IFC    EQ,$OP$SET$
          RJM    SLI         SET LONG TERM INTERLOCK
 .L       ELSE
          IFC    NE,$OP$CLEAR$,1
          ERR                ILLEGAL OPTION ON *LOCKMR* 
          RJM    CLI         CLEAR LONG TERM INTERLOCK
 .L       ENDIF 
 LOCKMR   ENDM
 READMR   SPACE  4,15 
**        READMR - READ MAINTENANCE REGISTER. 
* 
*         READMR A,PAC,REG,S
* 
*         ENTRY  *A* = ADDRESS OF BUFFER FOR REGISTER DATA. 
*                *PAC* = ADDRESS OF PORT ACCESS CODE FOR DESIRED
*                   ELEMENT.  *EC* IS USED IF PARAMETER OMITTED.
*                *REG* = REGISTER NUMBER.  IF OMITTED, THE REGISTER 
*                   NUMBER IS OBTAINED FROM DIRECT CELL *RN*. 
*                *S* = SIZE OF REGISTER IN WORDS.  ASSUMED TO BE 10.
* 
*         EXIT   (A - A+S) = REGISTER DATA. 
*                (RN) = REGISTER NUMBER.
* 
*         CALLS  AMR, CMI.
  
  
          PURGMAC READMR
  
 READMR   MACRO  A,PAC,R,S
          MACREF  READMR
 .R       IFC    NE,$R$$
          LDK    R
          STD    RN 
 .R       ENDIF 
 .P       IFC    EQ,$PAC$$
          LDD    EC 
 .P       ELSE
          LDM    PAC
 .P       ENDIF 
          LMC    MRRD 
          RJM    AMR
 .S       IFC    NE,$S$$
          LDN    S
 .S       ENDIF 
          IAM    A,MR 
          RJM    CMI         CLEAR INTERLOCK
 READMR   ENDM
 WRITMR   SPACE  4,15 
**        WRITMR - WRITE MAINTENANCE REGISTER.
* 
*         WRITMR A,PAC,REG,S
* 
*         ENTRY  *A* = ADDRESS OF BUFFER OF REGISTER DATA.
*                *PAC* = ADDRESS OF PORT ACCESS CODE FOR DESIRED
*                   ELEMENT.  *EC* IS USED IF PARAMETER OMITTED.
*                *REG* = REGISTER NUMBER.  ASSUMED TO BE 10.
*                   NUMBER IS OBTAINED FROM DIRECT CELL *RN*. 
*                *S* = SIZE OF REGISTER IN WORDS.  ASSUMED TO BE 10.
* 
*         EXIT   DATA FROM (A - A+S) WRITTEN TO REGISTER. 
*                (RN) = REGISTER NUMBER.
* 
*         CALLS  AMR, CMI.
  
  
          PURGMAC WRITMR
  
 WRITMR   MACRO  A,PAC,R,S
          MACREF WRITMR 
 .R       IFC    NE,$R$$
          LDK    R
          STD    RN 
 .R       ENDIF 
 .P       IFC    NE,$PAC$$
          LDM    PAC
 .P       ELSE
          LDD    EC 
 .P       ENDIF 
          LMC    MRWT 
          RJM    AMR
 .S       IFC    NE,$S$$
          LDC    S
 .S       ENDIF 
          OAM    A,MR 
          RJM    CMI
 WRITMR   ENDM
          SPACE  4
          ENDX
