
          IDENT  RHACPM
          TITLE  RHA$CPM FUNCTION REQUEST
          ENTRY  CPMFP
          SYSCOM
          LIST   F
* CPMFP
*
*     THE PURPOSE OF THIS A170 COMPASS ROUTINE IS TO PROVIDE AN
* INTERFACE BETWEEN A CYBIL PROCEDURE AND THE NOS/A170 CPM FUNCTION
* PROCESSOR.  IT IS ASSUMED THE USER HAS PLACED THE CPM FUNCTION
* CODE IN REGISTER X1, I.E. THE CPM FUNCTION CODE IS THE FIRST
* PARAMETER IN THE CPMFP CALL.  FURTHER, IT IS ASSUMED THE USER
* HAS PLACED THE FUNCTION PARAMETER IN REGISTER X2, I.E. THE
* FUNCTION PARAMETER IS THE SECOND PARAMETER IN THE CPMFP CALL.
* FOR FURTHER INFORMATION ON CPM, CPM FUNCTION CODES, AND FUNCTION
* PARAMETERS PLEASE REFER TO CPM DOCUMENTATION.
*
*            CPMFP (FUNCTION_CODE,FUNCTION_PARAMETER)
*
* FUNCTION_CODE: (INPUT) THIS PARAMETER SPECIFIES WHICH CPM FUNCTION
*                IS TO BE PERFORMED.
*
* FUNCTION_PARAMETER: (INPUT) THIS PARAMETER SPECIFIES EITHER A
*                     FUNCTION PARAMETER VALUE OR A PARAMETER BLOCK
*                     ADDRESS DEPENDING ON THE REQUIREMENTS OF THE
*                     GIVEN FUNCTION CODE.
*
 CPMFP    BSS
*
* SAVE CYBIL ENVIRONMENT
*
          RJ     =XPXSAVE
*
* CALL NOS/A170 CPM FUNCTION PROCESSOR
*
          IF     -DEF,RA.ORG,2
          BX0    X1
          LX0    6
          BX5    X2
          IF     -DEF,RA.ORG,1
          SYSTEM CPM,1,X5,X0
NOSBE     IF     DEF,RA.ORG
          SX6    X1-13B
          NZ     X6,ILLFUNC
          SYSTEM  ACT,RECALL,STATUS
          SA1    STATUS+1
          BX6    X1          CONTAINS JN/JDT
          SA6    X5          RETURN TO CYBIL VARIABLE
          RJ     =XPXRSTR
ILLFUNC   MESSAGE  (=C* UNSUPPORTED CPM FUNCTION ATTEMPTED.*),3,R
NOSBE     ENDIF
*
* RESTORE CYBIL ENVIRONMENT AND RETURN TO CALLER
*
          RJ     =XPXRSTR
          IF     DEF,RA.ORG,2
 STATUS   VFD    7/1,17/W.CPJNAM,12/1,24/10B
          BSS    1           STATUS+1 KEEPS ACT OUTPUT
          END
