CVLCP 
          IDENT  CVLCP,RBLK 
          ABS 
          SST 
          ENTRY  CVL
          ENTRY  DMP= 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
          TITLE  CVLCP - CVL SCP COMMUNICATIONS.
*COMMENT  CVLCP - *CVL* SCP COMMUNICATIONS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       CVLCP - CVL SCP COMMUNICATIONS. 
*         G. S. YODER.       78/08/11.
          SPACE  4,10 
***              *CVLCP* PERFORMS VALIDATION FUNCTIONS FOR
*         MSS HARDWARE DIAGNOSTICS WHICH CANNOT BE PERFORMED
*         BY THE PPU PROGRAM *CVL*.  THESE INCLUDE -
* 
*                - VALIDATE MSIDS 
*                - TEST HARDWARE STATUS 
*                - MOUNT CE CARTRIDGE FOR DIAGNOSTIC USE
* 
*         *CVLCP* COMMUNICATES WITH THE MSS EXECUTIVE 
*         VIA *SCP* CALLS TO PERFORM THESE FUNCTIONS. 
          SPACE  4,10 
**        SPECIAL ENTRY POINTS. 
  
  
 DMP=     EQU    100000B     SELECT NO DUMP IF CONTROL CARD CALL
 SSJ=     EQU    0
  
  
          ORG    110B 
          SPACE  4,10 
*CALL     COMCMAC 
*CALL     COMSSSD 
  
  
 RBLK     VFD    36/0,6/RBLKL-1,4/0,2/2,12/0  SCP CALL BLOCK
          BSSZ   2
 RBLKL    EQU    *-RBLK 
  
 TPMB     EQU    SPPR+1      CVL CALL PARAMETER BLOCK 
          TITLE  MAIN PROGRAM.
**        CVLCP - MAIN PROGRAM. 
  
  
 CVL      SB1    1
          SA1    ACTR        CHECK CALL TYPE
          ZR     X1,CVL1     IF *CVL* CALL
          MESSAGE  (=C* ILLEGAL CONTROL CARD.*),0,R 
          ABORT 
  
*         ESTABLISH CONECTION WITH MSS EXECUTIVE. 
  
 CVL1     MX0    -12
          SX5    B0          CLEAR ERROR CODE 
          BX2    X2-X2
          SX6    101B        SET ESTABLISH CONECTION
          RJ     CSS         CALL EXECUTIVE 
          NZ     X5,CVL6     IF EXECUTIVE NOT RUNNING 
  
*         VALIDATE DEVICE ACCESS. 
  
          SA3    TPMB+1      SET EST ORDINAL
          SA1    TPMB+6      CHECK FUNCTIONAL ATTRIBUTES
          BX2    -X0*X3 
          LX2    30 
          BX6    X2 
          SA6    CEST 
          LX1    59-3 
          NG     X1,CVL2     IF RETURN MST REQUEST
          RJ     PID         PROCESS MSIDS
          NZ     X5,CVL6     IF ERROR 
          SA1    TPMB+5      CHECK DEVICE CODE
          BX1    -X0*X1 
          SX1    X1-100B
          ZR     X1,CVL3     IF MST REQUEST 
  
*         PROCESS CSU REQUEST.
  
          SX6    502B        SET CSU REQUEST CODE 
          BX2    X2-X2
          EQ     CVL5        PROCESS REQUEST
  
*         PROCESS MST RETURN. 
  
 CVL2     SA4    TPMB+7      READ COORDINATES 
          SX6    506B        SET MST RETURN CODE
          EQ     CVL4        SET COORDINATES
  
*         PROCESS MST REQUEST.
  
 CVL3     SA4    TPMB+7      CHECK X/Y COORDINATES
          BX2    X2-X2
          SX6    503B        REQUEST = MST ONLY 
          BX1    X4 
          LX1    59-48
          PL     X1,CVL5     IF COORDINATES NOT SUPPLIED
          SX6    504B        SET CARTRIDGE MOUNT REQUEST
 CVL4     BX2    -X0*X4      SET COORDINATES IN REQUEST 
          LX2    18 
  
*         CALL EXECUTIVE. 
  
 CVL5     SA3    CEST 
          BX2    X2+X3       SET EST ORDINAL IN REQUEST 
          RJ     CSS         CALL EXECUTIVE 
          NZ     X5,CVL6     IF ERROR 
          SX5    X6+         SET POSSIBLE ERROR CODE
          SX6    X6-30B 
          NZ     X6,CVL6     IF NOT ILLEGAL COORDINATES ERROR 
          SX5    X5+4400B    SET VALIDATION ERROR BITS
  
*         SET VALIDATION BITS AND COMPLETION STATUS.
*         (X5)   BITS 0-5 = ERROR CODE. 
*         (X5)   BITS 8-11 = VALIDATION BITS. 
*         (X4) = WORD FOR VALIDATION BYTE.
*         (A4) = WORD ADDRESS FOR VALIDATION BYTE.
  
 CVL6     MX6    4
          LX5    48 
          BX6    X5*X6
          MX2    -6 
          ZR     X6,CVL7     IF NO VALIDATION BYTE TO SET 
          BX6    X4+X6       SET VALIDATION BYTE
          SA6    A4 
 CVL7     SA1    TPMB        SET COMPLETION STATUS
          LX2    6
          AX5    42 
          BX7    -X2*X5 
          SX7    X7+B1       SET POSSIBLE ERROR AND COMPLETE BIT
          SA7    A1 
  
*         TERMINATE CONNECTION WITH EXECUTIVE.
  
          SX2    B0 
          SX6    102B        SET TERMINATE CONNECTION 
          RJ     CSS         CALL EXECUTIVE 
          ENDRUN
  
 CEST     BSSZ   1           EST ORDINAL (SHIFTED 30 BITS)
          TITLE  SUBROUTINES. 
**        CSS - CALL MSS EXECUTIVE SUBSYSTEM. 
* 
*         ENTRY  (X2) = BITS 0-41 OF CALL BLOCK REQUEST WORD. 
*                (X6) = MSS EXECUTIVE REQUEST TYPE AND CODE.
* 
*         EXIT   (X2) = RESPONSE WORD FROM EXECUTIVE. 
*                (X5) = ERROR CODE IF EXECUTIVE NOT RUNNING.
*                (X6) = RESPONSE CODE FROM EXECUTIVE. 
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 5, 6.
* 
*         MACROS CALLSS, MESSAGE. 
  
  
 CSS1     SX5    31B         SET ERROR
  
 CSS      SUBR               ENTRY/EXIT 
          LX6    5           SET CEVAL REQUEST IDENTIFIER 
          SX6    X6+5 
          LX6    43          MERGE CODE AND REQUEST WORD
          BX6    X2+X6
          SA6    RBLK+1 
          SA1    RBLK        CLEAR COMPLETE BIT 
          MX6    59 
          BX6    X6*X1
          SA6    A1 
          MESSAGE  (=C*WAIT MSS EXEC.*),1,R  ISSUE WAIT MESSAGE 
          CALLSS MFSI,RBLK,R CALL MSS EXECUTIVE 
          MESSAGE  =0,1,R    CLEAR WAIT MESSAGE 
          SA1    RBLK        CHECK REPLY STATUS 
          LX1    59-1 
          NG     X1,CSS1     IF EXECUTIVE NOT RUNNING 
          SA2    RBLK+2      GET RESPONSE WORD
          MX6    6
          BX6    X2*X6
          LX6    6
          EQ     CSSX        EXIT 
 PID      SPACE  4,20 
**        PID - PROCESS MSIDS.
* 
*         ENTRY  (X0) = -7777B. 
*         (X2) = EST ORDINAL (SHIFTED 30 BITS). 
*                (X5) = 0.
* 
*         EXIT   (A4) = MSID WORD ADDRESS.
*                (X4) = MSID WORD FROM CALL BLOCK.
*                (X5) = 0 IF NO ERROR.
*                (X5) = ERROR CODE IF ERROR.
* 
*         USES   A - 4, 6.
*                X - 1, 2, 4, 5, 6. 
* 
*         CALLS  CSS. 
  
  
 PID2     SX5    32B         SET EQUIPMENT ACCESS ERROR 
  
 PID      SUBR               ENTRY/EXIT 
          SX6    501B        SET RETURN MSIDS REQUEST 
          RJ     CSS         CALL EXECUTIVE 
          NZ     X5,PIDX     IF EXECUTIVE NOT RUNNING 
          SA4    TPMB+10B    READ MSID WORD FROM CALL BLOCK 
          NZ     X6,PID2     IF MSID READ ERROR 
          BX2    -X0*X2      ISOLATE RETURNED MSIDS 
          LX4    59-48
          PL     X4,PID1     IF MSIDS NOT SUPPLIED BY CALLER
          LX4    11-35+60-59+48 
          BX1    -X0*X4      ISOLATE SUPPLIED MSIDS 
          BX1    X1-X2
          ZR     X1,PIDX     IF MATCH ON MSIDS
          SX5    4404B       SET MSID MATCH ERROR 
          EQ     PIDX        EXIT WITH ERROR
  
 PID1     LX4    11-35+60-59+48  SET MSIDS IN CALL BLOCK
          BX6    X0*X4
          BX6    X2+X6
          LX6    35-11
          SA6    A4 
          EQ     PIDX        EXIT 
          SPACE  4
*CALL     COMCSYS 
  
  
          USE    // 
 RFL=     BSS    0
  
  
          END 
