          IDENT  1SI,SSI
          PERIPH
          BASE   MIXED
          SST
*COMMENT 1SI - SUBSYSTEM INITIALIZER.
          COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992
          TITLE  1SI - SUBSYSTEM INITIALIZER.
          SPACE  4
***       1SI - SUBSYSTEM INITIALIZER.
*         A. J. KOMOR. 76/01/22.
          SPACE  4
***       1SI IS CALLED BY 1DS TO INITIALIZE ONE OF THE FOLLOWING
*         SUBSYSTEMS BASED ON THE APPROPRIATE QUEUE PRIORITY -
*                1. NETWORK INTERFACE PROCESSOR (NIP).
*                2. REMOTE BATCH FACILITY (RBF).
*                3. TRANSACTION FACILITY (TAF).
*                4. INTERACTIVE FACILITY (IAF).
*                5. CYBER DATA CONTROL SUBSYSTEM (CDCS).
*                6. MESSAGE CONTROL SUBSYSTEM (MCS).
*                7. TIMESHARING STIMULATOR.
*                8. MASS STORAGE SUBSYSTEM (MSS).
*                9. TIME SHARING SUBSYSTEM (TELEX).
*                10. EXPORT/IMPORT SUBSYSTEM (EI200).
          SPACE  4
***       ENTRY PARAMETERS.
*
*                (JCIW+1) = QUEUE PRIORITY OF THE SUBSYSTEM
*                           TO BE INITIATED.
*                (CSBW+1) = 4TH AND 5TH CHARACTES OF THE PROCEDURE
*                           FILE NAME THAT THE OPERATOR ENTERED.
*                         = 7777B IF *TELEX* IS ENTERED.
*                         = 0 IF NO CHARACTERS.
*                (CSBW+2) = 6TH AND 7TH CHARACTERS OF THE PROCEDURE
*                           FILE NAME THAT THE OPERATOR ENTERED.
*                         = 0 IF NO CHARACTERS.
          SPACE  4
***       DAYFILE MESSAGES ISSUED.
*
*         * 1SI ILLEGAL REQUEST.*
*         QUEUE PRIORITY DOES NOT CORRESPOND TO ONE OF THE AFOREMEN-
*         TIONED SUBSYSTEMS.
*         * WAITING FOR STORAGE.*
*         1SI IS WAITING FOR THE FL REQUESTED.
          SPACE  4
*CALL     COMPMAC
*CALL     COMSACC
*CALL     COMSSCP
*CALL     COMSPFM
*CALL     COMSPRD
          TITLE  MACRO DEFINITIONS.
 SUBSYS   SPACE  4,10
**        SUBSYS - DEFINE SUBSYSTEM STARTUP PARAMETERS.
*
*         SUBSYS NAME,FL,CP
*                NAME = SUBSYSTEM NAME.
*                FL = INITIAL SUBSYSTEM FIELD LENGTH.
*                CP = INITIAL SUBSYSTEM CPU PRIORITY.


          PURGMAC  SUBSYS

 SUBSYS   MACRO  N,F,C
 ZERO     MICRO  1,3,*000*
 .N       MICRO  1,3,*N_ZERO*
          VFD    12/F,12/C
          VFD    42/0H_N,6/SYOT,12/0
          VFD    48/8LCALL(_".N",12/0
          VFD    60/0
          ENDM
          SPACE  4
*         SYMBOL DEFINITIONS.

 JC       EQU    27          JOB CONTROL INFORMATION ADDRESS
 CN       EQU    30 - 34     CM WORD BUFFER (5 LOCATIONS)
 SI       EQU    35          SUBSYSTEM INDEX
          SPACE  4
*         SUBSYSTEM INDICES.

 STMP     EQU    STPS-MNSC-1
 MCSP     EQU    MCPS-MNSC-1
 RBFP     EQU    RBPS-MNSC-1
 NAMP     EQU    NMPS-MNSC-1
 CDCP     EQU    CDPS-MNSC-1
 TAFP     EQU    TRPS-MNSC-1
 MSSP     EQU    MFPS-MNSC-1
 NVEP     EQU    NVPS-MNSC-1
 IAFP     EQU    TXPS-MNSC-1
 EXPP     EQU    EIPS-MNSC-1
          TITLE  MAIN PROGRAM.

*         MAIN PROGRAM.


          ORG    PPFW
 SSI      BSS    0
          RJM    PVE         PRESET FOR NOS/VE
          RJM    CEF         CHECK ERROR FLAG
          NJN    SSI1
          LDD    CP          READ QUEUE PRIORITY
          ADN    JCIW
          CRD    CM
          LDD    CM+1        CHECK FOR INVALID QUEUE PRIORITY
          ADC    -MNSC-1
          MJN    SSI1        IF NOT A SUBSYSTEM
          STD    SI
          RJM    ICP         INITIALIZE CONTROL POINT
          NJN    SSI1        IF ILLEGAL REQUEST
          MONITOR DPPM       DROP PPU
          LJM    PPR

 SSI1     LDC    =C* 1SI ILLEGAL REQUEST.*
          RJM    DFM         ISSUE DAYFILE MESSAGE
          MONITOR ABTM       ABORT CONTROL POINT
          LJM    PPR
          TITLE  SUBROUTINES.
 CEF      SPACE  4,10
***       CEF - CHECK ERROR FLAG.
*
*         EXIT   (A) = 0, IF NO ERROR FLAG.
*
*         USES   CM - CM+4.
*
*         CALLS  PRL.
*
*         MACROS PAUSE.


 CEF      SUBR               ENTRY/EXIT
          PAUSE
          LDD    CM+1
          ZJN    CEFX        IF NO ERROR FLAG SET
          LDD    CP          SET CONTROL CARD BUFFER EMPTY
          ADN    CSPW
          CRD    CM
          LDD    CM+4
          STD    CM+3
          LDD    CP
          ADN    CSPW
          CWD    CM
          UJN    CEFX        RETURN
 ICP      SPACE  4,10
***       ICP - INITIALIZE CONTROL POINT.
*
*         SET JOB NAME, CPU PRIORITY, REQUEST DESIRED STORAGE,
*         AND BUILD APPROPRIATE CONTROL STATEMENT BUFFER.
*
*         ENTRY  (SI) = SUBSYSTEM INDEX (QUEUE PRIORITY -MNSC -2).
*
*         EXIT   (A) .NE. 0 IF ILLEGAL REQUEST.
*
*         USES   JC, T0, T1, T2, CM - CM+4, CN - CN+4.
*
*         CALLS  CEF, CMX, ECX, FTN, RSI, RST.
*
*         MACROS MONITOR.


 ICP9     LDN    1           SET ERROR RETURN

 ICP      SUBR               ENTRY/EXIT

*         INITIALIZE CONTROL POINT.

          LDD    SI          CHECK VALIDITY OF SUBSYSTEM INDEX
          SBN    TCTRL+1
          PJN    ICP9        IF ILLEGAL REQUEST
          LDM    TCTR,SI     SET JOB CONTROL INFORMATION ADDRESS
          ZJN    ICP9        IF ILLEGAL REQUEST
          LDD    SI          CHECK IAF/TELEX INITIALIZATION
          SBN    IAFP
          NJN    ICP1        IF NOT IAF/TELEX INITIALIZATION
          LDD    CP          CHECK TELEX INITIALIZATION
          ADC    CSBW
          CRD    CN
          LDD    CN+1
          LMC    7777
          NJN    ICP1        IF NOT TELEX INITIALIZATION
          LDC    2REX        CHARACTERS 4 AND 5 OF *TELEX* TO BUFFER
          STD    CN+1
          LDD    CP
          ADC    CSBW
          CWD    CN
          LDC    TLXC        ADDRESS OF *TELEX* CONTROL TABLE
          UJN    ICP2        TELEX INITIALIZATON

 ICP1     LDM    TCTR,SI     ADDRESS OF JOB CONTROL INFORMATION TABLE
 ICP2     STD    JC
          ADN    2
          STM    ICPA
          ADN    7-2
          STM    ICPC
          ADN    13-7
          STM    ICPB
          LDD    CP          WRITE JOB NAME INTO CP AREA
          ADN    JNMW
          CWM    *,ON
 ICPA     EQU    *-1
          LDM    1,JC        SET CPU PRIORITY
          STD    CM+1
          LDN    0
          STD    CM+2
          MONITOR RPRM

*         REQUEST STORAGE.

 ICP3     LDM    0,JC        REQUEST FIELD LENGTH ASSIGNMENT
          ZJN    ICP4        IF NO FL REQUEST
          SBD    FL
          RJM    RSI
          ZJN    ICP5        IF FL ASSIGNED
          LDD    CP          SET WAITING FOR STORAGE
          ADN    MS2W
          CWM    =C*WAITING FOR STORAGE.*,TR
          RJM    CEF         CHECK ERROR FLAG
          ZJN    ICP3        IF NO ERROR FLAG, REISSUE FL REQUEST
 ICP4     LJM    ICP9        SET ERROR RESPONSE

 ICP5     LDN    0           CLEAR CONSOLE MESSAGE
          STD    CM
          LDD    CP
          ADN    MS2W
          CWD    CM

*         SET USER NUMBER AND USER INDEX.

          ADN    UIDW-MS2W
          CWM    UNUI,ON

*         SET CONTROL CARD BUFFER.

          LDD    CP          STORE CONTROL CARDS
          ADN    CSPW
          CRD    CM
          ADN    CSBW-CSPW   READ PROCEDURE FILE LETTERS
          CRD    CN
          LDC    CSBW
          STD    CM+3
          LDN    2           SET CM LENGTH OF CONTROL STATEMENT
          STD    T2
          ADC    CSBW
          STD    CM+4
          LDC    *
 ICPB     EQU    *-1
          STD    T1
          LDD    CN+1        SET PROCEDURE FILE NAME
          STI    T1
          ZJN    ICP6        IF NO CHARACTERS
          LPN    77
          ZJN    ICP7        IF ONE CHARACTER
          AOD    T1          ADVANCE CHARACTER ADDRESS
          LDD    CN+2
          STI    T1
          ZJN    ICP6        IF NO CHARACTERS
          LPN    77
          ZJN    ICP7        IF ONE CHARACTER
          AOD    T1          ADVANCE CHARACTER ADDRESS
 ICP6     LDC    1R)*100+1R)
 ICP7     LMN    1R)
          RAI    T1
          LDD    CP          UPDATE CONTROL STATEMENT POINTER WORD
          ADN    CSPW
          CWD    CM
          ADN    CSBW-CSPW
          CWM    *,T2
 ICPC     EQU    *-1

*         INITIALIZE SUBSYSTEM IDENTIFICATION WORD.

          LDN    ZERL        CLEAR SUBSYSTEM IDENTIFICATION WORD
          CRD    CM
          LDD    FL
          SBN    1
          MJN    ICP8        IF FL .LT. 100B
          LDD    RA          CLEAR SUBSYSTEM IDENTIFICATION WORD
          SHN    6
          ADN    SSIW
          CWD    CM
          ADN    1           CLEAR RECEIVING BUFFER WORD POINTER
          CWD    CM
          LDN    0           INDICATE NO ERRORS
 ICP8     LJM    ICPX        RETURN
 PVE      SPACE  4
**        PVE - PRESET FOR NOS/VE SUBSYSTEM.
*
*         USE *NVE* SUBSYSTEM RATHER THAT *MSS* IF A DUAL STATE
*         COMMUNICATION BLOCK IS DEFINED IN CMR.


 PVE      SUBR               ENTRY/EXIT
          LDC    DSBP
          CRD    CM          READ DUAL STATE BLOCK POINTER WORD
          LDD    CM
          ADD    CM+1
          ZJN    PVEX        IF NOT A DUAL STATE SYSTEM
          LDC    NVEC        CHANGE *MSS* ENTRY IN *TCTR* TO *NVE*
          STM    TCTR+NVEP
          UJN    PVEX        RETURN
          TITLE  TABLES.
 TCTR     SPACE  4,10
**        TCTR - JOB CONTROL TABLE.
*
*         ONE WORD ENTRY CONTAINING AN ADDRESS OF A JOB CONTROL WORD
*         FOR A PARTICULAR SUBSYSTEM.
*         INDEXED BY SUBSYSTEM INDEX (QUEUE PRIORITY - MNSC -2).


 TCTRL    MAX    RBFP,NAMP,TAFP,CDCP,MCSP,STMP,IAFP,EXPP

 TCTR     INDEX
          INDEX  MCSP,MCSC   ADDRESS OF *MCS* CONTROL TABLE
          INDEX  RBFP,RBFC   ADDRESS OF *RBF* CONTROL TABLE
          INDEX  NAMP,NAMC   ADDRESS OF *NAM* CONTROL TABLE
          INDEX  CDCP,CDCC   ADDRESS OF *CDCS* CONTROL TABLE
          INDEX  TAFP,TAFC   ADDRESS OF *TAF* CONTROL TABLE
          INDEX  STMP,STMC   ADDRESS OF *STIMULATOR*
          INDEX  MSSP,MSSC   ADDRESS OF *MSS* CONTROL TABLE
          INDEX  IAFP,IAFC   ADDRESS OF *IAF* CONTROL TABLE
          INDEX  EXPP,EXPC   ADDRESS OF *EI200* CONTROL TABLE
          INDEX  TCTRL+1
          SPACE  4
**        SUBSYSTEM CONTROL INFORMATION TABLE.
*
*T,       12/ FL , 12/ CP
*T,       42/ NAME , 6/*SYOT* , 12/0
*T,       60/ INITIAL SUBSYSTEM CONTROL CARD
*T,       60/ INITIAL SUBSYSTEM CONTROL CARD
*
*                FL = INITIAL SUBSYSTEM FIELD LENGTH.
*                CP = INITIAL SUBSYSTEM CPU PRIORITY
*                NAME = SUBSYSTEM NAME.
*
*         THE INITIAL SUBSYSTEM CONTROL CARD WILL BE A CALL TO
*         A PROCEDURE FILE THAT RESIDES ON USER NUMBER *SYSTEMX*.
*         THE PROCEDURE FILE NAME WILL BE CREATED AS FOLLOWS-
*                -THE FIRST THREE CHARACTERS OF THE PROCEDURE FILE
*                 NAME CONSISTS OF THE FIRST THREE CHARACTERS OF
*                 THE SUBSYSTEM NAME. IF THE SUBSYSTEM NAME IS LESS
*                 THAN THREE CHARACTERS, IT WILL BE PACKED WITH
*                 DISPLAY CODE ZERO,S.
*                -THE LAST FOUR CHARACTERS WILL BE SPECIFIED BY THE
*                 CONSOLE OPERATOR WHEN ENTERING THE SUBSYSTEM
*                 INITIATION DSD COMMAND.


 MCSC     SUBSYS MCS,60,MCCS
 RBFC     SUBSYS RBF,60,RBCS
 NAMC     SUBSYS NAM,60,NMCS
 CDCC     SUBSYS CDC,60,CZCS
 TAFC     SUBSYS TAF,60,TACS
 STMC     SUBSYS STM,60,60
 MSSC     SUBSYS MSS,60,MFCS
 NVEC     SUBSYS NVE,60,NVCS
 IAFC     SUBSYS IAF,600,IACS
 EXPC     SUBSYS EXP,60,EICS
 TLXC     SUBSYS TELEX,600,TXCS
          SPACE  4
**        USER NUMBER AND USER INDEX OF CONTROL POINT AREA.


 UNUI     VFD    42/7LSYSTEMX,18/SYUI
          SPACE  4
*         COMMON DECKS.

*CALL     COMPRJC
*CALL     COMPRSI
          END
