*DECK DB$SSCL 
          IDENT  DB$SSCL
          SST 
          IPARAMS 
*#
* *   DB$SSCL                                    PAGE  1
* *   ISSUE "CALLSS" REQUEST
* *   W P CEAGLIO                                DATE  11/21/75 
* *   R L MCALLESTER - SET REAL TIME BIT         DATE  12/05/79 
* *   R L MCALLESTER - NOS OPERATOR INTERFACE    DATE  03/15/82 
* 
* DC  PURPOSE 
* 
*     ISSUE THE SUBSTEM CALL FOR THE SERVICES OF CDCS 
*     GENERATE LDSET LIB=BAMLIB FOR FDBF PROGRAMS TO ACCESS ER$SRM. 
* 
* DC  ENTRY CONDITIONS
* 
*     THE ADDRESS OF THE REQUEST PACKET IS PASSED IN A1 
* 
* DC  EXIT CONDITIONS 
* 
*     THE "CALLSS" REQUEST IS MADE
* 
* DC  CALLING ROUTINES
* 
*     DB$RQST    COMPLETE REQUEST PACKET AND ISSUE "CALLSS" CALL
* 
* DC  CALLED ROUTINES 
* 
*     NONE
* 
*#
* DC  EXTERNAL CONDITIONS 
* 
*     CDCS SYSTEM CONTROL POINT NAME IS CDCS2.
*     CDCS SYSTEM CONTROL POINT CODE IS 1.
* 
*     THESE CAN BE CHANGED BY SPECIFYING THE PC PARAMETER ON
*     THE COMPASS CONTROL CARD. 
*     I.E.  COMPASS,PC=$XXXX NNN$.
*       XXXX WILL BE THE SYSTEM CONTROL POINT NAME. 
*       NNN WILL BE THE SYSTEM CONTROL POINT CODE.
*     ONE AND ONLY ONE BLANK MUST SEPARATE NAME AND CODE. 
*     TO SPECIFY CODE IN OCTAL, TERMINATE NNN WITH A B. 
*     I.E. COMPASS,PC=$CDCSX 11B$.
* 
*     ON NOS, THE CODE VALUE MUST BE THE CDCS SUBSYSTEM QUEUE PRIORITY. 
*     I.E. COMPASS,PC=$CDCS 7766B$. 
* 
*#
* DC  DESCRIPTION 
* 
*     THE -CALLSS- MACRO IS USED WITH X1 POINTING TO THE PARAMETERS.
* 
*     NOS/BE     IF THE TASK NUMBER IS ZERO, CLEAR BIT 13 AND LET THE 
*                OPERATING SYSTEM HANDLE THE WAIT FOR CDCS WHEN ITS 
*                NOT UP.
* 
*                IF THE TASK NUMBER IS NONZERO, SET BIT 13 AND ALWAYS 
*                RETURN CONTROL TO THE USER.
* 
*     NOS        ALWAYS SET BIT 13. 
*                IF THE TASK NUMBER IS NONZERO, RETURN TO THE USER. 
* 
*                IF THE TASK NUMBER IS ZERO AND CDCS IS NOT UP, 
*                ISSUE A DAYFILE MESSAGE 'WAITING FOR CDCS'.
*                DELAY TEN SECONDS FOR THE OPERATOR TO SEE THE MESSAGE. 
*                ROLL OUT FOR TWENTY SECONDS. 
*                REPEAT THESE STEPS WHILE GRADUALLY INCREASING THE
*                ROLL-OUT PERIOD TO A 96 SECOND MAXIMUM.
* 
*#
          LIST   F
          ENTRY  DB$SSCL
  
          LDSET  LIB=BAMLIB 
  
*CALL SSIDDCLS
 RECALL   EQU    1           RECALL FLAG
  
  
NOS       IFC    EQ,$"OS.NAME"$KRONOS$
OPL       XTEXT  COMCMAC     OBTAIN DECK COMCMAC FROM FILE OPL
*                            COMCMAC CONTAINS THE ROLLOUT MACRO 
OPL       XTEXT  COMSEVT     OBTAIN DECK COMSEVT FROM FILE OPL
                             COMSEVT DEFINES THE SYMBOL EXTM. 
NOS       ENDIF 
 CODE     SPACE  4,8
 DB$SSCL  JP     *+400000B
NOSBE     IFC    EQ,$"OS.NAME"$SCOPE $
          SA2    X1                FIRST WORD OF REQUEST PACKET 
          SA3    =XDB$TSKN         TASK NUMBER
          MX0    -1 
          LX0    13 
          BX6    X0*X2             CLEAR REAL TIME BIT 13 
          ZR   X3,SSCL10
          BX6    -X0+X6       SET REAL TIME BIT IF TASK NUM NE 0
SSCL10    SA6    X1 
          CALLSS "SS$CODE",X1,RECALL
          EQ     DB$SSCL
NOSBE     ENDIF 
  
  
NOS       IFC    EQ,$"OS.NAME"$KRONOS$
          SA2    X1                FIRST WORD OF REQUEST PACKET 
          MX0    -1 
          SB5    X1                SAVE PARAMETER ADDRESS 
          LX0    13 
          BX6    -X0+X2            SET REAL TIME BIT 13 
          SA6    X1 
  
          MX5    -12               MASK FOR CLEARING ES AND COMP BITS 
  
          SB2    B0                MINIMAL DELAY ON FIRST TRY 
  
SSCL20    BSS    0
          CALLSS "SS$CODE",B5,RECALL
          SA3    =XDB$TSKN
          MX0    -1 
          SA2    B5 
          NZ   X3,DB$SSCL          EXIT IF TASK NUMBER IS NONZERO 
          LX0    1
          BX6    -X0*X2 
          ZR   X6,DB$SSCL          EXIT IF THE SUBSYSTEM WAS ACTIVE 
          BX7    X5*X2             CLEAR THE ES AND COMPLETION BITS 
          SA7    B5 
  
*         WAIT FOR CDCS TO BE INITIATED 
  
SSCL30    BSS    0
          SB2    B2+1 
          RECALL
          MI   B2,SSCL30           REPEAT THE DELAY LOOP
          ZR   B2,SSCL20           TRY CDCS AGAIN BEFORE THE ROLLOUT
  
          MESSAGE  (=C* WAITING FOR CDCS*),0,RECALL 
  
*         IF A NOS RECALL PERIOD IS ASSUMED TO BE TWENTY MILLISECONDS 
*         THEN FIFTY RECALLS WILL TAKE ONE SECOND.
  
          SB2    -500              SET DELAY COUNT FOR TEN SECONDS
  
  
*         THE ROLLOUT PERIOD IS INCREASED BY THREE AND REDUCED BY THE 
*         VALUE TAKEN FROM BITS 6 AND 5.
*         THE NET INCREASE IS:  
*                3 WHEN THE ROLLOUT PERIOD IS < 32
*                2 WHEN THE ROLLOUT PERIOD IS < 64
*                1 WHEN THE ROLLOUT PERIOD IS < 96
*                0 WHEN THE ROLLOUT PERIOD IS = 96
  
          SA1    PERIOD            (X1) = ROLLOUT PERIOD
          MX3    -2                (X3) = -3
          SX6    X1 
          LX6    -5 
          BX6    -X3*X6            VARIES WITH AGE, 0 TO MAXIMUM OF 3 
          IX6    X3+X6             VARIES -3 TO 0 
          IX6    X1-X6             ADJUSTED ROLLOUT PERIOD
          SA6    A1 
          ROLLOUT  A1 
          EQ     SSCL20            TRY AGAIN
  
  
PERIOD    VFD    27/0,21/EXTM 
          VFD    12/17             INITIAL ROLLOUT PERIOD = 17 + 3
NOS       ENDIF 
  
          END 
