VER 
          IDENT  VER,VER
          PERIPH
          BASE   MIXED
          SST    SSCP 
          TITLE  VER - VIRTUAL ENVIRONMENT REQUEST PROCESSOR. 
*COMMENT  VER - VIRTUAL RESOURCE REQUEST PROCESSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 VER      SPACE  4,10 
***       VER - VIRTUAL ENVIRONMENT REQUEST PROCESSOR.
* 
*         K. H. BOSSARD.     82/04/19.
          SPACE  4,10 
***              *VER* PROCESSES REQUESTS FOR OBTAINING AND 
*         RETURNING RESOURCES FOR NOS/VE IN THE DUAL STATE
*         ENVIRONMENT.
          SPACE  4,10 
***       CALL. 
* 
* 
*T        18/*VER*, 1/1, 5/CP, 12/FCN, 6/0, 18/ADDR 
* 
*         CP     NVE CONTROL POINT NUMBER.
*         FCN    FUNCTION CODE. 
*         ADDR   ADDRESS OF PARAMETER BLOCK.
          SPACE  4,10 
***       REPLY BLOCK.
* 
*         48/UNCHANGED, 12/GRS
*         48/UNCHANGED, 12/RS 
* 
*         GRS    GENERAL RETURN STATUS (RIGHTMOST BIT IS A
*                COMPLETION BIT). 
*         RS     INDIVIDUAL RETURN STATUS.
* 
*         *RS* IS THE RETURN STATUS FOR A SPECIFIC INDIVIDUAL REQUEST 
*         AND IS NOT PRESENT IN ALL FORMATS.  FOR REPLIES THAT HAVE 
*         BOTH *GRS* AND *RS*, *GRS* CONTAINS THE VALUE OF THE LAST 
*         ENCOUNTERED NON-ZERO ERROR STATUS.  REQUEST PROCESSING
*         CONTINUES UNTIL A FATAL ERROR (100X,200X) OCCURS. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         * VER - ILLEGAL USER ACCESS.* 
*         THE CALLER DID NOT HAVE NVE SUBSYSTEM ID. 
* 
*         * VER - ARGUMENT ERROR.*
*         INDICATES ONE OF THE FOLLOWING. 
*         1.  AN ILLEGAL FUNCTION CODE WAS SPECIFIED. 
*         2.  AUTO RECALL WAS NOT SELECTED. 
*         3.  PARAMETER BLOCK WAS NOT WITHIN CALLER-S FIELD LENGTH. 
*         4.  THE COMPLETION BIT IN THE PARAMETER BLOCK WAS SET.
* 
*         * VER - FATAL MAINTENANCE REGISTER ERROR.*
*         A FATAL PARITY ERROR OCCURRED DURING MAINTENANCE REGISTER 
*         ACCESS THROUGH THE MAINTENANCE CHANNEL. 
* 
*         * VER - EJT ENTRY UNAVAILABLE.* 
*         *VER* WAS UNABLE TO OBTAIN AN EJT ORDINAL.
* 
*         * VER - OVERLAY SELECTION ERROR.* 
*         OVERLAY *2VR* RECEIVED CONTROL ON A FUNCTION CODE 
*         WHICH SHOULD HAVE BEEN PROCESSED BY *VER* MAIN. 
  
          SPACE  4,10 
***       BINARY MAINTENANCE LOG MESSAGES.
* 
* 
*         MESSAGES WILL BE ISSUED IN THE FOLLOWING CASES. 
* 
*         1. REQUEST CM FOR NOS/VE. 
*         2. RETURN CM FROM NOS/VE. 
*         3. REQUEST PP FOR NOS/VE. 
*         4. RETURN PP FROM NOS/VE. 
*         5. CANNOT IDLE PP.
*         6. CANNOT DEADSTART PP. 
*         7. BAD PP RETURNED FROM NOS/VE. 
* 
*         THE CONTENTS OF THE MESSAGE INCLUDE THE PP NUMBER OR
*         THE CURRENT FWA AND LWA+1 OF NOS/VE CM, AS APPROPRIATE. 
          SPACE  4,10 
**        ROUTINES CALLED.
* 
* 
*         1VP - RESERVE VIRTUAL PP. 
          SPACE  4,10 
*CALL     COMPMAC 
*CALL     COMPMRM 
*CALL     COMSCPS 
*CALL     COMSDFS 
*CALL     COMSDFT 
          QUAL   DSL
*CALL     COMSDSL 
          QUAL   *
          LIST   X
*CALL     COMSDST 
          LIST   *
*CALL     COMSEJT 
*CALL     COMSIOU 
*CALL     COMSPIM 
*CALL     COMSSSD 
          LIST   X
*CALL     COMSVED 
          LIST   *
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 PB       EQU    20 - 24     REQUEST/REPLY WORD BUFFER (5 LOCATIONS)
 RN       EQU    25          C180 REGISTER NUMBER 
 EC       EQU    26          C180 REGISTER CONNECTION CODE
 LO       EQU    27          LIST OFFSET
 NC       EQU    LO          SYSTEM CONTROL POINT NUMBER
 CL       EQU    30 - 34     CM WORD BUFFER (5 LOCATIONS) 
 DA       EQU    35          DIRECT CELL STORAGE
 DB       EQU    36          DIRECT CELL STORAGE
 DC       EQU    37          DIRECT CELL STORAGE
 CN       EQU    40 - 44     CM WORD BUFFER (5 LOCATIONS) 
 ES       EQU    CN          CM WORD BUFFER FOR *COMPDVC* 
 LE       EQU    45          LAST EST ORDINAL + 1 
 CF       EQU    46          CONFIGURATION FLAG 
 BS       EQU    47          MEMORY BLOCK SIZE
 SC       EQU    60 - 64     SCRATCH
****
          SPACE  4,10 
*         IN ORDER TO SAVE SPACE, THE DIRECT CELL *TH* IS USED IN PLACE 
*         OF *ESIR*.  THIS MUST BE CHANGED IF THE VALUE OF *ESIR* IN
*         *COMSVED* CHANGES.
  
          ERRNZ  ESIR-1000   *ESIR* VALUE HAS CHANGED, SEE ABOVE NOTE 
          TITLE  MACRO DEFINITIONS. 
 ABORT    SPACE  4,10 
**        ABORT - ERROR PROCESSING MACRO. 
* 
*         ABORT  ADDR 
* 
*         ADDR = FWA OF ERROR MESSAGE FOR DAYFILE.
* 
*         CALLS  ERR. 
  
  
          PURGMAC ABORT 
  
 ABORT    MACRO  A
          MACREF ABORT
          LDC    A
          LJM    ERR
 ABORT    ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
*         FCN    NAME 
* 
*         NAME = NAME OF FUNCTION PROCESSOR.
  
  
 FCN      MACRO  A
          CON    A
 FCN      ENDM
          TITLE  MAIN PROGRAM.
          ORG    PPFW 
 VER      SPACE  4,10 
**        VER - MAIN PROGRAM. 
  
  
 VER      RJM    PRS         PRESET VIRTUAL ENVIRONMENT 
          STD    PB+4 
          NJN    VERX        IF ERROR FOUND DURING PRESET 
  
*         TO FUNCTION PROCESSOR WITH
*         (PB - PB+4) = FIRST WORD OF PARAMETER BLOCK.
*                     = 1/F, 35/0, 12/LENGTH, 12/0. 
*                     F = FLAG USED ONLY IN RETURN FUNCTIONS. 
*                       = 0 - RETURN SPECIFIED RESOURCES. 
*                       = 1 - RETURN ALL. 
*                     LENGTH = LENGTH (IN CM WORDS) OF PARAMETER BLOCK. 
*         (IR+3 - IR+4) = ADDRESS OF PARAMETER BLOCK. 
  
          RJM    ** 
 VERA     EQU    *-1         (FUNCTION PROCESSOR ADDRESS) 
  
 VERX     AOD    PB+4        SET COMPLETION BIT 
          RJM    CPA         GET PARAMETER BLOCK ADDRESS
          CWD    PB          WRITE RESPONSE 
          MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
  
  
**        RESERVED LOCATIONS. 
  
 CHFL     CON    0           CHANNEL RESERVED FLAG
 NEJT     CON    0           NOS/VE EJT ORDINAL 
 PPCA     CON    0           PP COMMUNICATION AREA ADDRESS
          TITLE  ERROR PROCESSOR. 
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         ENTRY  (A) = FWA OF ERROR MESSAGE FOR DAYFILE.
* 
*         EXIT   DAYFILE MESSAGE ISSUED.
*                CONTROL POINT ABORTED. 
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 ERR      RJM    DFM         ISSUE DAYFILE MESSAGE
          MONITOR  ABTM      ABORT CONTROL POINT
          LJM    PPR         EXIT TO PP RESIDENT
  
*         ERROR MESSAGES. 
  
 ERIR     DATA   C* VER - ILLEGAL USER ACCESS.* 
 ERAE     DATA   C* VER - ARGUMENT ERROR.*
 ERMR     DATA   C* VER - FATAL MAINTENANCE REGISTER ERROR.*
 EREU     DATA   C* VER - EJT ENTRY UNAVAILABLE.* 
 EROS     DATA   C* VER - OVERLAY SELECTION ERROR.* 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPMRA 
*CALL     COMPRNS 
          TITLE  BUFFER DEFINITIONS.
          SPACE  4,35 
**        BUFFER DEFINITIONS. 
* 
*         BUFFERS ARE ALLOCATED AT THE HIGHEST MEMORY LOCATIONS 
*         SO THAT THE SAME BUFFER DEFINITIONS MAY BE USED BY BOTH 
*         THE MAIN PORTION OF *VER* AND THE *2VR* OVERLAY.  NONE OF 
*         THESE BUFFERS MAY BE USED BY PRESET.
* 
*         *IBUF*, *PBUF*, AND *RBUF* MUST NOT OVERLAP.
*         *MBUF* MUST NOT OVERLAP *IBUF* OR *RBUF*. 
*         *CBUF* MUST NOT OVERLAP *RBUF*. 
*         *MBUF* MAY OVERLAP *CBUF* AND *PBUF*. 
*         *CBUF* AND *TCFL* MAY OVERLAP *IBUF* AND *PBUF*.
* 
*         *MBUF* IS USED ONLY FOR THE *RSCM* AND *RNCM* FUNCTIONS.
*         *PBUF* IS USED ONLY FOR THE *RNPP* AND *RNPT* FUNCTIONS.
*         *PBUF* MUST HAVE TWO RESERVED WORDS PRECEEDING IT FOR DISK
*         LINKAGE BYTES.
  
  
 .CBUFL   MAX    40,CTALL*5  CHANNEL TABLE/CONTROL POINT FL SPACE 
 .IBUFL   EQU    10          MAINTENANCE REGISTER SPACE 
 .MBUFL   EQU    10          MAINTENANCE REGISTER SPACE 
 .PBUFL   EQU    1200        PP RESIDENT SPACE
 .RBUFL   MAX    10,CTALL*5  MAINTENANCE REGISTER/CHANNEL TABLE SPACE 
 RBUF     EQU    EPFW-.RBUFL MAINTENANCE REGISTER/CHANNEL TABLE BUFFER
 CBUF     EQU    RBUF-.CBUFL CHANNEL TABLE/CONTROL POINT FL BUFFER
 IBUF     EQU    RBUF-.IBUFL MAINTENANCE REGISTER BUFFER
 MBUF     EQU    IBUF-.IBUFL MAINTENANCE REGISTER BUFFER
 PBUF     EQU    IBUF-.PBUFL PP RESIDENT INPUT BUFFER 
  
  
**        TCFL - TABLE OF CP/PCP CM FIELD LENGTHS.
* 
*         ONE WORD PER CP/PCP.
* 
*T        1/R, 11/ FL 
*         R=1, IF ROLLOUT FLAG SET. 
  
  
 TCFL     EQU    CBUF 
          TITLE  COMMON SUBROUTINES.
 CHA      SPACE  4,10 
**        CHA - CHECK CHANNEL ASSIGNMENT. 
* 
*         ENTRY  (T2) = CHANNEL NUMBER. 
* 
*         EXIT   (A) = 0 IF CHANNEL IS ASSIGNED TO NOS/VE.
* 
*         USES   T4.
  
  
 CHA      SUBR               ENTRY/EXIT 
          LDN    CTALL
          STD    T4 
          LDC    **          FWA OF CHANNEL EJT ASSIGNMENT TABLE
 CHAA     EQU    *-2
          CRM    CBUF,T4     READ CHANNEL ASSIGNMENT TABLE
          LDM    NEJT 
          LMM    CBUF,T2
          UJN    CHAX        RETURN 
 CPA      SPACE  4,10 
**        CPA - CHECK PARAMETER BLOCK ADDRESS.
* 
*         ENTRY  (IR+3 - IR+4) = PARAMETER BLOCK ADDRESS. 
*                (PB+3) = WORD COUNT. 
* 
*         EXIT   (A) = ABSOLUTE ADDRESS OF PARAMETER BLOCK. 
*                ABORT IF PARAMETER BLOCK NOT WITHIN FIELD LENGTH.
* 
*         MACROS ABORT. 
  
  
 CPA2     LDD    IR+3        LOAD ABSOLUTE ADDRESS
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
  
 CPA      SUBR               ENTRY/EXIT 
          LDD    IR+3 
          SCN    37 
          NJN    CPA1        IF OUT OF RANGE
          LDD    IR+3 
          SHN    14 
          LMD    IR+4 
          ADD    PB+3        ADD LENGTH 
          SBN    1
          SHN    -6 
          SBD    FL 
          MJN    CPA2        IF PARAMETER BLOCK WITHIN FL 
 CPA1     ABORT  ERAE        * VER - ARGUMENT ERROR.* 
 IBM      SPACE  4,10 
**        IBM - ISSUE BINARY MAINTENANCE LOG MESSAGE. 
* 
*         ENTRY  (A) = MESSAGE ID.
*                (T1) = SYMPTOM CODE. 
*                (CN - CN+4) = DATA WORD. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
 IBM      SUBR               ENTRY/EXIT 
          STM    IBMA        SET MESSAGE ID 
          LDD    T1          SET SYMPTOM CODE 
          STM    IBMA+1 
          LDD    MA          MOVE DATA WORD TO BUFFER 
          CWD    CN 
          CRM    IBMB,ON
          LDN    ZERL 
          CRD    CM 
          LDN    IBML        SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    IBMA+BMLN   ISSUE DAYFILE MESSAGE
          RJM    DFM
          UJN    IBMX        RETURN 
  
*         MESSAGE BUFFER. 
  
 IBMA     VFD    12/0,12/0,36/0  MESSAGE ID, SYMPTOM CODE 
          VFD    60/0        RESERVED 
 IBMB     VFD    60/0        MESSAGE
 IBML     EQU    *-IBMA 
 LPR      SPACE  4,10 
**        LPR - LOAD PP RESIDENT. 
* 
*         EXIT   (PBUF) = COPY OF PP RESIDENT.
* 
*         USES   DA, DB, T2, T5, T6, T7, CL, CM - CM+4. 
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 LPR      SUBR               ENTRY/EXIT 
          LDC    0L1PR       SET *PPR* NAME 
          STD    CM+3 
          SHN    -14
          STD    CM+2 
          MONITOR  SPLM      SEARCH PERIPHERAL LIBRARY
          LDD    CM+1        SET EST ORDINAL
          LPN    77 
          STD    T5 
          LDD    CM+2        SET TRACK NUMBER 
          STD    T6 
          LDD    CM+3        SET SECTOR NUMBER
          STD    T7 
          SETMS  IO 
          LDC    PBUF-2 
          STD    CL 
 LPR1     LDI    CL          SAVE TWO WORDS 
          STD    CL+1 
          LDM    1,CL 
          STD    CL+2 
          LDD    CL 
          RJM    RNS         READ NEXT SECTOR 
          LDD    CL+1        RESTORE TWO WORDS
          STI    CL 
          LDD    CL+2 
          STM    1,CL 
          LDC    500         ADVANCE BUFFER ADDRESS 
          RAD    CL 
          LDD    T1 
          SHN    -6 
          NJN    LPR1        IF NOT END OF *PPR*
          ENDMS 
          LJM    LPRX        RETURN 
 MRER     SPACE  4,10 
**        MRER - MAINTENANCE REGISTER ERROR HANDLER.
* 
*         ENTRY  FATAL MAINTENANCE REGISTER ERROR.
*                (T7) = CHANNEL NUMBER IF ONE ASSIGNED. 
*                (CHFL) .NE. 0 IF CHANNEL ASSIGNED. 
* 
*         EXIT   TO *ERR* VIA *ABORT* MACRO.
*                CHANNEL DROPPED AND DISCONNECTED.
* 
*         MACROS ABORT, DCHAN.
  
  
 MRER     LDM    CHFL        CHECK CHANNEL ASSIGNED FLAG
          ZJN    MRE1        IF CHANNEL NOT ASSIGNED
 MREA     DCN    **+40
          LDD    T7 
          DCHAN              DROP CHANNEL 
 MRE1     ABORT  ERMR        * VER - FATAL MAINTENANCE REGISTER ERROR.* 
 NEC      SPACE  4,10 
**        NEC - NORMALIZE EC REGISTER.
* 
*         ENTRY  (RBUF - RBUF+7) = EC REGISTER. 
* 
*         EXIT   (RBUF - RBUF+7) = NORMALIZED EC REGISTER.
*                NORMALIZED EC REGISTER REWRITTEN.
*                BITS 34-39, 43-47, 51-55, 58 = 0.
*                ALL OTHER BITS ARE UNCHANGED.
* 
*         MACROS WRITMR.
  
  
 NEC      SUBR               ENTRY/EXIT 
          LDM    RBUF+4      CLEAR BITS 34-39 
 NECA     SCN    37 
*         SCN    77          (IF IOU MODEL I2)
          STM    RBUF+4 
          LDM    RBUF+5      CLEAR BITS 43-47 
          SCN    37 
          STM    RBUF+5 
          LDM    RBUF+6      CLEAR BITS 51-55 
          SCN    37 
          STM    RBUF+6 
          LDM    RBUF+7      CLEAR BIT 58 
          SCN    40 
          STM    RBUF+7 
          WRITMR RBUF,,DEMR  UPDATE EC REGISTER 
          LJM    NECX        RETURN 
 SDC      SPACE  4,10 
**        SDC - SELECT DEADSTART CHANNEL. 
* 
*         EXIT   (T7) = CHANNEL NUMBER. 
*                (CHFL) = CHANNEL FLAG SET. 
* 
*         USES   T0, T1, CM - CM+4. 
* 
*         MACROS RCHAN, SFA.
  
  
 SDC      SUBR               ENTRY/EXIT 
 SDC1     LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T1 
 SDC2     AOD    T1          ADVANCE EST ORDINAL
          LMD    LE 
          ZJN    SDC1        IF NO CHANNEL FOUND
          SFA    EST,T1      READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          PJN    SDC2        IF NOT MASS STORAGE DEVICE 
          LDD    CM+3        CHECK IF ECS ENTRY 
          LMC    2RDE 
          ZJN    SDC2        IF ECS ENTRY 
          LDN    CM 
          STD    T0 
 SDC3     AOD    T0 
          LMN    CM+3 
          ZJN    SDC2        IF BOTH CHANNELS CHECKED 
          LDI    T0 
          SHN    0-12 
          LMN    2
          NJN    SDC3        IF CHANNEL NOT PRESENT OR DISABLED 
          LDI    T0 
          SHN    21-5 
          MJN    SDC3        IF CONCURRENT CHANNEL
          SHN    5-21 
          STD    T7 
          RCHAN              RESERVE CHANNEL
          AOM    CHFL        SET CHANNEL RESERVED FLAG
          LJM    SDCX        RETURN 
 SEA      SPACE  4,10 
**        SEA - SET *EICB* ADDRESS. 
* 
*         EXIT   (A) = *EICB* ADDRESS.
  
  
 SEA      SUBR               ENTRY/EXIT 
 SEAA     LDC    **          (FWA OF *EICB*)
          UJN    SEAX        RETURN 
 VRC      SPACE  4,15 
**        VRC - VE RESERVE CHANNEL. 
* 
*         ENTRY  (T2) = CHANNEL NUMBER. 
* 
*         EXIT   (T4) = 0 IF CHANNEL PREVIOUSLY NOS/VE RESERVED.
*                (CM+1) = NONZERO VALUE IF CHANNEL ASSIGNED.
*                NIO CHANNEL DISCONNECTED IF ASSIGNED.
* 
*         USES   T4, CM - CM+4. 
* 
*         CALLS  CHA. 
* 
*         MACROS MONITOR. 
  
  
 VRC1     STD    T4          INDICATE ALREADY NOS/VE RESERVED 
  
 VRC      SUBR               ENTRY/EXIT 
          RJM    CHA         CHECK CHANNEL ASSIGNMENT 
          ZJN    VRC1        IF CHANNEL ALREADY NOS/VE RESERVED 
          LDD    T2          SET CHANNEL NUMBER 
          STD    CM+3 
          LDM    NEJT        SET ALTERNATE EJT ORDINAL
          STD    CM+4 
          LDC    4001        SET DUMMY EST ORDINAL
          STD    CM+1 
          LDN    ICNS        SET SUBFUNCTION
          STD    CM+2 
          MONITOR  SEQM      REQUEST CHANNEL
          LDD    CM+1 
          ZJP    VRCX        IF CHANNEL NOT AVAILABLE 
          LDD    T2 
          LPN    40 
          NJP    VRCX        IF CONCURRENT CHANNEL
          LDC    DCNI+40     DISCONNECT CHANNEL 
          ADD    T2 
          STM    VRCA 
 VRCA     DCN    **+40
          UJP    VRCX        RETURN 
 VTC      SPACE  4,10 
**        VTC - VE RETURN CHANNEL.
* 
*         ENTRY  (T2) = CHANNEL NUMBER. 
* 
*         EXIT   (A) = 0. 
*                CHANNEL RETURNED.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 VTC      SUBR               ENTRY/EXIT 
          LDD    T2          SET CHANNEL NUMBER 
          STD    CM+3 
          LDM    NEJT        SET ALTERNATE EJT ORDINAL
          STD    CM+4 
          LDC    4001        SET DUMMY EST ORDINAL
          STD    CM+1 
          LDN    CCNS        SET SUBFUNCTION
          STD    CM+2 
          MONITOR  SEQM      RETURN CHANNEL 
*         LDN    0
          UJN    VTCX        RETURN 
 OVLA     SPACE  4,10 
*         DEFINE ORIGIN FOR OVERLAY *2VR*.
  
 OVLA     EQU    *+5
          TITLE  FUNCTION PROCESSORS. 
 RCM      SPACE  4,15 
**        FUNCTION 0 - RSCM - RESERVE CM. 
* 
*         ENTRY  (EIBA - EIBA+1) = *EICB* ADDRESS.
*                (PB LIST ENTRY) = 42/0, 18/CM WORDS/1000B REQUESTED. 
* 
*         EXIT   WORD *D7CM+1* OF *EICB* AND PB LIST ENTRY+1 =
*                12/0, 24/FWA/1000B, 24/LWA+1/1000B.
*                (PB LIST ENTRY) = 42/0, 18/CM WORDS/1000B REQUESTED
*                ROUNDED UP TO THE NEAREST 2000B BOUNDARY.
*                MACHINE FL ADJUSTED TO REFLECT NEW TOTAL FOR NOS.
*                (PB+4) = ERROR STATUS. 
*                BML MESSAGE ISSUED.
* 
*         USES   PB+4, T6, T7, CL - CL+4, CM+3 - CM+4, T1 - T1+4. 
* 
*         CALLS  CMS, CPA, CRZ, GCC, IBM, RST, SBA, SDA.
  
  
 RCM      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK PARAMETER BLOCK LENGTH 
          SBN    2
          PJN    RCM1        IF LENGTH LONG ENOUGH
          LDC    ESIL        SET INSUFFICIENT LENGTH STATUS 
          LJM    RCM5        RETURN 
  
 RCM1     RJM    CPA         GET NUMBER OF CM WORDS REQUESTED 
          ADN    1
          CRD    CL 
          LDD    CL+4        CHECK REQUEST
          LPN    1
          ZJN    RCM1.1      IF REQUEST EVEN
          AOD    CL+4        ROUND UP TO NEAREST 2000B BOUNDARY 
          SHN    -14
          RAD    CL+3        ADD CARRY
 RCM1.1   LDD    CL+3 
          STD    T6 
          LDD    CL+4 
          STD    T7 
          RJM    GCC         GET CURRENT NOS/VE SIZE
          RJM    CRZ         CHECK REQUEST SIZE 
          PJN    RCM2.1      IF REQUEST SATISFIED BY RESERVED BLOCK 
          LDC    UEML        CHECK FOR UEM PRESENT
          CRD    T1 
          LDD    T1+4 
          LPN    2
          ZJN    RCM6        IF UEM NOT PRESENT 
          UJN    RCM4        SET NOT AVAILABLE
  
 RCM2     RJM    SBA         SET BOUNDS ADDRESS 
 RCM2.1   RJM    SDA         SET *EICB* CM ADDRESSES
          LDN    0           SET REPLY WORD 
          STD    CL 
          STD    CL+1 
          RJM    CPA         SET REPLY
          ADN    1
          CWD    CL 
          ADN    1
          CWD    CN 
          LDC    /COMSDFS/HS0110  SET SYMPTOM CODE
          STD    T1 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
 RCM3     LJM    RCMX        RETURN 
  
 RCM4     LDN    ESCM        SET CM NOT AVAILABLE STATUS
 RCM5     STD    PB+4 
          UJN    RCM3        RETURN 
  
*         DYNAMIC CASE. (UEM NOT PRESENT).
  
*         DETERMINE IF BLOCK IS ALREADY COMPLETELY USED.
*         COMPARE CURRENT NOS/VE MEMORY TO RESERVED BLOCK SIZE. 
  
 RCM6     LDD    CM+3 
          STD    T1 
          LDD    CN+4 
          SBD    CM+4 
          PJN    RCM6.1      IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
 RCM6.1   LDD    CN+3 
          SBD    T1 
          MJN    RCM7        IF ALREADY USING MORE THAN BLOCK 
  
*         SET AMOUNT TO REQUEST DYNAMICALLY.
*         (REQUEST + CURRENT SIZE - BLOCK SIZE).
  
          LDD    CN+3 
          STD    T1 
          LDD    CL+4 
          ADD    CM+4 
          SBD    CN+4 
          STD    T7 
          PJN    RCM6.2      IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    T7 
          LDN    0
 RCM6.2   SHN    -14
          ADD    CL+3 
          ADD    CM+3 
          SBD    T1 
          STD    T6 
 RCM7     RJM    CMS         CHECK MEMORY SIZE
          MJN    RCM4        IF NOT ENOUGH LEFT 
          LDD    T6          SAVE TOTAL REQUEST 
          STM    RCMA 
          LDD    T7 
          STM    RCMA+1 
          LDN    0           SET REQUEST FUNCTION 
          RJM    RST         REQUEST MEMORY 
          NJN    RCM8        IF TOTAL REQUEST NOT AVAILABLE 
          LJM    RCM2        SET *EICB* AND REPLY 
  
*         RETURN MEMORY ALREADY ASSIGNED. 
  
 RCM8     STD    T7 
          SHN    -14
          STD    T6 
          LDM    RCMA 
          SBD    T6 
          SHN    14 
          LMM    RCMA+1 
          SBD    T7 
          STD    T7 
          SHN    -14
          STD    T6 
          LDD    HN          RETURN MEMORY
          RJM    RST
          LJM    RCM4        SET NOT AVAILABLE STATUS 
  
 RCMA     CON    0,0         TOTAL DYNAMIC MEMORY REQUEST 
 RPP      SPACE  4,15 
**        FUNCTION 1 - RSPP - RESERVE PP-S. 
* 
*         ON 20 PP 810/830 CONFIGURATIONS, PP-S MUST BE ASSIGNED
*         TO NOS/VE IN PARTNER PAIRS.  IF NOS/VE REQUESTS AN ODD
*         NUMBER OF PP-S OR RETURNS ONE MEMBER OF A PARTNER PAIR, 
*         THE EXTRA PP MUST NOT BE USED BY NOS, BUT NOS/VE MUST 
*         NOT KNOW ABOUT IT EITHER.  THESE PP-S ARE CALLED PSEUDO-
*         ASSIGNED.  AS FAR AS NOS IS CONCERNED, THEY ARE IN AN 
*         IDENTICAL STATUS AS OTHERS ASSIGNED TO NOS/VE.  THEIR 
*         INPUT REGISTERS CONTAIN *VP AND THEY ARE IDLE AND MARKED
*         AS UPPER PP-S IN THE OS BOUNDS REGISTER.  THE ONLY
*         DISTINCTION IS THAT BYTE 4 OF THE INPUT REGISTER IS ZERO
*         FOR PP-S THAT ARE ACTUALLY ASSIGNED, AND NON-ZERO FOR 
*         THOSE THAT ARE PSEUDO-ASSIGNED.  IN ORDER TO ASSIGN THEM
*         TO NOS/VE ALL THAT MUST BE DONE IS TO CLEAR BYTE 4 OF THE 
*         INPUT REGISTER AND ENTER THE PP NUMBER IN THE REPLY BLOCK 
*         FOR A REQUEST PP FUNCTION.
* 
*         EXIT   (PB LIST ENTRY) = 6/PP NUMBER, 54/0. 
*                                = 6/77B, 42/0, 12/ERROR CODE 
*                                  IF PP UNAVAILABLE. 
*                (PB+4) = ERROR STATUS. 
*                BML MESSAGE ISSUED.
* 
*         USES   DA, DB, DC, EC, LO, PB+4, T3, T6, CL - CL+4, 
*                CM - CM+4, CN - CN+4.
* 
*         CALLS  ARC, CPA, GCP, IBM, IPP, SPB.
* 
*         MACROS DELAY, EXECUTE, MONITOR, PAUSE.
  
  
 RPP      SUBR               ENTRY/EXIT 
          LDN    ZERL        INITIALIZE RESPONSE LIST ENTRY 
          CRD    CL 
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
          LDD    PB+3        GET NUMBER REQUESTED 
          ZJN    RPPX        IF NONE REQUESTED
          STD    T6 
          RJM    GCP         GET CURRENT STATUS OF PP-S 
          RJM    ARC         ADJUST REQUEST COUNT 
          LDD    T6 
          ZJN    RPPX        IF REQUEST SATISFIED 
          LDD    CM+2        TOTAL PP-S IN SYSTEM 
          SBD    T6 
          SBD    T5 
          SBN    MINP 
          PJN    RPP1        IF ENOUGH LEFT FOR NOS 
          RAD    T6          SET NUMBER OF PP-S AVAILABLE TO NOS/VE 
          MJN    RPP0        IF NONE AVAILABLE
          NJN    RPP1        IF NOS/VE DOES NOT ALREADY HAVE MAXIMUM
 RPP0     UJN    RPP2.2      SET PP NOT AVAILABLE STATUS
  
*         REQUEST PP FOR *1VP*. 
  
 RPP1     LDD    MA          SET INPUT REGISTER 
          CWM    RPPA,ON
          EXECUTE  1VP,=
          LDN    5           INITIALIZE ATTEMPT COUNT 
          STD    DC 
 RPP2     LDN    ZERL 
          CRD    CM 
          LDD    CF 
          ZJN    RPP2.1      IF NOT 810/830 WITH 20 PP-S
          LDN    4           SET PARTNER PAIR FLAG
 RPP2.1   LMN    1           SET PRIORITY REQUEST 
          STD    CM+1 
          MONITOR  RPPM      REQUEST PP 
          LDD    CM+1 
          NJN    RPP3        IF PP AVAILABLE
          PAUSE  NE 
          DELAY 
          SOD    DC          DECREMENT ATTEMPT COUNT
          NJN    RPP2        IF ANOTHER ATTEMPT TO BE MADE
 RPP2.2   LJM    RPP6        SET PP NOT AVAILABLE STATUS
  
 RPP3     STD    T3          SAVE INPUT REGISTER ADDRESS
          LDD    CM+2        SAVE SECOND INPUT REGISTER ADDRESS 
          STD    DA 
 RPP4     LDD    T3          GET INPUT REGISTER OF *1VP*
          CRD    CM 
          LDD    CM 
          LMC    2R*V 
          ZJN    RPP4.0      IF *1VP* READY 
          PAUSE  NE 
          DELAY 
          UJN    RPP4        RECHECK CALL 
  
RPP4.0    RJM    IPP         IDLE PP
          MJN    RPP4.1      IF PP NOT IDLED
          LDD    T5 
          RJM    SPB         SET UPPER PP BIT 
          LDC    /COMSDFS/HS0112  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T5          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LDD    DB 
          NJN    RPP4.2      IF PSEUDO-ASSIGNMENT 
          LDD    T5          SET PP NUMBER
          SHN    6
          STD    CL 
          RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
 RPP4.1   UJN    RPP5        CHECK IF REQUEST SATISFIED 
  
 RPP4.2   LDN    0           CLEAR PSEUDO-ASSIGNMENT NEEDED 
          STD    DB 
          LDD    T3          SET PSEUDO-ASSIGNED STATUS IN *IR* 
          CRD    CM 
          AOD    CM+4 
          LDD    T3 
          CWD    CM 
 RPP5     SOD    T6 
          ZJN    RPP6        IF REQUEST SATISFIED 
          LDD    DA 
          STD    T3 
          ZJP    RPP1        IF NO SECOND PP ASSIGNED 
          LDN    0           CLEAR SECOND PP ASSIGNED 
          STD    DA 
          UJP    RPP4        PROCESS SECOND PP
  
*         SET ERROR STATUS IN ALL REMAINING LIST ENTRIES. 
  
 RPP6     LDD    LO 
 RPP7     SBD    PB+3 
          SBN    1
          PJN    RPP8        IF END OF PARAMETER BLOCK LIST 
          LDN    ESPP        SET PP NOT AVAILABLE STATUS
          STD    PB+4 
          STD    CL+4 
          LDC    7700        SET ERROR RESPONSE 
          STD    CL 
          RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
          UJN    RPP7        CHECK FOR ANOTHER ENTRY
  
 RPP8     LJM    RPPX        RETURN 
  
 RPPA     VFD    18/0L1VP,42/0  *1VP* INPUT REGISTER
 RCL      SPACE  4,10 
**        FUNCTION 2 - RSCH - RESERVE CHANNELS. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 54/0.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR CODE. 
* 
*         USES   LO, T2, CL - CL+4. 
* 
*         CALLS  CPA, DCA.
  
  
 RCL7     LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 RCL      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    RCLX        IF NONE REQUESTED
          SBN    NCTAL*5+1
          PJN    RCL7        IF TOO MANY CHANNELS REQUESTED 
          LDN    NCTAL
          STD    T2 
          LDC    **          FWA CHANNEL STATUS TABLE 
 RCLA     EQU    *-2
          CRM    RBUF,T2
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 RCL1     RJM    CPA         READ NEXT CHANNEL NUMBER 
          ADD    LO 
          CRD    CL 
          LDN    0           CLEAR ERROR FLAG 
          STD    CL+4 
          LDD    CL 
          SHN    -6 
          STD    T2 
          SBN    MXNC+1 
          MJN    RCL2        IF VALID CHANNEL NUMBER
          LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          UJN    RCL3        WRITE PARAMETER LIST ENTRY 
  
 RCL2     RJM    DCA         DETERMINE CHANNEL AVAILABILITY 
          ZJN    RCL4        IF CHANNEL WAS PREVIOUSLY NOS/VE RESERVED
          LDD    CM+1 
          NJN    RCL4        IF CHANNEL ASSIGNED
          LDN    ESCH        SET CHANNEL NOT AVAILABLE STATUS 
 RCL3     STD    PB+4 
          STD    CL+4 
 RCL4     RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADD    LO 
          CWD    CL 
          LDD    CL+4 
          LMD    TH          CHECK IF *ESIR*
          NJN    RCL6        IF LEGAL REQUEST 
 RCL5     LJM    RCLX        RETURN 
  
 RCL6     AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          PJN    RCL5        IF END OF LIST 
          LJM    RCL1        PROCESS NEXT LIST ENTRY
 TCM      SPACE  4,20 
**        FUNCTION 4 - RNCM - RETURN CM.
* 
*         ENTRY  (PB LIST ENTRY) = 42/0, 18/NUMBER OF WORDS/1000B TO
*                                  RETURN.
* 
*         EXIT   *EICB* WORD *D7CM+1* = 12/0, 24/FWA/1000B, 
*                                       24/LWA+1/1000B. 
*                (PB LIST ENTRY) = 42/0, 18/NUMBER OF WORDS/1000B TO
*                RETURN ROUNDED DOWN TO NEAREST 2000B BOUNDARY. 
*                MACHINE FL IS ADJUSTED IF ANY DYNAMIC MEMORY RETURNED. 
*                (PB+4) = ERROR STATUS. 
*                BML MESSAGE ISSUED.
* 
*         USES   T1, CL - CL+1, CM - CM+4, CN - CN+1. 
* 
*         CALLS  CPA, GCC, IBM, RDM, SDA. 
  
  
 TCM2     LDN    0           SET TOTAL NUMBER OF WORDS = 0
          STD    CL 
          STD    CL+1 
          LDD    CN          SET AMOUNT TO RETURN = CURRENT VALUE 
          STD    CM+3 
          LDD    CN+1 
          STD    CM+4 
 TCM3     RJM    RDM         RETURN DYNAMIC MEMORY
          RJM    SDA         SET CM ADDRESSES IN *EICB* 
          LDC    /COMSDFS/HS0111  SET SYMPTOM CODE
          STD    T1 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
  
 TCM      SUBR               ENTRY/EXIT 
          RJM    GCC         GET CURRENT NUMBER OF NOS/VE CM WORDS
          LDD    CM+3 
          STD    CN 
          LDD    CM+4 
          STD    CN+1 
          RJM    CPA         GET NUMBER OF WORDS TO BE RETURNED 
          ADN    1
          CRD    CM 
          LDD    PB 
          SHN    21-13
          MJP    TCM2        IF REQUEST TO RETURN ALL MEMORY
          LDD    CM+4        ROUND DOWN TO NEAREST 2000B
          SCN    1
          STD    CM+4 
          RJM    CPA         SET ROUNDED VALUE IN REPLY BLOCK 
          ADN    1
          CWD    CM 
          LDD    CM+3        FIND NEW TOTAL 
          STD    T1 
          LDD    CN+1 
          SBD    CM+4 
          STD    CL+1 
          PJN    TCM1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    CL+1 
 TCM1     LDD    CN 
          SBD    T1 
          STD    CL 
          PJP    TCM3        IF NUMBER TO RETURN .LE. CURRENT NUMBER
          LDN    ESCM        SET CM NOT ASSIGNED ERROR STATUS 
          STD    PB+4 
          LJM    TCMX        RETURN 
 TPP      SPACE  4,15 
**        FUNCTION 5 - RNPP - RETURN PP.
* 
*         ENTRY  (PB LIST ENTRY) = 6/PP NUMBER, 54/0. 
* 
*         EXIT   (PB LIST ENTRY) = 6/UNCHANGED, 42/0, 12/ERROR STATUS.
*                (PB+4) = ERROR STATUS. 
* 
*         USES   DA, EC, LO, PB+4, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA, CPS, DPL, LPR, SPB, VPN.
* 
*         MACROS MONITOR. 
  
  
 TPP13    LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 TPP      SUBR               ENTRY/EXIT 
          RJM    LPR         LOAD PP RESIDENT 
          LDN    PPUL        GET NUMBER OF SYSTEM PP-S
          CRD    CN 
          LDD    CN+2 
          STD    DA 
          LDD    PB 
          SHN    21-13
          PJN    TPP1        IF RETURN SPECIFIED PP-S REQUEST 
          LJM    TPP7        RETURN ALL NOS/VE PP-S 
  
*         RETURN SPECIFIED PP-S.
  
 TPP1     LDD    PB+3 
          ZJN    TPPX        IF NONE TO RETURN
          SBD    DA 
          SBN    1
          PJN    TPP13       IF REQUEST TOO LARGE 
  
 TPP2     LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 TPP3     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          LDD    CL 
          SHN    -6 
          RJM    VPN         VALIDATE PP NUMBER 
          NJN    TPP6        IF NOT ASSIGNED TO NOS/VE
          RJM    CPS         CHECK PARTNER STATUS 
          MJN    TPP4        IF ONLY REPLY NEEDED (PARTNER IS ASSIGNED) 
          NJN    TPP6        IF PP IS PSEUDO-ASSIGNED 
          LDD    T4          PP NUMBER
          LMC    10000
          RJM    SPB         SET LOWER PP BIT 
          RJM    DPL         DEADSTART PP AND LOAD *PPR*
 TPP4     LDN    0           CLEAR ERROR FLAG 
          STD    CL+4 
 TPP5     RJM    CPA         WRITE LIST ENTRY 
          ADD    LO 
          CWD    CL 
          LDD    CL+4 
          LMD    TH          CHECK IF *ESIR*
          ZJN    TPP9        IF ILLEGAL REQUEST 
          AOD    LO          INCREMENT OFFSET 
          SBD    PB+3 
          SBN    1
          PJN    TPP9        IF END OF LIST 
          LJM    TPP3        PROCESS NEXT PP
  
 TPP6     STD    PB+4 
          STD    CL+4 
          UJN    TPP5        WRITE LIST ENTRY 
  
*         RETURN ALL NOS/VE RESERVED PP-S.
  
 TPP7     LDN    0           INITIALIZE PP NUMBER 
          STD    CL 
 TPP8     LDD    CL 
          RJM    VPN         VALIDATE PP NUMBER 
          ZJN    TPP10       IF ASSIGNED TO NOS/VE
          LMN    ESPP 
          ZJN    TPP11       IF NOT END OF PP-S 
 TPP9     UJN    TPP12       RETURN 
  
 TPP10    LDD    T4          RETURN NOS/VE PP 
          LMC    10000
          RJM    SPB         SET LOWER PP BIT 
          RJM    DPL         DEADSTART PP AND LOAD PPR
 TPP11    AOD    CL          INCREMENT PP NUMBER
          SBN    12 
          NJN    TPP8        IF NOT PP 20 
          LDN    20          SET START OF UPPER BANK
          STD    CL 
          UJN    TPP8        PROCESS NEXT PP
  
 TPP12    LJM    TPPX        RETURN 
 TCH      SPACE  4,15 
**        FUNCTION 6 - RNCH - RETURN CHANNEL. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 54/0.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   LO, PB+4, T2, CL - CL+4. 
* 
*         CALLS  CPA, VTC.
  
  
 TCH11    LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 TCH      SUBR               ENTRY/EXIT 
          LDN    NCTAL       READ EJT ASSIGNMENT TABLE
          STD    T2 
          LDC    **          FWA OF CHANNEL EJT ASSIGNMENT TABLE
 TCHA     EQU    *-2
          CRM    CBUF,T2
          LDD    PB 
          SHN    21-13
          PJN    TCH1        IF TO RETURN SPECIFIED CHANNELS
          LJM    TCH7        RETURN ALL NOS/VE CHANNELS 
  
 TCH1     LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    TCHX        IF NONE TO BE RETURNED 
          SBN    NCTAL*5+1
          PJN    TCH11       IF TOO MANY CHANNELS TO BE RETURNED
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 TCH2     RJM    CPA         GET NEXT CHANNEL TO RETURN 
          ADD    LO 
          CRD    CL 
          LDD    CL 
          SHN    -6 
          STD    T2 
          SBN    MXNC+1 
          MJN    TCH3        IF VALID CHANNEL NUMBER
          LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          UJN    TCH4        WRITE PARAMETER LIST ENTRY 
  
 TCH3     LDM    NEJT 
          LMM    CBUF,T2
          ZJN    TCH5        IF CHANNEL IS NOS/VE RESERVED
          LDN    ESCH        SET CHANNEL NOT NOS/VE RESERVED STATUS 
 TCH4     STD    PB+4 
          UJN    TCH6        WRITE PARAMETER LIST ENTRY 
  
 TCH5     RJM    VTC         VE RETURN CHANNEL
*         LDN    0           CLEAR ERROR STATUS 
 TCH6     STD    CL+4 
          RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADD    LO 
          CWD    CL 
          LDD    CL+4 
          LMD    TH          CHECK IF *ESIR*
          ZJN    TCH10       IF ILLEGAL REQUEST 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          PJN    TCH10       IF END OF LIST 
          LJM    TCH2        PROCESS NEXT LIST ENTRY
  
*         RETURN ALL NOS/VE RESERVED CHANNELS.
  
 TCH7     LDN    0           INITIALIZE CHANNEL TABLE OFFSET
          STD    T2 
 TCH8     LDM    NEJT 
          LMM    CBUF,T2
          NJN    TCH9        IF CHANNEL NOT NOS/VE RESERVED 
          RJM    VTC         VE RETURN CHANNEL
 TCH9     AOD    T2          INCREMENT CHANNEL TABLE OFFSET 
          SBN    MXNC+1 
          MJN    TCH8        IF NOT END OF TABLE
 TCH10    LJM    TCHX        RETURN 
 SCM      SPACE  4,15 
**        FUNCTION 10 - STCM - STATUS OF NOS/VE CM. 
* 
*         ENTRY  (EIBA - EIBA+1) = *EICB* ADDRESS.
* 
*         EXIT   (PB LIST ENTRY) = 42/0, 18/NUMBER OF WORDS/1000B.
*                                = 12/0, 24/FWA/1000B, 24/LWA+1/1000B.
*                (PB+4) = ERROR STATUS. 
* 
*         USES   PB+4, CL - CL+4, CM - CM+4.
* 
*         CALLS  CPA, GCC, SEA. 
  
  
 SCM1     LDC    ESIL        SET INSUFFICIENT LENGTH STATUS 
          STD    PB+4 
  
 SCM      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK LENGTH 
          SBN    2
          MJN    SCM1        IF INSUFFICIENT LENGTH 
          LDN    ZERL        CLEAR RESPONSE 
          CRD    CL 
          RJM    GCC         GET CURRENT NUMBER OF NOS/VE CM WORDS
          LDD    CM+3 
          STD    CL+3 
          LDD    CM+4 
          STD    CL+4 
          RJM    SEA         GET ADDRESSES FROM *EICB*
          ADN    D7CM+1 
          CRD    CM 
          RJM    CPA         WRITE RESPONSE 
          ADN    1
          CWD    CL 
          ADN    1
          CWD    CM 
          UJN    SCMX        RETURN 
 SPP      SPACE  4,15 
**        FUNCTION 11 - STPP - STATUS OF NOS/VE PP-S. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/PP NUMBER, 54/0. 
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   DA, LO, PB+4, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA, VPN.
  
  
 SPP5     LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 SPP      SUBR               ENTRY/EXIT 
          LDN    PPUL        GET NUMBER OF SYSTEM PP-S
          CRD    CN 
          LDD    CN+2 
          STD    DA 
          LDD    PB+3        CHECK PARAMETER BLOCK LENGTH 
          ZJN    SPPX        IF NO REQUEST
          SBN    21D
          PJN    SPP5        IF LENGTH .GT. NUMBER OF SYSTEM PP-S 
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 SPP1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          LDD    CL 
          SHN    -6 
          RJM    VPN         VALIDATE PP NUMBER 
          NJN    SPP2        IF NOT ASSIGNED TO NOS/VE
          LDD    CM+4 
          ZJN    SPP3        IF NOT PSEUDO-ASSIGNED TO NOS/VE 
 SPP2     LDN    ESPP        SET PP NOT ASSIGNED STATUS 
          STD    PB+4 
 SPP3     STD    CL+4        SET ERROR STATUS 
          RJM    CPA         WRITE RESPONSE 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          MJN    SPP1        IF NOT END OF LIST 
          LJM    SPPX        RETURN 
 SCH      SPACE  4,10 
**        FUNCTION 12 - STCH - STATUS OF NOS/VE CHANNELS. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 54/0.
*                (NEJT) = NOS/VE EJT ORDINAL. 
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   LO, PB+4, T2, CL - CL+4. 
* 
*         CALLS  CPA. 
  
  
 SCH5     LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 SCH      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK PARAMETER BLOCK LENGTH 
          ZJN    SCHX        IF NO REQUEST
          SBN    NCTAL*5
          PJN    SCH5        IF LENGTH .GT. NUMBER OF CHANNELS
          LDN    NCTAL
          STD    LO 
          LDC    **          FWA OF CHANNEL EJT ASSIGNMENT TABLE
 SCHA     EQU    *-2
          CRM    CBUF,LO
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 SCH1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          LDD    CL 
          SHN    -6 
          STD    T2 
          SBN    MXNC+1 
          MJN    SCH2        IF VALID CHANNEL NUMBER
          LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
          UJN    SCH3        WRITE RESPONSE 
  
 SCH2     LDM    NEJT 
          LMM    CBUF,T2
          ZJN    SCH3        IF CHANNEL RESERVED BY NOS/VE
          LDN    ESCH        SET CHANNEL NOT RESERVED STATUS
          STD    PB+4 
 SCH3     STD    CL+4        SET ERROR STATUS 
          RJM    CPA         WRITE RESPONSE 
          ADD    LO 
          CWD    CL 
          LDD    CL+4 
          LMD    TH          CHECK IF *ESIR*
          ZJN    SCH4        IF ILLEGAL REQUEST 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          PJN    SCH4        IF END OF LIST 
          LJM    SCH1        PROCESS NEXT LIST ENTRY
  
 SCH4     LJM    SCHX        RETURN 
 SMR      SPACE  4,15 
**        FUNCTION 14 - STMR - STATUS AVAILABLE RESOURCES.
* 
*         EXIT   (PB LIST ENTRY) = 42/0, 18/NUMBER OF CM WORDS/1000B
*                                 AVAILABLE.
*                                = 54/0, 6/NUMBER OF PP-S AVAILABLE.
* 
*         USES   DA, DB, PB+4, T1, CL - CL+4, CM - CM+4.
* 
*         CALLS  CPA, GCC, GCP. 
  
  
 SMR6     LDC    ESIL        SET INSUFFICIENT LENGTH STATUS 
          STD    PB+4 
  
 SMR      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK BLOCK LENGTH 
          SBN    2
          MJN    SMR6        IF INSUFFICIENT LENGTH FOR REPLY 
          LDN    ZERL        CLEAR RESPONSE 
          CRD    CL 
          RJM    GCC         GET CURRENT NUMBER OF NOS/VE CM WORDS
          LDD    CM+3 
          STD    DA 
          STD    T1 
          LDD    CM+4 
          STD    DB 
          LDC    UEML        CHECK FOR UEM
          CRD    CM 
          LDD    CM+4 
          LPN    2
          ZJN    SMR2        IF UEM NOT PRESENT 
          LDD    CN+4        SUBTRACT CURRENT FROM BLOCK SIZE 
          SBD    DB 
          STD    CL+4 
          PJN    SMR1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    CL+4 
 SMR1     LDD    CN+3 
          SBD    T1 
          STD    CL+3 
          LJM    SMR5        SET RESPONSE 
  
 SMR2     LDC    MABL        GET MACHINE FL/100B
          CRD    CM 
          LDD    CM+2        FORM MACHINE FL/1000B
          LPN    7
          SHN    14 
          LMD    CM+3 
          ADN    7
          SHN    -3 
          STD    CM+3 
          SHN    -14
          SHN    3
          ADD    CM+2 
          SHN    -3 
          STD    CM+2 
          LDD    CN+1        FORM MACHINE FL - MINCM
          STD    T1 
          LDD    CM+3 
          SBD    CN+2 
          STD    CL+4 
          PJN    SMR3        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    CL+4 
 SMR3     LDD    CM+2 
          SBD    T1 
          STD    CL+3 
          LDD    DA          FORM BLOCK - CURRENT 
          STD    T1 
          LDD    CN+4 
          SBD    DB 
          STD    T2 
          PJN    SMR4        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    T2 
 SMR4     LDD    CN+3 
          SBD    T1 
          STD    T1 
          MJN    SMR5        IF BLOCK USED UP 
          LDD    T2          RETURN FL - MINCM + UNUSED BLOCK 
          RAD    CL+4 
          SHN    -14
          ADD    T1 
          RAD    CL+3 
  
*         SET UP RESPONSE.
  
 SMR5     LDD    CL+4        ROUND DOWN TO NEAREST 2000B
          SCN    1
          STD    CL+4 
          RJM    CPA         RETURN AVAILABLE CM
          ADN    1
          CWD    CL 
          LDN    0           CLEAR RESPONSE 
          STD    CL+3 
          RJM    GCP         GET CURRENT STATUS OF NOS/VE PP-S
          LDD    CM+2        RETURN TOTAL PP-S - DEDICATED - MINIMUM
          SBD    T5 
          SBN    MINP 
          ADD    T1          DO NOT COUNT PSEUDO-ASSIGNED PP-S
          STD    CL+4 
          RJM    CPA         RETURN AVAILABLE PP-S
          ADN    2
          CWD    CL 
          LJM    SMRX        RETURN 
          TITLE  SUBROUTINES. 
 APP      SPACE  4,15 
**        APP - ASSIGN PSEUDO-ASSIGNED PP.
* 
*         ENTRY  (LO) = CURRENT OFFSET IN PARAMETER LIST. 
*                (T1) = NUMBER OF PSEUDO-ASSIGNED PP-S. 
*                (T6) = PP REQUEST COUNT. 
* 
*         EXIT   (LO) = ADVANCED LIST ENTRY POINTER.
*                (T1) = DECREMENTED COUNT OF PSEUDO-ASSIGNED PP-S.
*                (T6) = DECREMENTED PP REQUEST COUNT. 
* 
*         USES   CL, LO, T1, T4, T5, T6, CM - CM+4. 
* 
*         CALLS  CPA. 
* 
*         NOTE - THIS ROUTINE DOES NOT CHECK FOR THE END OF THE PP
*         COMMUNICATION AREA.  IT EXPECTS TO FIND A PSEUDO-ASSIGNED PP. 
  
  
 APP      SUBR               ENTRY/EXIT 
          LDM    PPCA        GET PP COMMUNICATION AREA POINTER
          STD    T4 
          LDN    0           INITIALIZE PP NUMBER 
          STD    T5 
 APP1     AOD    T5          INCREMENT PP NUMBER
          LMN    12 
          NJN    APP2        IF NOT PP 12 
          LDN    20          SET PP 20
          STD    T5 
 APP2     LDN    10          READ NEXT INPUT REGISTER 
          RAD    T4 
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          LMC    3RP*V
          NJN    APP1        IF NOT *VP 
          LDD    CM+4 
          ZJN    APP1        IF NOT PSEUDO-ASSIGNED 
          LDD    T5          SET PP NUMBER IN REPLY 
          SHN    6
          STD    CL 
          RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
          LDN    0           CLEAR PSEUDO-ASSIGNED STATUS 
          STD    CM+4 
          LDD    T4          REWRITE INPUT REGISTER 
          CWD    CM 
          SOD    T6          DECREMENT REQUEST COUNT
          SOD    T1          DECREMENT PSEUDO-ASSIGNED COUNT
          LJM    APPX        RETURN 
 ARC      SPACE  4,45 
**        ARC - ADJUST REQUEST COUNT. 
* 
*         THIS ROUTINE ATTEMPTS TO SATISFY AS MUCH AS POSSIBLE OF 
*         THE CURRENT PP REQUEST WITH PSEUDO-ASSIGNED PP-S.  IF THE 
*         REQUEST IS FOR AN ODD NUMBER OF PP-S, ONE PSEUDO-ASSIGNED 
*         PP WILL BE USED, AND THE REQUEST CHANGED TO ONE FOR AN EVEN 
*         NUMBER OF PP-S.  EVEN REQUESTS WILL BE SATIFIED BY USING
*         PAIRS OF PSEUDO-ASSIGNED PP-S, UNTIL ANOTHER PAIR IS NOT
*         AVAILABLE, OR THE ENTIRE REQUEST IS SATISFIED.
* 
*         ENTRY  (T6) = PP REQUEST COUNT FROM PARAMETER BLOCK.
*                (T1) = NUMBER OF PP-S PSEUDO-ASSIGNED TO NOS/VE. 
*                (CF) = 0, IF NOT 810/830 WITH 20 PP-S. 
* 
*         EXIT   (T6) = ADJUSTED REQUEST COUNT. (REDUCED BY ANY 
*                       PSEUDO-ASSIGNED PP-S THAT WERE USED, OR 
*                       INCREASED BY 1, IF THE REQUEST IS FOR AN
*                       ODD NUMBER OF PP-S AND NO PSEUDO-ASSIGNED 
*                       PP-S ARE AVAILABLE).  THIS COUNT IS ALWAYS
*                       AN EVEN NUMBER. 
*                (DB) .NE. 0, IF PSEUDO-ASSIGNMENT REQUIRED.
* 
*                SEE *GCP* FOR OTHER EXIT CONDITIONS. 
* 
*         USES   DB, T6.
* 
*         CALLS  APP, GCP.
  
  
 ARC3     RJM    GCP         RESET CURRENT STATUS OF PP-S 
  
 ARC      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR PSEUDO-ASSIGNMENT FLAG 
          STD    DB 
          LDD    CF 
          ZJN    ARCX        IF NOT 810/830 WITH 20 PP-S
          LDD    T1 
          NJN    ARC1        IF PSEUDO-ASSIGNED PP-S
          LDD    T6 
          LPN    1
          ZJN    ARCX        IF REQUEST IS FOR EVEN NUMBER
          AOD    T6          MAKE REQUEST EVEN
          AOD    DB          SET PSEUDO-ASSIGNMENT REQUIRED 
          UJN    ARC3        RESET STATUS 
  
 ARC1     LDD    T6 
          LPN    1
          ZJN    ARC2        IF EVEN REQUEST
          RJM    APP         ASSIGN PSEUDO-ASSIGNED PP
 ARC2     LDD    T6 
          ZJN    ARC3        IF REQUEST IS SATISFIED
          LDD    T1 
          SBN    2
          MJN    ARC3        IF NO PAIR OF PSEUDO-ASSIGNED PP-S 
          RJM    APP         ASSIGN PSEUDO-ASSIGNED PP
          RJM    APP         ASSIGN PSEUDO-ASSIGNED PP
          UJN    ARC2        CHECK IF REQUEST SATISFIED 
 CAM      SPACE  4,15 
**        CAM - CALCULATE AVAILABLE MEMORY. 
* 
*         ENTRY  (NC) = SYSTEM CONTROL POINT NUMBER.
* 
*         EXIT   (DB) = HIGHEST CP/PCP NUMBER + 1.
*                (DC) = UNASSIGNED CM/100B (3777B IF UNASSIGNED 
*                       CM .GE. 131K).
*                *TCFL* BUILT.
* 
*         USES   DB, DC, CM - CM+4, CN - CN+4, SC - SC+4, T1 - T5.
* 
*         CALLS  CCA. 
  
  
 CAM      SUBR               ENTRY/EXIT 
          LDK    ACML        GET AVAILABLE CM 
          CRD    CM 
          LDN    0           INITIALIZE CP/PCP NUMBER 
          STD    DB 
          LDD    CM 
          SHN    14 
          LMD    CM+1 
          SBK    3777 
          PJN    CAM1        IF AVAILABLE CM .GE. 3777B 
          LDD    CM+1 
          UJN    CAM2        SET AVAILABLE CM 
  
 CAM1     LDC    3777        SET MAXIMUM AVAILABLE CM 
 CAM2     STD    DC 
 CAM3     AOD    DB          ADVANCE CP/PCP NUMBER
          LMD    NC 
          ZJN    CAM5        IF SYSTEM CP 
          LMD    NC 
          LMC    ** 
 CAMA     EQU    *-1         (NUMBER OF MCT ENTRIES)
          ZJN    CAMX        IF ALL CP-S/PCP-S PROCESSED
          LDD    DB          SET CP/PCP ADDRESS 
          RJM    CCA
          ADK    STSW 
          CRD    T1          READ STATUS WORD 
          ADN    JCIW-STSW
          CRD    SC          READ JOB CONTROL WORD
          ADK    FLSW-JCIW
          CRD    CM 
          ADK    TFSW-FLSW
          CRD    CN          READ EJT ORDINAL 
          LDD    CN 
          ZJN    CAM5        IF UNASSIGNED CP/PCP 
          LDD    SC+2 
          ZJN    CAM4        IF ROLLABLE JOB
          LDN    0
          UJN    CAM5        CLEAR *TCFL* ENTRY 
  
 CAM4     LDD    T1+2        SAVE CM FL + ROLLOUT STATUS
          LPN    1
          SHN    13-0 
          ADD    CM+4 
          ADD    CM          ADD NFL
 CAM5     STM    TCFL,DB
          UJP    CAM3        PROCESS NEXT CP/PCP
 CCA      SPACE  4,10 
**        CCA - COMPUTE CPA/PCPA ADDRESS. 
* 
*         ENTRY  (A) = CP/PCP NUMBER. 
*                (NC) = NUMBER OF CONTROL POINTS. 
* 
*         EXIT   (A) = CPA/PCPA ADDRESS.
  
  
 CCA1     ADD    NC 
          SHN    7
  
 CCA      SUBR               ENTRY/EXIT 
          SBD    NC 
          MJN    CCA1        IF CONTROL POINT 
          ZJN    CCA1        IF SYSTEM CONTROL POINT
          SHN    7
 CCAA     ADC    **          (PCP AREAS BASE ADDRESS) 
          UJN    CCAX        RETURN 
 CMS      SPACE  4,10 
**        CMS - CHECK MEMORY SIZE.
* 
*         ENTRY  (T6 - T7) = MEMORY TO REQUEST/1000B. 
*                (CN+1 - CN+2) = MINCM/1000B. 
* 
*         EXIT   (A) .LT. 0 IF REQUEST WILL NOT LEAVE THE 
*                MINCM VALUE FOR NOS. (65K MINIMUM REQUIRED IF
*                MINCM IS NOT SPECIFIED). 
* 
*         USES   T1 - T5. 
  
  
 CMS      SUBR               ENTRY/EXIT 
          LDC    MABL        GET CURRENT NOS CM SIZE/100B 
          CRD    T1 
          LDD    T1+2        FORM CURRENT CM/1000B
          LPN    7
          SHN    14 
          LMD    T1+3 
          ADN    7           ROUND TO NEXT THOUSAND 
          SHN    -3 
          STD    T1+3 
          SHN    -14
          SHN    3
          ADD    T1+2 
          SHN    -3 
          STD    T1+2 
          LDD    T6          COMPUTE NEW NOS CM SIZE/1000B
          STD    T1 
          LDD    T1+3 
          SBD    T7 
          STD    T2 
          PJN    CMS1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    T2 
 CMS1     LDD    T1+2 
          SBD    T1 
          STD    T1 
          MJN    CMSX        IF REQUEST TOO LARGE 
          LDD    CN+1        CHECK IF RESULT LEAVES .LT. MINCM
          STD    T3 
          LDD    T2 
          SBD    CN+2 
          PJN    CMS2        IF NO BORROW 
          AOD    T3          ADJUST FOR BORROW
 CMS2     LDD    T1 
          SBD    T3 
          LJM    CMSX        RETURN 
 CPS      SPACE  4,20 
**        CPS - CHECK PARTNER STATUS. 
* 
*         WHEN A NOS/VE PP IS RETURNED, IT MUST BE LEFT AS
*         PSEUDO-ASSIGNED IF IT-S PARTNER IS STILL ASSIGNED.
*         IF IT-S PARTNER IS PSEUDO-ASSIGNED, THEN BOTH CAN BE
*         RELEASED FOR USE BY NOS.
* 
*         ENTRY  (T4) = PP NUMBER.
*                (T3) = OFFSET INTO PP COMMUNICATION AREA.
*                (CM - CM+4) = INPUT REGISTER.
* 
*         EXIT   (A) = 0, IF PARTNER IS PSEUDO-ASSIGNED.
*                    = *ESPP*, IF PP BEING RETURNED IS PSEUDO-ASSIGNED. 
*                    .LT. 0, IF PARTNER IS STILL ASSIGNED.
* 
*         USES   CM+4, SC, SC+1, T5, T6.
* 
*         CALLS  DPL, SPB.
  
  
 CPS5     LDN    ESPP        SET PP NOT ASSIGNED ERROR STATUS 
  
 CPS      SUBR               ENTRY/EXIT 
          LDD    CF 
          ZJN    CPSX        IF NOT 810/830 WITH 20 PP-S
          LDD    CM+4 
          NJN    CPS5        IF PSEUDO-ASSIGNED 
          LDD    T4 
          SBN    12 
          PJN    CPS1        IF UPPER BANK
          ADN    12+20
          STD    T5          PARTNER PP NUMBER
          LDD    T3 
          ADK    10*12
          UJN    CPS2        READ INPUT REGISTER
  
 CPS1     SBN    6
          STD    T5          PARTNER PP NUMBER
          LDD    T3 
          SBK    10*12
 CPS2     STD    T6          OFFSET OF PARTNER-S INPUT REGISTER 
          ADM    PPCA 
          CRD    CN          READ PARTNER-S INPUT REGISTER
          LDD    CN+4 
          ZJN    CPS4        IF PARTNER IS ASSIGNED 
  
*         PARTNER IS PSEUDO-ASSIGNED.  IT CAN BE RELEASED 
*         FOR USE BY NOS. 
  
          LDD    T3          SAVE PARAMETERS
          STD    SC 
          LDD    T4 
          STD    SC+1 
          LDD    T5          RETURN PARTNER 
          STD    T4 
          LMC    10000       SET LOWER PP BIT 
          RJM    SPB
          LDD    T6 
          STD    T3 
          RJM    DPL         DEADSTART PP AND LOAD *PPR*
          LDD    SC          RESTORE PARAMETERS 
          STD    T3 
          LDD    SC+1 
          STD    T4 
          LDN    0
 CPS3     LJM    CPSX        RETURN 
  
*         PARTNER IS ASSIGNED.  SET THIS PP AS PSEUDO-ASSIGNED. 
  
 CPS4     AOD    CM+4        SET PSEUDO-ASSIGNED STATUS IN *IR* 
          LDM    PPCA 
          ADD    T3 
          CWD    CM 
          LCN    0
          UJN    CPS3        RETURN 
 CRZ      SPACE  4,15 
**        CRZ - CHECK REQUEST SIZE. 
* 
*         ENTRY  (CL+3 - CL+4) = REQUEST/1000B. 
*                (CM+3 - CM+4) = CURRENT NOS/VE MEMORY SIZE/1000B.
*                (CN+3 - CN+4) = RESERVED BLOCK SIZE/1000B. 
* 
*         EXIT   (A) .LT. 0 IF CURRENT SIZE + REQUEST LARGER THAN 
*                      BLOCK SIZE.
*                (A) .GE. 0 IF CURRENT SIZE + REQUEST IS WITHIN BLOCK.
*                (CL - CL+1) = (CURRENT SIZE + REQUEST)/1000B.
* 
*         USES   T1, CL - CL+1. 
  
  
 CRZ      SUBR               ENTRY/EXIT 
          LDD    CL+4        FORM NEW TOTAL 
          ADD    CM+4 
          STD    CL+1 
          SHN    -14
          ADD    CL+3 
          ADD    CM+3 
          STD    CL 
          STD    T1 
          LDD    CN+4        COMPARE TO BLOCK SIZE
          SBD    CL+1 
          PJN    CRZ1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
 CRZ1     LDD    CN+3 
          SBD    T1 
          UJN    CRZX        RETURN 
 CSS      SPACE  4,10 
**        CSS - CHANGE SCHEDULER STATUS.
* 
*         ENTRY  (A) = 0 IF TO ENABLE SCHEDULER.
*                    .NE. 0 IF TO DISABLE SCHEDULER.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 CSS      SUBR               ENTRY/EXIT 
          ZJN    CSS1        IF TO ENABLE 
          LDN    LIOS&LDOS
 CSS1     LMN    LDOS 
          STM    CSSA        SET SUBFUNCTION
          LDN    1
          STD    CM+1        SET COUNT
          STD    CM+2        SET NO DROP
          LDD    MA 
          CWM    CSSA,ON
          MONITOR  UADM 
          UJN    CSSX        RETURN 
  
 CSSA     CON    LIOS        INCREMENT FIELD BY ONE 
*         CON    LDOS        (DECREMENT)
          CON    INWL        WORD ADDRESS 
          CON    13D*100+1   BIT POSITION AND FIELD WIDTH 
          CON    0
          CON    0
 DPL      SPACE  4,15 
**        DPL - DEADSTART PP AND LOAD *PPR*.
* 
*         ENTRY  (T3) = OFFSET INTO PP COMMUNICATION AREA.
*                (T4) = PP NUMBER.
*                (EC) = ELEMENT CONNECT CODE. 
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
*                *PPR* AT PBUF+5. 
* 
*         EXIT   (A) .GT. 0 IF *PPR* SUCCESSFULLY LOADED. 
*                    = 0 IF *PPR* NOT SUCCESSFULLY LOADED.
*                BML MESSAGE ISSUED WITH PP NUMBER (SYMPTOM 
*                CODE INDICATES WHETHER OPERATION WAS SUCCESSFUL).
*                IF UNABLE TO COMPLETE DEADSTART/LOAD, THE PP 
*                IS IDLED AND ITS INPUT REGISTER SET TO ***.
* 
*         USES   T1 - T3, T6, T7, CN - CN+4.
* 
*         CALLS  IBM, IPP, NEC, PSC, SDC. 
* 
*         MACROS DCHAN, DELAY, PAUSE, READMR, WRITMR. 
  
  
 DPL9     LDD    T7 
          DCHAN              DROP CHANNEL 
          LDN    0           CLEAR CHANNEL ASSIGNED FLAG
          STM    CHFL 
          LDC    /COMSDFS/HS0113  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T4          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LDN    1           SET SUCCESSFUL LOAD STATUS 
  
 DPL      SUBR               ENTRY/EXIT 
          LDM    PPCA        SET PP INPUT REGISTER ADDRESS
          RAD    T3 
          LDN    10          INITIALIZE DEADSTART/LOAD ATTEMPT COUNT
          STD    T2 
          LDD    T3          SET UP *IA*, *OA*, *MA*, *CP* FOR THIS PP
          STM    PBUF+IA+5
          ADN    1
          STM    PBUF+OA+5
          ADN    1
          STM    PBUF+MA+5
          LDN    NCPL        SET SYSTEM CONTROL POINT ADDRESS 
          CRD    CN 
          AOD    CN+1 
          SHN    7
          STM    PBUF+CP+5
 DPL2     RJM    SDC         SELECT DEADSTART CHANNEL 
          RJM    PSC         PRESET CHANNEL INSTRUCTIONS
 DPLA     ACN    **+40       ACTIVATE CHANNEL 
  
*         DEADSTART PP. 
  
          READMR RBUF,,DEMR  READ EC REGISTER 
          LDM    RBUF+4      SET PP NUMBER
 DPLI     SCN    37 
*         SCN    77          (IF IOU MODEL I2)
          LMD    T4 
 DPLJ     LMN    0
*         LMN    40          (SET AUTO MODE BIT IF IOU MODEL I2)
          STM    RBUF+4 
          LDM    RBUF+5      SET CHANNEL NUMBER 
          SCN    37 
          LMD    T7 
          STM    RBUF+5 
          LDM    RBUF+6      SET LOAD MODE BIT
          SCN    37 
          ADN    20 
          STM    RBUF+6 
          LDM    RBUF+7      SET ENABLE BIT 
          SCN    40 
          ADN    40 
          STM    RBUF+7 
          WRITMR RBUF,,DEMR  WRITE EC REGISTER
          RJM    NEC         NORMALIZE EC REGISTER
  
*         LOAD *PPR*. 
  
          LDC    MSFW+1      OUTPUT START ADDRESS 
 DPLB     OAN    **+40
          DELAY 
 DPLC     EJM    DPL4,0      IF CHANNEL ACCEPTED WORD 
          LJM    DPL6        PROCESS TIME OUT 
  
 DPL4     LDC    PPFW-1 
 DPLD     OAM    PBUF+6,0    OUTPUT *PPR* 
 DPLE     SFM    DPL6,0      IF PARITY ERRORS 
 DPLF     DCN    **+40       DISCONNECT CHANNEL TO START PP 
  
*         WAIT FOR PP TO INITIALIZE.
* 
*         NOTE - THE DELAY MUST BE LONG ENOUGH TO ALLOW *PPR* 
*         PRESET TO COMPLETE (AND ISSUE THE *DPPM* TO CLEAR 
*         THE INPUT REGISTER).  IF A TIME OUT OCCURS HERE,
*         AND THE PP IS DEADSTARTED AGAIN AFTER IT IS ALREADY 
*         EXECUTING, THE RESULTS ARE UNPREDICTABLE. 
  
          LDD    TH          SET DELAY LOOP COUNT 
          STD    T6 
 DPL5     PAUSE  NE 
          DELAY 
          SOD    T6 
          ZJN    DPL7        IF TIME OUT
          LDD    T3          CHECK PP INPUT REGISTER
          CRD    CN 
          LDD    CN+1 
          SCN    77 
          SHN    6
          LMD    CN 
          LMC    3RP*V
          ZJN    DPL5        IF PP STILL ASSIGNED TO NOS/VE 
          LJM    DPL9        RETURN 
  
*         PROCESS TIME OUT AND PARITY ERRORS. 
  
 DPL6     BSS    0
 DPLG     DCN    **+40       DISCONNECT CHANNEL 
 DPL7     LDD    T7 
          DCHAN              DROP CHANNEL 
          LDN    0           CLEAR CHANNEL RESERVED FLAG
          STM    CHFL 
          SOD    T2          DECREMENT DEADSTART ATTEMPT COUNT
          ZJN    DPL8        IF DEADSTART NOT TO BE RETRIED 
          LJM    DPL2        ATTEMPT DEADSTART AGAIN
  
*         IDLE PP AND SET UNUSABLE IF UNABLE TO DEADSTART.
  
 DPL8     LDC    /COMSDFS/HS0120  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T4          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          RJM    IPP         IDLE PP
          LDD    T3 
          CWM    DPLH,ON     SET INPUT REGISTER TO ***
          LDN    0
          LJM    DPLX        RETURN 
  
 DPLH     VFD    18/3R***,42/0  INPUT REGISTER OF UNUSABLE PP 
 GCC      SPACE  4,10 
**        GCC - GET CURRENT NUMBER OF NOS/VE CM WORDS.
* 
*         ENTRY  (EIBA - EIBA+1) = *EICB* ADDRESS.
* 
*         EXIT   (CM+3  - CM+4) = NUMBER OF NOS/VE CM WORDS/1000B.
*                (CN - CN+4) = WORD *D7CM* FROM *EICB*. 
* 
*         USES   T1, CM - CM+4, CN - CN+4.
* 
*         CALLS  SEA. 
  
  
 GCC      SUBR               ENTRY/EXIT 
          RJM    SEA         SET *EICB* FWA 
          ADN    D7CM 
          CRD    CN          READ *D7CM*
          ADN    1
          CRD    CM          READ CURRENT FWA/LWA+1 
          LDD    CM+1        SUBTRACT TO FIND CURRENT NOS/VE CM 
          STD    T1 
          LDD    CM+4 
          SBD    CM+2 
          STD    CM+4 
          PJN    GCC1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    CM+4 
 GCC1     LDD    CM+3 
          SBD    T1 
          STD    CM+3 
          UJN    GCCX        RETURN 
 GCP      SPACE  4,10 
**        GCP - GET CURRENT STATUS OF PP-S. 
* 
*         ENTRY  (PPCA) = ADDRESS OF PP COMMUNICATION AREA. 
* 
*         EXIT   (T4) = NUMBER OF NOS/VE RESERVED PP-S. 
*                (T1) = NUMBER OF PSEUDO-ASSIGNED TO NOS/VE PP-S. 
*                (T5) = NUMBER OF DEDICATED PP-S. 
*                (CM+2) = NUMBER OF PP-S IN SYSTEM. 
* 
*         USES   T1, T2, T3, T4, T5, T7, CM - CM+4, CN - CN+4.
  
  
 GCP      SUBR               ENTRY/EXIT 
          LDN    PPUL        GET NUMBER OF PP-S IN SYSTEM 
          CRD    CM 
          LDD    CM+2 
          STD    T2 
          LDM    PPCA        GET PP COMMUNICATION AREA POINTER
          STD    T3 
          LDN    0
          STD    T1          INITIALIZE COUNT OF PSEUDO-ASSIGNED PP-S 
          STD    T4          INITIALIZE COUNT OF NOS/VE PP-S
          STD    T5          INITIALIZE COUNT OF DEDICATED PP-S 
 GCP1     LDN    0           INITIALIZE TABLE INDEX 
          STD    T7 
          LDD    T3          READ NEXT INPUT REGISTER 
          CRD    CN 
 GCP2     LDD    CN          CHECK FOR DEDICATED PP 
          LMM    TDPP,T7
          NJN    GCP3        IF NO MATCH
          LDD    CN+1 
          SCN    77 
          LMM    TDPP+1,T7
          NJN    GCP3        IF NO MATCH
          AOD    T5          COUNT DEDICATED PP 
          LDD    T7 
          NJN    GCP4        IF NOT NOS/VE PP 
          AOD    T4          COUNT NOS/VE PP
          LDD    CN+4 
          ZJN    GCP4        IF NOT PSEUDO-ASSIGNED 
          AOD    T1          COUNT PSEUDO-ASSIGNED PP 
          UJN    GCP4        READ NEXT INPUT REGISTER 
  
 GCP3     LDN    2           INCREMENT INDEX
          RAD    T7 
          SBN    TDPPL
          MJN    GCP2        IF NOT END OF TABLE
 GCP4     LDN    10          ADVANCE TO NEXT INPUT REGISTER 
          RAD    T3 
          SOD    T2 
          NJN    GCP1        IF MORE PP-S TO PROCESS
          LJM    GCPX        RETURN 
 TDPP     SPACE  4,10 
**        TDPP - TABLE OF DEDICATED PP-S. 
* 
*         TWO WORD ENTRY. 
* 
*T,       18/NAME OF DEDICATED PP ROUTINE, 6/0
* 
*         NOTE - **VP* MUST BE THE FIRST ENTRY IN THE TABLE.
  
  
 TDPP     BSS    0           TABLE OF DEDICATED PP-S
          VFD    24/3L*VP    NOS/VE PP
          VFD    24/0LMTR 
          VFD    24/0LDSD 
          VFD    24/0LDIS 
          VFD    24/0LO26 
          VFD    24/0L1CD 
          VFD    24/0L1HP 
          VFD    24/0L1XM 
          VFD    24/0L1TS 
          VFD    24/0L1TN 
          VFD    24/0L1TM 
          VFD    24/0LPIP 
          VFD    24/0LNDR 
          VFD    24/0LDFT 
          VFD    24/0LSCD 
          VFD    24/0LSCI 
          VFD    24/0LCPD 
          VFD    24/0LMDD 
          VFD    24/0LMTE 
          VFD    24/3L*** 
  
 TDPPL    EQU    *-TDPP      LENGTH OF DEDICATED PP TABLE 
 IPP      SPACE  4,15 
**        IPP - IDLE PP.
* 
*         ENTRY  (T3) = PP INPUT REGISTER ADDRESS.
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
*                (EC) = ELEMENT CONNECT CODE FOR IDLE PP. 
* 
*         EXIT   (A) = 0 IF PP IDLED. 
*                    .LT. 0 IF UNABLE TO IDLE.
*                (T5) = PP NUMBER.
*                BML MESSAGE ISSUED IF UNABLE TO IDLE.
* 
*         USES   T1, T2, T5, CN - CN+4. 
* 
*         CALLS  IBM, NEC.
* 
*         MACROS DELAY, LOCKMR, PAUSE, READMR, WRITMR.
  
  
 IPP      SUBR               ENTRY/EXIT 
          LDD    T3          COMPUTE NUMBER OF PP 
          SBM    PPCA 
          SHN    -3 
          STD    T5 
          SBN    12 
          MJN    IPP1        IF PP NUMBER .LT. 12 
          ADN    12+6 
          STD    T5 
 IPP1     READMR RBUF,,DEMR  READ EC REGISTER 
          LDM    RBUF+4      SET PP NUMBER
 IPPA     SCN    37 
*         SCN    77          (IF IOU MODEL I2)
          LMD    T5 
 IPPB     LMN    0
*         LMN    40          (SET AUTO MODE BIT IF IOU MODEL I2)
          STM    RBUF+4 
          LDM    RBUF+6      SET IDLE MODE BIT, K REGISTER (10B)
          SCN    37 
          ADN    6
          STM    RBUF+6 
          LDM    RBUF+7      SET ENABLE BIT 
          SCN    40 
          ADN    40 
          STM    RBUF+7 
          LDN    10          INITIALIZE TIME OUT COUNT
          STD    T2 
  
*         LOOP UNTIL PP IS IDLED. 
  
 IPP2     LOCKMR SET         GET LONG TERM INTERLOCK
          WRITMR RBUF,,DEMR  WRITE EC REGISTER
          READMR IBUF,,ISTR  READ INPUT STATUS REGISTER 
          LOCKMR CLEAR       CLEAR LONG TERM INTERLOCK
          LDM    IBUF+4      CHECK IF PP IN IDLE MODE 
          LPN    3
          SHN    10 
          ADM    IBUF+5 
          SHN    10 
          ADM    IBUF+6 
          LMC    107700 
          ZJP    IPP4        IF PP IDLING 
          SOD    T2 
          ZJN    IPP3        IF TIME OUT
          PAUSE  NE 
          DELAY 
          LJM    IPP2        LOOP 
  
*         ISSUE BML MESSAGE.
  
 IPP3     LDC    /COMSDFS/HS0121  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T5          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LDD    T3          SET *** IN INPUT REGISTER
          CWM    DPLH,ON
          RJM    NEC         NORMALIZE EC REGISTER
          LCN    1
          LJM    IPPX        RETURN 
  
*         NORMALIZE EC REGISTER.
  
 IPP4     RJM    NEC         NORMALIZE EC REGISTER
          LDN    0
          LJM    IPPX        RETURN 
 PSC      SPACE  4,10 
**        PSC - PRESET CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (T7) = CHANNEL NUMBER. 
* 
*         EXIT   CHANNEL INSTRUCTIONS MODIFIED. 
* 
*         USES   T1, T5.
  
  
 PSC      SUBR               ENTRY/EXIT 
          LDC    TPSC-1      INITIALIZE CHANNEL TABLE ADDRESS 
          STD    T1 
 PSC1     AOD    T1          ADVANCE CHANNEL TABLE
          LDI    T1 
          ZJN    PSCX        IF END OF TABLE
          STD    T5          MODIFY CHANNEL INSTRUCTION 
          LDI    T5 
          SCN    37 
          LMD    T7 
          STI    T5 
          UJN    PSC1        LOOP 
  
  
**        TPSC - TABLE OF CHANNEL INSTRUCTIONS. 
  
 TPSC     BSS    0
          CON    DPLA 
          CON    DPLB 
          CON    DPLC 
          CON    DPLD 
          CON    DPLE 
          CON    DPLF 
          CON    DPLG 
          CON    MREA 
          CON    0           END OF TABLE 
 RDM      SPACE  4,10 
**        RDM - RETURN DYNAMIC MEMORY.
* 
*         ENTRY  (CN - CN+1) = CURRENT NOS/VE MEMORY/1000B. 
*                (CM+3 - CM+4) = AMOUNT TO RETURN/1000B.
*                (CL - CL+1) = NEW NOS/VE MEMORY SIZE/1000B.
*                (CN+3 - CN+4) = RESERVED BLOCK SIZE/1000B. 
* 
*         USES   T1 - T1+4, T6, T7. 
* 
*         CALLS  RST, SBA.
  
  
 RDM      SUBR               ENTRY/EXIT 
          LDD    CN+3 
          STD    T1 
          LDD    CL+1 
          SBD    CN+4 
          PJN    RDM1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
 RDM1     LDD    CL 
          SBD    T1 
          MJN    RDM2        IF NEW TOTAL WITHIN BLOCK
          LDD    CM+3        RETURN ENTIRE REQUEST
          STD    T6 
          LDD    CM+4 
          STD    T7 
          UJN    RDM4        RETURN MEMORY
  
 RDM2     LDD    CN+3 
          STD    T1 
          LDD    CN+1 
          SBD    CN+4 
          STD    T7 
          PJN    RDM3        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    T7 
 RDM3     LDD    CN 
          SBD    T1 
          STD    T6 
          MJN    RDMX        IF NO DYNAMIC MEMORY ASSIGNED
 RDM4     LDC    UEML        CHECK FOR UEM PRESENT
          CRD    T1 
          LDD    T1+4 
          LPN    2
          NJN    RDM5        IF UEM PRESENT 
          RJM    SBA         SET OS BOUNDS ADDRESS
 RDM5     LDD    HN          RETURN MEMORY
          RJM    RST
          LJM    RDMX        RETURN 
 ROJ      SPACE  4,10 
**        ROJ - ROLLOUT JOBS. 
* 
*         ENTRY  (BS) = MEMORY REQUIRED THAT WAS UNAVAILABLE. 
*                SCHEDULER DISABLED BIT SET IN *INWL*.
* 
*         EXIT   (A) .LT. 0 IF ROLLOUTS WILL NOT MAKE THE REQUIRED
*                AMOUNT OF MEMORY AVAILABLE.
* 
*         USES   DB, DC, CM - CM+4. 
* 
*         CALLS  CAM, SRR.
* 
*         MACROS MONITOR. 
  
  
 ROJ4     LCN    0           INDICATE INSUFFICIENT MEMORY OBTAINED
  
 ROJ      SUBR               ENTRY/EXIT 
 ROJ1     PAUSE  NE 
          LDK    JSCL        WAIT FOR SCHEDULER NOT ACTIVE
          CRD    CM 
          LDD    CM 
          SHN    21-13
          MJN    ROJ1        IF SCHEDULER ACTIVE
          RJM    CAM         CALCULATE AVAILABLE MEMORY 
  
*         ROLLOUT JOBS. 
  
 ROJ2     SOD    DB          DECREMENT CP/PCP NUMBER
          ZJN    ROJ4        IF ALL CP-S/PCP-S PROCESSED
          LDM    TCFL,DB
          ZJN    ROJ2        IF CP/PCP UNASSIGNED 
          SHN    21-13
          MJN    ROJ3        IF ROLLOUT ALREADY REQUESTED 
          RJM    SRR         REQUEST ROLLOUT
          MJN    ROJ2        IF REQUEST REJECTED
 ROJ3     LDM    TCFL,DB
          LPC    3777 
          RAD    DC          ADD TO AVAILABLE MEMORY
          SHN    -3 
          SBD    BS 
          PJN    ROJX        IF ENOUGH CM AVAILABLE 
          UJN    ROJ2        PROCESS NEXT CP/PCP
 RST      SPACE  4,10 
**        RST - REQUEST STORAGE.
* 
*         ENTRY  (A) = 0 IF REQUEST MEMORY. 
*                    = 100 IF RETURN MEMORY.
*                (T6 - T7) = MEMORY TO REQUEST OR RETURN/1000B. 
* 
*         EXIT   (A) = MEMORY UNAVAILABLE/1000B IF UNABLE TO OBTAIN 
*                      TOTAL REQUEST. 
*                MEMORY IS ASSIGNED TO OR RELEASED FROM NOS/VE AND
*                *MABL* IS UPDATED TO REFLECT THE NEW MACHINE FL
*                FOR NOS. 
* 
*         USES   BS, NC, T2, T6, T7, CM - CM+4. 
* 
*         CALLS  CSS, ROJ.
* 
*         MACROS MONITOR, PAUSE.
  
  
 RST5     RJM    CSS         ENABLE SCHEDULER 
          LDN    0
  
 RST      SUBR               ENTRY/EXIT 
          ADC    LDNI 
          ERRNZ  LDNI+100-LCNI  CODE DEPENDS ON VALUE 
          STM    RSTA 
          LDC    377         SET MAXIMUM BLOCK SIZE 
          STD    BS 
          LDK    NCPL        SET SYSTEM CP NUMBER 
          CRD    CM 
          AOD    CM+1 
          STD    NC 
          LDN    1
          RJM    CSS         DISABLE SCHEDULER
 RST1     LDD    T6          CHECK REMAINING REQUEST
          SHN    14 
          LMD    T7 
          ZJN    RST5        IF NO MORE REQUIRED
          SBD    BS 
          MJN    RST2        IF .LT. 131K REQUIRED
          STD    T7          SAVE REMAINING REQUEST 
          SHN    -14
          STD    T6 
          UJN    RST3        REQUEST 131K 
  
 RST2     RAD    BS 
          LDN    0           CLEAR REMAINING REQUEST
          STD    T6 
          STD    T7 
 RST3     LDN    0
 RSTA     EQU    RST3 
*         LCN    0           (RETURNING MEMORY) 
          LMD    BS 
          SHN    3           SET REQUEST / 100B 
          STD    CM+1 
          LDC    200         SET NOS/VE TYPE
          STD    CM+2 
          MONITOR  RSTM      REQUEST STORAGE
          LDD    CM+1 
          ZJN    RST1        IF REQUEST HONORED 
          RJM    ROJ
          PJN    RST3        IF MEMORY AVAILABLE
          LDN    0           ENABLE SCHEDULER 
          RJM    CSS
          LDD    T6          SET AMOUNT UNAVAILABLE 
          SHN    14 
          ADD    T7 
          ADD    BS 
          LJM    RSTX        RETURN 
 SBA      SPACE  4,10 
**        SBA - SET OS BOUNDS ADDRESS.
* 
*         ENTRY  (CL - CL+1) = NEW NOS/VE SIZE/1000B. 
*                (EC) = IOU CONNECT CODE. 
*                *UEM* MUST NOT BE DEFINED FOR *NOS*. 
* 
*         EXIT   PP OS BOUNDS ADDRESS SET TO FWA OF NOS/VE CM.
* 
*         USES   T1, T2, T3, CN - CN+4. 
* 
*         CALLS  SEA. 
* 
*         MACROS LOCKMR, READMR, WRITMR.
  
  
 SBA      SUBR               ENTRY/EXIT 
          LOCKMR SET
          READMR RBUF,,IOSB  FETCH CURRENT OS BOUNDS DATA 
          RJM    SEA         READ LWA+1 OF NOS/VE CM
          ADN    D7CM+1 
          CRD    CN 
          LDD    CL          CALCULATE NEW FWA OF NOS/VE CM 
          STD    T1 
          LDD    CN+4 
          SBD    CL+1 
          STD    T2 
          PJN    SBA1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    T2 
 SBA1     LDD    CN+3 
          SBD    T1 
          STD    T1 
          ZJN    SBA2        IF ADDRESS/1000B = 0XXXXB (.LT. 16MB)
          LDN    1           SET ADDRESS/1000B TO 10000B (16MB) 
          STD    T1 
          LDN    0
          STD    T2 
 SBA2     LDD    T2          FORM OS BOUNDS ADDRESS/2000B 
          SHN    -1 
          STM    RBUF+7 
          SHN    -8D
          STD    T2 
          LDD    T1 
          SHN    3
          LMD    T2 
          STM    RBUF+6 
          READMR IBUF,,DEMR  READ EC REGISTER 
          LDM    IBUF+7      CLEAR OS BOUNDS ENABLE 
          STD    T2 
          SCN    10 
          STM    IBUF+7 
          WRITMR IBUF 
 SBAA     UJN    SBA3        (NO CPP-S IN SYSTEM OR MODEL 42 IOU) 
*         PSN                (CPP-S IN SYSTEM AND NOT MODEL 42 IOU) 
          READMR MBUF,,ECCR  READ CIO EC REGISTER 
          LDM    MBUF+7      CLEAR OS BOUNDS ENABLE 
          STD    T3 
          SCN    10 
          STM    MBUF+7 
          WRITMR MBUF 
 SBA3     WRITMR RBUF,,IOSB  WRITE NEW OS BOUNDS
          LDD    T2          RESTORE EC REGISTER
          STM    IBUF+7 
          WRITMR IBUF,,DEMR 
 SBAB     UJN    SBA4        (NO CPP-S IN SYSTEM OR IOU MODEL 42) 
*         PSN                (CPP-S IN SYSTEM AND NOT IOU MODEL 42) 
          LDD    T3          RESTORE EC REGISTER
          STM    MBUF+7 
          WRITMR MBUF,,ECCR 
 SBA4     LOCKMR CLEAR
          LJM    SBAX        RETURN 
 SDA      SPACE  4,10 
**        SDA - SET *EICB* CM ADDRESSES.
* 
*         ENTRY (CL - CL+1) = NUMBER OF CM WORDS/1000B TO BE RESERVED 
*                             FOR NOS/VE. 
*               (EIBA - EIBA+1) = *EICB* ADDRESS. 
* 
*         EXIT   (CN - CN+4) = WORD *D7CM* OF *EICB*. 
*                           = 12/0, 24/FWA/1000B, 24/LWA+1/1000B. 
* 
*         USES   T1, CN - CN+4. 
* 
*         CALLS  SEA. 
  
  
 SDA      SUBR               ENTRY/EXIT 
          RJM    SEA         GET CURRENT CM ADDRESSES FROM *EICB* 
          ADN    D7CM+1 
          CRD    CN 
          LDD    CL          SUBTRACT NEW TOTAL FROM LWA+1
          STD    T1 
          LDD    CN+4 
          SBD    CL+1 
          STD    CN+2        SET NEW FWA
          PJN    SDA1        IF NO BORROW 
          AOD    T1          ADJUST FOR BORROW
          AOD    CN+2 
 SDA1     LDD    CN+3 
          SBD    T1 
          STD    CN+1 
          RJM    SEA         WRITE NEW CM ADDRESSES TO *EICB* 
          ADN    D7CM+1 
          CWD    CN 
          UJN    SDAX        RETURN 
 SPB      SPACE  4,15 
**        SPB - SET PP BOUNDS BIT.
* 
*         ENTRY  (A) = 6/BIT VALUE, 12/PP NUMBER. 
*                      BIT VALUE = 1 TO SET LOWER PP. 
*                                = 0 TO SET UPPER PP. 
*                (EC) = IOU CONNECT CODE. 
*                (SPBA) = BARREL CONFIGURATION. 
*                (SPBB) = NUMBER OF BARRELS.
* 
*         EXIT   PP OS BOUNDS REGISTER SET FOR GIVEN PP.
* 
*         USES   T2, T7.
* 
*         MACROS LOCKMR, READMR, WRITMR.
  
  
 SPB      SUBR               ENTRY/EXIT 
          STD    T7          SAVE LOGICAL PP NUMBER 
          SHN    -14
          STM    SPBE        SAVE BOUNDS BIT VALUE
          LDN    0
          STD    T2 
          LDD    T7 
          SBN    20 
          MJN    SPB1        IF IN LOWER 10 PP-S
          STD    T7 
          AOD    T2 
          AOD    T2 
 SPB1     LDD    T7 
          SBN    5
          MJN    SPB2        IF IN LOWER BARREL OF THE TWO
          STD    T7 
          AOD    T2 
 SPB2     LDD    T2 
 SPBA     ADN    ** 
*         ADN    0           (BARREL RECONFIGURATION) 
*         ADN    1
*         ADN    2
*         ADN    3
          STD    T2 
 SPBB     SBN    ** 
*         SBN    1           (NUMBER OF BARRELS)
*         SBN    2
*         SBN    3
*         SBN    4
          MJN    SPB3        IF NO OVERFLOW 
          STD    T2 
          ERRNZ  SHNI-1000   CANNOT USE DIRECT CELL *TH*
 SPB3     LDD    TH          SET SHIFT COUNT
          ADD    T7 
          STM    SPBC 
          STM    SPBF 
          LOCKMR SET
          READMR RBUF,,IOSB  READ CURRENT OS BOUNDS DATA
          LDM    RBUF,T2
          STM    SPBD 
          LCN    1
 SPBC     SHN    ** 
          LPC    ** 
 SPBD     EQU    *-1
          STM    RBUF,T2
          LDC    ** 
 SPBE     EQU    *-1
 SPBF     SHN    ** 
          LMM    RBUF,T2     ADD NEW BIT TO REGISTER DATA 
          STM    RBUF,T2
          WRITMR RBUF        SET NEW OS BOUNDS REGISTER 
          LOCKMR CLEAR
          LJM    SPBX        RETURN 
 VPN      SPACE  4,10 
**        VPN - VALIDATE PP NUMBER. 
* 
*         ENTRY  (A) = PP NUMBER. 
*                (DA) = NUMBER OF SYSTEM PP-S.
* 
*         EXIT   (A) = 0, IF ASSIGNED TO NOS/VE.
*                    = *ESIR*, IF INCORRECT NUMBER. 
*                    = *ESPP*, IF NOT ASSIGNED TO NOS/VE. 
*                (T3) = PP OFFSET INTO COMMUNICATION AREA.
*                (T4) = PP NUMBER.
*                (CM - CM+4) = INPUT REGISTER.
* 
*         USES   T3, T4, CM - CM+4. 
  
  
 VPN3     LDD    T4 
 VPN4     SHN    3
          STD    T3 
          LDM    PPCA        CHECK IF ASSIGNED TO NOS/VE
          ADD    T3 
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          LMC    3RP*V
          ZJN    VPNX        IF ASSIGNED TO NOS/VE
          LDN    ESPP        SET ERROR CODE 
  
 VPN      SUBR               ENTRY/EXIT 
          STD    T4 
          SBN    10D
          MJN    VPN3        IF LOWER BANK PP 
          LDD    DA 
          SBN    11D
          PJN    VPN2        IF UPPER PP-S EXIST ON SYSTEM
 VPN1     LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          UJN    VPNX        RETURN 
  
 VPN2     LDD    T4 
          SBN    20 
          MJN    VPN1        IF 12 .LE. PP NUMBER .LE. 17 
          ADC    20-32
          PJN    VPN1        IF PP NUMBER .GT. 31 
          ADN    32-6 
          LJM    VPN4        RETURN 
          SPACE  4,10 
**        CODE PAST THIS POINT MAY BE OVERLAID BY *PBUF*. 
* 
*         *PBUF* IS USED ONLY FOR THE *RPP* FUNCTION. 
*         *PBUF* MUST HAVE TWO RESERVED WORDS PRECEEDING IT FOR DISK
*         LINKAGE BYTES.
  
          ERRNG  PBUF-*-2    ERROR IF PBUF OVERLAYS EARLIER CODE
          TITLE  SUBROUTINES OVERLAYABLE BY *PBUF*. 
 DCA      SPACE  4,10 
**        DCA - DETERMINE CHANNEL AVAILABILITY. 
* 
*         ENTRY  (T2) = CHANNEL NUMBER. 
*                (RBUF - RBUF+NCTAL*5) = CHANNEL STATUS TABLE.
* 
*         EXIT   (A) = 0 IF CHANNEL PREVIOUSLY ASSIGNED.
*                (CM+1) .NE. 0 IF CHANNEL ASSIGNED. 
* 
*         USES   T3, T4, CM - CM+4. 
* 
*         CALLS  SEC, VRC.
* 
*         MACROS MONITOR. 
  
  
 DCA      SUBR               ENTRY/EXIT 
          LDM    RBUF,T2
          SHN    21-5 
          PJN    DCA1        IF CHANNEL IS UP 
          LJM    DCA8        CHECK EQUIPMENT ON DOWN CHANNEL
  
*         CHANNEL IS UP.  SEARCH FOR EQUIPMENT CONFIGURED ON IT.
  
 DCA1     LDD    T2          CHECK IF CONSOLE CHANNEL 
          LMN    CHDS 
          ZJN    DCA4        IF CONSOLE CHANNEL 
          LDD    T2 
          SBN    20 
          MJN    DCA2        IF CHANNEL 0-17B 
          SBN    40-20
          PJN    DCA4        IF CHANNEL ABOVE 37B 
 DCA2     ADN    4
          PJN    DCA4        IF REQUESTED 14B-17B OR OVER 33B 
 DCA3     LDD    LE 
          RJM    SEC         SEARCH FOR EQUIPMENT ON THIS CHANNEL 
          ZJN    DCA6        IF NO EQUIPMENT FOUND
 DCA4     LDN    0           SET CHANNEL NOT ASSIGNED 
          STD    CM+1 
          LDN    1
 DCA5     UJN    DCAX        RETURN 
  
 DCA6     STD    CM+1        CLEAR EST ORDINAL
          STD    CM+4        CLEAR MUX FLAG 
          LDN    DNCS        SET SUBFUNCTION
          STD    CM+2 
          LDD    T2          SET CHANNEL NUMBER 
          STD    CM+3 
          MONITOR  SEQM      DOWN UNCONFIGURED CHANNEL
 DCA7     RJM    VRC         VE RESERVE CHANNEL 
          LDD    T4 
          UJN    DCA5        RETURN 
  
*         CHANNEL IS DOWN.  CHECK FOR NON-TRANSFERRABLE EQUIPMENT.
  
 DCA8     LDD    LE 
 DCA9     RJM    SEC         SEARCH FOR EQUIPMENT ON THIS CHANNEL 
          PJN    DCA7        IF NO EQUIPMENT FOUND
          LDN    0           INITIALIZE TABLE INDEX 
          STD    T4 
 DCA10    LDM    TEQT,T4
          ZJN    DCA3        IF END OF TABLE
          LMD    CM+3 
          LPC    3777 
          ZJN    DCA9        IF EQUIPMENT IS TRANSFERRABLE
          AOD    T4 
          UJN    DCA10       CHECK NEXT TABLE ENTRY 
  
 TEQT     SPACE  4,10 
**        TEQT - TABLE OF TRANSFERRABLE EQUIPMENT.
* 
*         ONE WORD ENTRY. 
* 
*T        12/2RMN 
*         MN = MNEMONIC OF EQUIPMENT THAT MAY BE TRANSFERRED TO NOS/VE. 
  
  
 TEQT     BSS    0           TABLE OF TRANSFERRABLE EQUIPMENT 
          VFD    12/2RAT
          VFD    12/2RCT
          VFD    12/2RMT
          VFD    12/2RNT
          VFD    12/2RDJ
          VFD    12/2RDL
          VFD    12/2RDM
          VFD    12/2RDQ
          VFD    12/0        END OF TABLE 
 SEC      SPACE  4,15 
**        SEC - SEARCH FOR EQUIPMENT ON SPECIFIED CHANNEL.
* 
*         ENTRY  (A) = EST ORDINAL+1 FROM WHICH TO START SEARCH.
*                    = 0 IF (T3) = STARTING EST ORDINAL+1.
*                (T2) = CHANNEL NUMBER. 
* 
*         EXIT   (A) = 0 IF NONE FOUND. 
*                    = (T3) = EST ORDINAL OF EQUIPMENT FOUND. 
*                (CM - CM+4) = EST ENTRY WORD *EQDE*. 
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 SEC3     LDD    T3          RETURN EST ORDINAL 
  
 SEC      SUBR               ENTRY/EXIT 
          ZJN    SEC1        IF NOT INITIAL CALL
          STD    T3          SAVE EST ORDINAL 
 SEC1     SOD    T3          DECREMENT EST ORDINAL
          SBN    NOPE-1 
          ZJN    SECX        IF END OF EST
          SFA    EST,T3 
          ADK    EQDE 
          CRD    CM          READ EST ENTRY 
          LDD    CM+3 
          ZJN    SEC1        IF NULL ENTRY
          LMC    2RDE 
          ZJN    SEC1        IF *DE* EQUIPMENT
          LDN    CM 
          STD    T1 
 SEC2     AOD    T1 
          LMN    CM+3 
          ZJN    SEC1        IF BOTH CHANNELS CHECKED 
          LDI    T1 
          ZJN    SEC2        IF CHANNEL NOT PRESENT 
          LMD    T2 
          LPN    77 
          ZJN    SEC3        IF CHANNEL MATCH 
          UJN    SEC2        CHECK NEXT CHANNEL 
 SRR      SPACE  4,10 
**        SRR - SET ROLLOUT REQUEST.
* 
*         ENTRY  (DB) = NUMBER OF CP/PCP TO ROLL. 
* 
*         EXIT   (A) .GE. 0 IF ROLLOUT REQUEST ACCEPTED.
* 
*         USES   T1, CM - CM+4. 
* 
*         MACROS DELAY, MONITOR, PAUSE. 
  
  
 SRR2     PAUSE  NE 
          DELAY  1*8D        1 MS DELAY 
          SOD    T1          DECREMENT RETRY COUNT
          PJN    SRR1        IF NOT END OF RETRIES
  
 SRR      SUBR               ENTRY/EXIT 
          LDD    HN          SET RETRY LIMIT
          STD    T1 
 SRR1     LDD    DB          SET CP/PCP NUMBER IN *ROCM* REQUEST
          STD    CM+2 
          LDC    4000+ROSR   SELECT ALTERNATE CP/PCP, SCHEDULER ROLLOUT 
          STD    CM+1 
          MONITOR  ROCM      ROLLOUT JOB
          LDD    CM+1 
          NJN    SRR2        IF REQUEST REJECTED
          UJN    SRRX        RETURN 
          TITLE  PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET VIRTUAL ENVIRONMENT REQUEST PROCESSOR. 
* 
*         EXIT   (PB - PB+4) = FIRST WORD OF PARAMETER BLOCK. 
*                (VERA) = FUNCTION PROCESSOR ADDRESS. 
*                (A) = 0 IF DUAL STATE ENABLED. 
*                    = ERROR CODE IF DUAL STATE NOT ENABLED.
*                (EC) = IOU CONNECT CODE. 
*                (CF) .NE. 0, IF CYBER 180-810/830 WITH 20 PP-S.
*                     = 0 FOR ALL OTHER CONFIGURATIONS. 
*                (LE) = LAST EST ORDINAL. 
*                (CAMA) = NUMBER OF CP-S + PCP-S + 2. 
*                (SEAA - SEAA+1) = FWA OF *EICB*. 
*                (NEJT) = NOS/VE EJT ORDINAL. 
*                (CHAA - CHAA+1) = (SCHA - SCHA+1) = (TCHA - TCHA+1) =
*                FWA OF CHANNEL EJT ASSIGNMENT TABLE. 
*                (PPCA) = ADDRESS OF PP COMMUNICATION AREA. 
*                CALLER AND PARAMETER BLOCK VALIDATED.
* 
*         ERROR  ABORT IF ANY OF THE FOLLOWING IS NOT TRUE -
*                    CALLER-S SUBSYSTEM IDENTIFICATION NUMBER = *NVSI*. 
*                    AUTO RECALL SPECIFIED. 
*                    COMPLETION BIT IN PARAMETER BLOCK NOT SET. 
*                    PARAMETER BLOCK WITHIN FIELD LENGTH. 
*                    LEGAL *VER* FUNCTION CODE SPECIFIED. 
* 
*         USES   CF, LE, CM - CM+4, CN - CN+4, PB - PB+4. 
* 
*         CALLS  CPA, CRS, SRI. 
* 
*         MACROS ABORT, MONITOR.
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDK    PCPP        SET FWA OF PCPA-S
          CRD    CM 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          SBK    200B 
          STM    CCAA+1 
          SHN    -14
          RAM    CCAA 
          LDD    CM+2        SET NUMBER OF CP-S + PCP-S + 2 
          STM    CAMA 
          LDD    CP          CHECK SUBSYSTEM ID OF CALLER 
          ADN    JCIW 
          CRD    CN 
          LDD    CN+2 
          ADC    -NVSI
          ZJN    PRS1        IF CORRECT SUBSYSTEM 
          ABORT  ERIR        * VER - ILLEGAL USER ACCESS.*
  
 PRS1     RJM    CRS         CHECK RECALL STATUS
          ZJN    PRS2        IF NO AUTO RECALL
          LDN    1           VALIDATE FWA 
          STD    PB+3 
          RJM    CPA         CHECK PARAMETER BLOCK ADDRESS
          CRD    PB 
          RJM    CPA         VERIFY BLOCK LENGTH WITHIN FL
          LDD    PB+4        CHECK COMPLETION BIT 
          LPN    1
          ZJN    PRS3        IF COMPLETION BIT NOT SET
 PRS2     ABORT  ERAE        * VER - ARGUMENT ERROR.* 
  
 PRS3     LDD    IR+2        CHECK FUNCTION CODE
          SBN    TFCNL
          PJN    PRS2        IF ILLEGAL FUNCTION CODE 
          LDK    ESTP        SET EST SIZE 
          CRD    CM 
          LDD    CM+2 
          STD    LE 
          LDN    EIBP        READ *EICB* POINTER
          CRD    CN 
          LDD    CN+3 
          RAM    SEAA 
          LDD    CN+4 
          STM    SEAA+1 
          LDN    SSTL 
          CRD    CM 
          LDD    CM+3 
          SHN    21-13
          PJN    PRS4        IF DUAL STATE ENABLED
          LDC    ESNR        SET DUAL STATE NOT ENABLED 
          LJM    PRSX        RETURN 
  
 PRS4     LDK    CHTP 
          CRD    CN 
          LDD    CN+2        SAVE EJT ASSIGNMENT TABLE ADDRESS
          SHN    14 
          LMD    CN+3 
          ADN    CTALL
          STM    TCHA+1 
          STM    SCHA+1 
          STM    CHAA+1 
          SHN    -14
          RAM    TCHA 
          STM    SCHA 
          STM    CHAA 
          LDD    CN+2        SAVE CHANNEL STATUS TABLE ADDRESS
          RAM    RCLA 
          LDD    CN+3 
          STM    RCLA+1 
          LDD    CN+4        CHECK FOR EJT ORDINAL
          STM    NEJT 
          NJN    PRS6        IF EJT ALREADY ASSIGNED TO NOS/VE
          STD    CM+1 
          LDN    PEJT 
          STD    CM+2 
          LDD    MA 
          CWM    PRSA,ON
          MONITOR  MTRM 
          LDD    CM+1 
          NJN    PRS5        IF EJT ENTRY AVAILABLE 
          ABORT  EREU        * VER - EJT ENTRY UNAVAILABLE* 
  
 PRS5     STD    CN+4        SAVE EJT ORDINAL 
          STM    NEJT 
          LDC    NVOL        REWRITE *NVOL* 
          CWD    CN 
 PRS6     LDN    PPCP        SAVE PP COMMUNICATION AREA ADDRESS 
          CRD    CN 
          LDD    CN+4 
          STM    PPCA 
          LDK    EABL+IOEI   SET IOU CONNECT CODE 
          CRD    CN 
          LDD    CN+3 
          STD    EC 
          LDK    PPUL        GET PP/CPP CONFIGURATION 
          CRD    CM 
          RJM    SRI         SET RECONFIGURATION INFORMATION
          LDN    0
          STD    CF 
          LDD    CM+2 
          LMN    20D
          NJN    PRS8        IF NOT 20 PP-S 
          LDK    EABL+CPEI   READ CPU DESCRIPTOR
          CRD    CM 
          LDD    CM+1 
          SHN    -6 
          SHN    14 
          LMD    CM 
          SHN    6
          CRD    CM 
          LDD    CM+2        GET MODEL NUMBER 
          SHN    -4 
          LMN    23 
          ZJN    PRS7        IF CYBER 180-830 
          LMN    23&24
          NJN    PRS8        IF NOT CYBER 180-810 
 PRS7     AOD    CF          SET CONFIGURATION FLAG 
 PRS8     LDM    TFCN,IR+2   SET FUNCTION PROCESSOR ADDRESS 
          STM    VERA 
          LDN    0           SET NO ERROR 
          LJM    PRSX        RETURN 
  
 PRSA     VFD    24/0LVER,24/0,1/0,4/NICS,1/0,5/NVJS,1/0
 SRI      SPACE  4,10 
**        SRI - SET RECONFIGURATION INFORMATION.
* 
*         ENTRY  (EC) = IOU CONNECT CODE. 
* 
*         EXIT   (SPBA) = BARREL CONFIGURATION. 
*                (SPBB) = NUMBER OF BARRELS PRESENT.
*                (CM - CM+4) = (PPUL) = NUMBER OF PP-S / CPP-S. 
* 
*         USES   T1, T2, CN - CN+4. 
* 
*         MACROS READMR.
  
  
 SRI      SUBR               ENTRY/EXIT 
          LDN    0           INITIALIZE BARREL COUNT
          STD    T1 
          LDN    2           SET WORD COUNT 
          STD    T2 
          LDK    EABL+IOEI   READ IOU INFORMATION 
          CRD    CN 
          LDD    CN+1 
          SCN    77 
          SHN    6
          ADD    CN 
          SHN    6
          CRM    SRIA,T2
          LDM    SRIA+/DSL/PPP0  CHECK ALL PP-S PRESENT IN BARREL 1 
          NJN    SRI3        IF ONLY ONE BARREL 
          LDM    SRIA+/DSL/PPP1 
          SHN    21-4 
          MJN    SRI2        IF ONLY TWO BARRELS
          NJN    SRI1        IF THREE BARRELS 
          AOD    T1 
 SRI1     AOD    T1 
 SRI2     AOD    T1 
 SRI3     AOD    T1 
          RAM    SPBB        SET NUMBER OF BARRELS
          LDM    SRIA+/DSL/HDMN  GET IOU MODEL NUMBER 
          SHN    -4 
          LMC    0#42 
          ZJN    SRI5        IF IOU MODEL 42
          SHN    -4 
          SBN    1
          ZJN    SRI6        IF IOU MODEL I1
          PJN    SRI4        IF IOU MODEL I2
          LDD    CM+3 
          LPN    77 
          ZJN    SRI5        IF NO CPP-S IN SYSTEM
          LDK    PSNI        ENABLE READ/WRITE OF *ECCR*
          STM    SBAA 
          STM    SBAB 
          UJN    SRI5        CONTINUE RECONFIGURATION 
  
 SRI4     LDN    40          MODIFY EC REGISTER SETTINGS FOR I2 
          RAM    NECA 
          STM    DPLI 
          STM    IPPA 
          LDN    40 
          RAM    DPLJ 
          STM    IPPB 
 SRI5     AOM    SRIB        MODIFY FOR IOU MODEL I2 OR I4
 SRI6     READMR SRIA,,ISTR 
          LDM    SRIA+7 
          SHN    -3 
 SRIB     LPN    2           (IOU MODEL I1) 
*         LPN    3           (IOU MODEL I2 OR I4) 
          RAM    SPBA        SET BARREL RECONFIGURATION 
          LJM    SRIX        RETURN 
  
 SRIA     BSS    2*5         IOU INFORMATION
 TFCN     SPACE  4,10 
**        TFCN - TABLE OF FUNCTION PROCESSOR ADDRESSES. 
* 
*         ONE WORD INDEXED BY FUNCTION CODE.
* 
*T,       12/ADDR 
* 
*         ADDR   ADDRESS OF FUNCTION PROCESSOR. 
  
  
 TFCN     BSS    0           TABLE OF FUNCTION PROCESSOR ADDRESSES
          LOC    0
  
 RSCM     FCN    RCM         RESERVE CM 
 RSPP     FCN    RPP         RESERVE PP 
 RSCH     FCN    RCL         RESERVE CHANNEL
 RSEQ     FCN    POF         RESERVE EQUIPMENT
 RNCM     FCN    TCM         RETURN CM
 RNPP     FCN    TPP         RETURN PP
 RNCH     FCN    TCH         RETURN CHANNEL 
 RNEQ     FCN    POF         RETURN EQUIPMENT 
 STCM     FCN    SCM         STATUS CM
 STPP     FCN    SPP         STATUS PP
 STCH     FCN    SCH         STATUS CHANNELS
 STEQ     FCN    POF         STATUS EQUIPMENT 
 STMR     FCN    SMR         STATUS AVAILABLE RESOURCES 
 SFRC     FCN    POF         SET FREE-RUNNING COUNTER TO VALUE
 RSPT     FCN    POF         RESERVE NPP, NPP PARTNER PAIR OR CPP 
 RSCT     FCN    POF         RESERVE NIO OR CIO CHANNEL 
 RNPT     FCN    POF         RETURN NPP, CPP OR ALL PP-S
 RNCT     FCN    POF         RETURN NIO OR CIO CHANNEL OR ALL CHANNELS
 STPT     FCN    POF         STATUS NPP-S AND/OR CPP-S
 STCT     FCN    POF         STATUS NIO AND/OR CIO CHANNELS 
  
 MXVR     BSS    0           MAXIMUM *VER* REQUEST + 1
          LOC    *O 
 TFCNL    EQU    *-TFCN      LENGTH OF FUNCTION CODE TABLE
 POF      SPACE  4,10 
**        POF - PROCESS OVERLAID FUNCTIONS. 
* 
*         ENTRY  INITIAL PRESET COMPLETED.
*                CALLS OVERLAY *2VR*, WHICH DOES NOT RETURN.
* 
*         EXIT   OVERLAY *2VR* EXITS TO *PPR* WHEN FINISHED.
  
  
 POF      SUBR               ENTRY (NO EXIT)
          EXECUTE 2VR 
          SPACE  4,10 
**        COMMON DECKS. 
  
*CALL     COMPCRS 
          SPACE  4,10 
*         CHECK FOR OVERFLOW. 
  
  
          OVERFLOW  PPFW,EPFW 
          TTL    VER/2VR - VIRTUAL ENVIRONMENT REQUEST OVERLAY. 
          TITLE  MAIN PROGRAM.
          QUAL   2VR
          IDENT  2VR,POFX 
*COMMENT  VER - PROCESS OVERLAID *VER* FUNCTIONS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    OVLA 
 POF      SPACE  4,10 
**        POF - PROCESS OVERLAID FUNCTIONS. 
* 
*         ENTRY  MAIN PRESET COMPLETED. 
* 
*         EXIT   TO PP RESIDENT.
  
  
 POF      SUBR               ENTRY (NO EXIT)
          RJM    PRS         PRESET VIRTUAL ENVIRONMENT 
  
*         TO FUNCTION PROCESSOR WITH
*         (PB - PB+4) = FIRST WORD OF PARAMETER BLOCK,
*                     = 1/F, 35/0, 12/LENGTH, 12/0. 
*                     F = FLAG USED ONLY IN RETURN FUNCTIONS. 
*                       = 0 - RETURN SPECIFIED RESOURCES. 
*                       = 1 - RETURN ALL. 
*                     LENGTH = LENGTH (IN CM WORDS) OF PARAMETER BLOCK. 
*         (IR+3 - IR+4) = ADDRESS OF PARAMETER BLOCK. 
  
          RJM    ** 
 POFA     EQU    *-1         (FUNCTION PROCESSOR ADDRESS) 
          AOD    PB+4        SET COMPLETION BIT 
          RJM    CPA         GET PARAMETER BLOCK ADDRESS
          CWD    PB          WRITE RESPONSE 
          MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
          SPACE  4,20 
**        ASSUMED TYPE CODE VALUES AND RELATIONSHIPS. 
* 
*         THE FOLLOWING TYPE CODE VALUES AND RELATIONSHIPS
*         ARE ASSUMED IN THE FUNCTION PROCESSING ROUTINES FOR 
*         FUNCTIONS *RSPT*, *RNPT*, AND *STPT*.  IF THESE VALUES
*         OR RELATIONSHIPS CHANGE, ALL REFERENCES TO THESE SYMBOLS
*         SHOULD BE EXAMINED CAREFULLY. 
  
  
          ERRNG  VPPT-VCPT-VUPT  CODE ASSUMES VPPT .GT. VCPT+VUPT 
          ERRNG  VCPT-VNPT-VUPT  CODE ASSUMES VCPT .GT. VNPT+VUPT 
          ERRNG  VUPT-VLPT       CODE ASSUMES VUPT .GT. VLPT
          ERRNZ  VPPT-4          CODE ASSUMES VALUE 
          ERRNZ  VCPT-2          CODE ASSUMES VALUE 
          ERRNZ  VUPT-1          CODE ASSUMES VALUE 
          ERRNZ  VLPT            CODE ASSUMES VALUE 
          TITLE  OVERLAY *2VR* COMMON DECKS.
  
  
          LIST   X
 DVC$     EQU    1
 QUAL$    EQU    1
*CALL     COMPDVC 
          LIST   *
          TITLE  FUNCTION PROCESSORS. 
 REQ      SPACE  4,20 
**        FUNCTION 3 - RSEQ - RESERVE EQUIPMENT.
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/EQ, 6/UN, 42/0.
*                                = 60/0.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR CODE. 
*                                = 24/0, 12/EQ/UN TYPE, 15/0, 
*                                  9/EST ORDINAL. 
* 
*         USES   DA, LO, T2, CL - CL+4, CM - CM+4.
* 
*         CALLS  CPA, CUA, DVC, SEE, VET, VRC, VTC. 
* 
*         MACROS MONITOR. 
  
  
 REQ17    LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 REQ      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    REQX        IF NONE REQUESTED
          SBN    2
          MJN    REQ17       IF BLOCK TOO SHORT 
          LDD    PB+3 
          SHN    -1 
          SBD    LE 
          PJN    REQ17       IF BLOCK LONGER THAN 2 * EST LENGTH
          LDD    PB+3 
          LPN    1
          NJN    REQ17       IF BLOCK LENGTH NOT EVEN NUMBER OF WORDS 
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 REQ1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          RJM    SEE         SEARCH EST FOR EQUIPMENT 
          PJN    REQ3        IF EST ENTRY FOUND 
          LDN    ESNE        SET EST ENTRY NOT FOUND STATUS 
 REQ2     LJM    REQ13       WRITE RESPONSE 
  
 REQ3     RJM    VET         VALIDATE EQUIPMENT TRANSFERABILITY 
          ZJN    REQ6        IF EQUIPMENT TRANSFERABLE
          PJN    REQ2        IF NOT DOWN
          LDD    CL 
          SHN    -6 
          STD    T2 
          RJM    VRC         INSURE CHANNEL IS RESERVED 
          LDD    T4 
          ZJN    REQ4        IF CHANNEL ALREADY ASSIGNED
          LDD    CM+1 
          ZJN    REQ7        IF CHANNEL NOT AVAILABLE 
 REQ4     RJM    CUA         CHECK IF MASS STORAGE UNIT ASSIGNED
          ZJN    REQ5        IF NOT ASSIGNED
          LDN    ESAA 
          UJN    REQ2        WRITE RESPONSE 
  
 REQ5     LJM    REQ12       SET UNIT ASSIGNED BIT IN MST 
  
*         ENSURE CHANNEL IS RESERVED BY NOS/VE. 
  
 REQ6     STD    DA          CLEAR CHANNEL JUST RESERVED FLAG 
          LDD    CL          GET CHANNEL NUMBER 
          SHN    -6 
          STD    T2 
          RJM    VRC         VE RESERVE CHANNEL 
          LDD    T4 
          ZJN    REQ9        IF CHANNEL WAS PREVIOUSLY ASSIGNED 
          LDD    CM+1 
          NJN    REQ8        IF CHANNEL ASSIGNED
 REQ7     LDN    ESCH        SET CHANNEL NOT AVAILABLE STATUS 
          UJN    REQ11       WRITE RESPONSE 
  
*         RESERVE EQUIPMENT FOR NOS/VE. 
  
 REQ8     LDN    1           SET CHANNEL JUST ASSIGNED FLAG 
          STD    DA 
 REQ9     LDD    T7          SET EST ORDINAL
          LMC    4000        SET ALTERNATE EJT FLAG 
          STD    CM+1 
          LDK    RDES        REQUEST DOWNED EQUIPMENT 
          STD    CM+2 
          LDM    NEJT        SET EJT ORDINAL
          STD    CM+3 
          MONITOR  REQM      REQUEST EQUIPMENT
          LDD    CM+1 
          NJN    REQ12       IF EQUIPMENT ASSIGNED
          LDD    DA 
          ZJN    REQ10       IF CHANNEL NOT JUST ASSIGNED 
          RJM    VTC         VE RETURN CHANNEL
 REQ10    LDN    ESEQ        SET EQUIPMENT NOT AVAILABLE STATUS 
 REQ11    UJN    REQ13       WRITE RESPONSE 
  
*         IF EQUIPMENT IS MASS STORAGE DEVICE, SET BIT CORRESPONDING
*         TO *DDLL* UNIT LIST POSITION IN MST BIT MAP.
  
 REQ12    BSS    0
*         RJM    CCL         CHECK CONTROLWARE LOAD 
          LDD    CN 
          SHN    0-13 
          ZJN    REQ14       IF NOT MASS STORAGE DEVICE 
          LDD    CN+4        READ BIT MAP 
          SHN    3
          ADN    NVGL 
          CRD    CM 
          ERRNZ  SHNI-1000   CANNOT USE DIRECT CELL *TH*
          LDD    TH          SET SHIFT COUNT
          ADD    DC 
          STM    REQA 
          LDN    1
 REQA     SHN    ** 
          RAD    CM+4        SET BIT
          LDD    CN+4        UPDATE BIT MAP 
          SHN    3
          ADN    NVGL 
          CWD    CM 
          LDN    0           SET NO ERROR STATUS
  
*         WRITE TWO WORD RESPONSE.
  
 REQ13    STD    PB+4        SET ERROR STATUS 
 REQ14    STD    CL+4 
          RJM    CPA         WRITE FIRST WORD OF RESPONSE 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
          LDD    CL+4 
          LPC    7677 
          NJN    REQ15       IF ERROR STATUS SET
          LDN    ZERL        CLEAR SECOND WORD
          CRD    CL 
          RJM    DVC         GET DEVICE CODE
          STD    CL+2        SET *EQ/UN* TYPE 
          LDD    T7          SET EST ORDINAL
          STD    CL+4 
          RJM    CPA         WRITE SECOND WORD OF RESPONSE
          ADD    LO 
          CWD    CL 
 REQ15    AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          MJN    REQ16       IF NOT END OF LIST 
          LJM    REQX        RETURN 
  
 REQ16    LJM    REQ1        PROCESS NEXT REQUEST 
 TEQ      SPACE  4,15 
**        FUNCTION 7 - RNEQ - RETURN EQUIPMENT. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/EQ, 6/UN, 42/0.
*                (NEJT) = NOS/VE EJT ORDINAL. 
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 18/UNCHANGED, 30/0, 12/ERROR STATUS. 
* 
*         USES   LO, PB+4, T2, CL - CL+4, CM - CM+4, CN - CN+4. 
* 
*         CALLS  CHA, CPA, CUA, SEE, VET. 
* 
*         MACROS MONITOR, SFA.
  
  
 TEQ15    LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 TEQ      SUBR               ENTRY/EXIT 
          LDD    PB 
          SHN    21-13
          PJN    TEQ1        IF TO RETURN SPECIFIED EQUIPMENT 
          LJM    TEQ13       RETURN ALL NOS/VE EQUIPMENT
  
 TEQ1     LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    TEQX        IF NONE TO RETURN
          SBD    LE 
          PJN    TEQ15       IF BLOCK LONGER THAN EST LENGTH
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 TEQ2     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          RJM    SEE         SEARCH EST FOR EQUIPMENT 
          PJN    TEQ3        IF EST ENTRY FOUND 
          LDN    ESNE        SET NOT IN EST STATUS
          UJN    TEQ5        WRITE LIST ENTRY 
  
 TEQ3     RJM    VET         CHECK EQUIPMENT ASSIGNMENT 
          MJN    TEQ4        IF EQUIPMENT ASSIGNED TO NOS/VE
          LDN    ESEQ        SET EQUIPMENT NOT ASSIGNED STATUS
          UJN    TEQ5        WRITE LIST ENTRY 
  
 TEQ4     LDD    CL 
          SHN    -6 
          STD    T2 
          RJM    CHA         CHECK CHANNEL ASSIGNMENT 
          ZJN    TEQ4.1      IF CHANNEL ASSIGNED
          LDN    ESCH        SET CHANNEL NOT ASSIGNED STATUS
          UJN    TEQ5        WRITE RESPONSE 
  
 TEQ4.1   RJM    CUA         CHECK UNIT ASSIGNMENT
          MJN    TEQ7        IF NOT MASS STORAGE
          SBN    ESAA 
          ZJN    TEQ6        IF UNIT ASSIGNED 
          LDN    ESUN        SET UNIT NOT ASSIGNED STATUS 
 TEQ5     LJM    TEQ9        WRITE RESPONSE 
  
*         RETURN NOS/VE EQUIPMENT.
  
 TEQ6     LDD    CN+4        CLEAR UNIT ASSIGNED STATUS 
          SHN    3
          ADN    NVGL 
          CRD    CM 
          ERRNZ  SHNI-1000   CANNOT USE DIRECT CELL *TH*
          LDD    TH          SET SHIFT COUNT
          ADD    DC 
          STM    TEQA 
          LDN    1
 TEQA     SHN    ** 
          LMD    CM+4        CLEAR BIT
          STD    CM+4 
          LDD    CN+4        UPDATE UNIT STATUS 
          SHN    3
          ADN    NVGL 
          CWD    CM 
          LDD    CM+4        CHECK FOR OTHER UNIT ASSIGNMENTS 
          NJN    TEQ8        IF ANOTHER UNIT ASSIGNED 
 TEQ7     LDD    T7          SET EST ORDINAL
          LMC    4000        SET ALTERNATE EJT FLAG 
          STD    CM+1 
          LDM    NEJT        SET EJT ORDINAL
          STD    CM+3 
          MONITOR  DEQM      RELEASE EQUIPMENT
 TEQ8     LDN    0           CLEAR ERROR FLAG 
          UJN    TEQ10       WRITE RESPONSE 
  
*         WRITE LIST RESPONSE.
  
 TEQ9     STD    PB+4        SET STATUS 
 TEQ10    STD    CL+4 
          RJM    CPA         WRITE RESPONSE 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT OFFSET 
          SBD    PB+3 
          SBN    1
          MJN    TEQ12       IF NOT END OF LIST 
 TEQ11    LJM    TEQX        RETURN 
  
 TEQ12    LJM    TEQ2        PROCESS NEXT LIST ENTRY
  
*         RETURN ALL EQUIPMENT. 
  
 TEQ13    LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    LO 
 TEQ14    AOD    LO          ADVANCE EST ORDINAL
          LMD    LE 
          ZJN    TEQ11       IF END OF EST
          SFA    EST,LO 
          ADK    EQDE 
          CRD    CN          READ EST ENTRY 
          ADK    EQAE-EQDE   READ JOB ASSIGNMENT WORD 
          CRD    CM 
          LDM    NEJT 
          LMD    CM+4 
          NJN    TEQ14       IF NOT NOS/VE RESERVED 
          LDD    LO          SET EST ORDINAL
          LMC    4000        SET ALTERNATE EJT FLAG 
          STD    CM+1 
          LDM    NEJT        SET EJT ORDINAL
          STD    CM+3 
          MONITOR  DEQM      RELEASE EQUIPMENT
          LDD    CN          CHECK FOR MASS STORAGE 
          SHN    21-13
          PJN    TEQ14       IF NOT MASS STORAGE
          LDN    ZERL        CLEAR ALL UNIT ASSIGNMENTS 
          CRD    CM 
          LDD    CN+4 
          SHN    3
          ADN    NVGL 
          CWD    CM 
          UJP    TEQ14       PROCESS NEXT EST ENTRY 
 SEQ      SPACE  4,10 
**        FUNCTION 13 - STEQ - STATUS NOS/VE EQUIPMENT. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/EQ, 6/UN, 42/0.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   LO, PB+4, T2, CL - CL+4. 
* 
*         CALLS  CHA, CPA, CUA, SEE, VET. 
  
  
 SEQ9     LDD    TH          SET ILLEGAL REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 SEQ      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    SEQX        IF NO REQUEST
          SBD    LE 
          PJN    SEQ9        IF BLOCK LONGER THAN EST LENGTH
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 SEQ1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          RJM    SEE         SEARCH EST FOR EQUIPMENT 
          PJN    SEQ2        IF EST ENTRY FOUND 
          LDN    ESNE        SET NOT IN EST STATUS
          UJN    SEQ5        WRITE RESPONSE 
  
 SEQ2     RJM    VET         CHECK EQUIPMENT ASSIGNMENT 
          MJN    SEQ4        IF EQUIPMENT ASSIGNED TO NOS/VE
 SEQ3     LDN    ESEQ        SET EQUIPMENT NOT ASSIGNED STATUS
          UJN    SEQ5        WRITE RESPONSE 
  
 SEQ4     LDD    CL 
          SHN    -6 
          STD    T2 
          RJM    CHA         CHECK CHANNEL ASSIGNMENT 
          ZJN    SEQ4.1      IF CHANNEL ASSIGNED
          LDN    ESCH        SET CHANNEL NOT ASSIGNED STATUS
          UJN    SEQ5        WRITE RESPONSE 
  
 SEQ4.1   RJM    CUA         CHECK UNIT ASSIGNMENT
          MJN    SEQ6        IF NOT MASS STORAGE DEVICE 
          SBN    ESAA 
          ZJN    SEQ7        IF UNIT ASSIGNED 
          LDN    ESUN        SET UNIT NOT ASSIGNED STATUS 
 SEQ5     STD    PB+4 
          UJN    SEQ7        WRITE RESPONSE 
  
 SEQ6     LDN    0           CLEAR ERROR STATUS 
 SEQ7     STD    CL+4 
          RJM    CPA
          ADD    LO 
          CWD    CL          WRITE RESPONSE 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          PJN    SEQ8        IF END OF LIST 
          LJM    SEQ1        PROCESS NEXT LIST ENTRY
  
 SEQ8     LJM    SEQX        RETURN 
 FRC      SPACE  4,10 
**        FUNCTION 15 - SFRC - SET FREE-RUNNING COUNTER TO VALUE. 
* 
*         ENTRY  (PB LIST ENTRY) = 12/,48/ DESIRED *FRC* VALUE. 
* 
*         EXIT   REQUEST WRITTEN TO NOS REQUEST AREA. 
  
  
 FRC      SUBR               ENTRY/EXIT 
  
*         OBTAIN INTERLOCK ON NOS REQUEST AREA. 
  
 FRC1     RJM    SRA         SET ADDRESS OF NOS REQUEST HEADER
          STD    CM+4        SAVE ADDRESS FOR *UTEM*
          SHN    -14
          STD    CM+3 
          LDN    2           SET NUMBER OF REQUESTS 
          STD    CM+1 
          LDD    MA          WRITE REQUESTS TO MESSAGE BUFFER 
          CWM    FRCA,CM+1
          MONITOR  UTEM      ATTEMPT TO GET INTERLOCK 
          LDD    CM+1        CHECK STATUS 
          ZJN    FRC2        IF INTERLOCK OBTAINED
          DELAY 
          UJN    FRC1        RETRY INTERLOCK ATTEMPT
  
*         FORMAT REQUEST. 
  
 FRC2     RJM    CPA         READ REQUEST 
          ADN    1
          CRD    T1 
          LDN    RQSF        SET TASKID FOR *FRC* UPDATE
          STD    T1 
  
*         THE FOLLOWING CODE ASSUMES THERE IS ONLY ONE REQUEST BUFFER 
*         WHICH IMMEDIATELY FOLLOWS THE REQUEST HEADER. 
  
          RJM    SRA         SET ADDRESS OF NOS REQUEST HEADER
          CRD    CN 
          ADN    1
          CWD    T1          WRITE REQUEST TO BUFFER
          LDN    STRY        SET STATUS = *READY* 
          STD    CN+4 
          RJM    SRA         SET ADDRESS OF NOS REQUEST HEADER
          CWD    CN 
          LJM    FRCX        RETURN 
  
  
*         *UTEM* REQUEST PARAMETERS.
  
 FRCA     VFD    1/1,5/0,6/12D,6/0,42/STIN  VERIFY INACTIVE REQUEST 
          VFD    1/0,5/0,6/12D,6/0,42/STIK  SET INTERLOCK ON REQUEST
 RSP      SPACE  4,30 
**        FUNCTION 16 - RSPT - RESERVE PP-S.
* 
*         ENTRY  (PB LIST ENTRY) = 12/0, 12/TYPE, 36/0. 
*                TYPE = TYPE OF PP REQUIRED.
*                     = 0 - NPP 0-11B ON 810/830 SYSTEM,
*                               0-31B ON OTHER SYSTEMS. 
*                     = 1 - NPP 20B-31B ON 810/830 WITH OVER 10 NPP-S,
*                               0-31B ON OTHER SYSTEMS. 
*                     = 2 - CPP 0-4.
*                     = 3 - CPP 5-11B.
*                     = 4 - NPP PARTNER PAIR ON 810/830 WITH MORE THAN
*                           10 NPP-S, ANY TWO NPP-S ON OTHER SYSTEMS. 
* 
*         EXIT   (PB LIST ENTRY) = 6/PP, 6/PPP, 12/TYPE, 36/0.
*                                = 6/77B, 42/0, 12/ERROR CODE 
*                                  IF PP UNAVAILABLE. 
*                     PP  - ASSIGNED PP NUMBER. 
*                     PPP - SECOND ASSIGNED PP NUMBER IF TYPE = 4.
* 
*                (PB+4) = ERROR STATUS. 
*                BML MESSAGE ISSUED.
* 
*         USES   DA, DB, DC, EC, LO, PB+4, T3, T6, CL - CL+4, 
*                CM - CM+4, CN - CN+4.
* 
*         CALLS  CPA, GCP, IBM, IPP, SPB. 
* 
*         MACROS DELAY, EXECUTE, MONITOR, PAUSE.
  
  
 RSP23    LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 RSP      SUBR               ENTRY/EXIT 
          LDD    PB+3        GET NUMBER REQUESTED 
          ZJN    RSPX        IF NONE REQUESTED
          SBN    1
          NJN    RSP23       IF LENGTH EXCEEDS ONE
          RJM    CPA
          ADN    1
          CRD    CL 
          LDN    VPPT 
          SBD    CL+1 
          MJN    RSP23       IF NOT A VALID PP TYPE 
          RJM    GCP         GET CURRENT STATUS OF PP-S 
          LDD    CL+1 
          SBK    VCPT+VLPT
          ZJN    RSP1        IF LOWER BANK CPP REQUEST
          SBK    VUPT-VLPT
          NJN    RSP2        IF REQUEST IS FOR ONE OR MORE NPP-S
          LDN    5           UPPER BANK CPP REQUEST 
 RSP1     SBD    DB 
          MJN    RSP5        IF SYSTEM HAS CPP-S OF THE RIGHT TYPE
          LDK    ESCP        SET CONCURRENT PP NOT PRESENT (*ESCP*) 
          LJM    RSP21       SET STATUS AND RETURN
  
 RSP2     PJN    RSP3        IF REQUEST IS FOR A PAIR OF NPP-S
          SBK    VNPT-VCPT
          NJN    RSP4        IF REQUEST IS FOR A LOWER BANK NPP 
 RSP3     LDD    CF 
          ZJN    RSP4        IF NOT 810/830 WITH 20 NPP-S 
          LDN    MINDP
          SBD    T4          AVAILABLE UPPER BANK NPP-S 
          PJP    RSP20       IF INSUFFICIENT UPPER BANK NPP-S 
 RSP4     LDD    DA          NUMBER OF PP-S IN SYSTEM 
          SBN    MINP        LESS MINIMUM FOR NOS 
          STD    DB          SAVE PP-S ALLOWABLE TO USE 
 RSP5     LDD    CL+1 
          LPN    VPPT 
          SHN    -2 
          ADN    1
          STD    T6          NUMBER OF PP-S REQUESTED 
          LDD    DB          TOTAL PP-S ALLOWABLE TO USE
          SBD    T6          REQUESTED PP-S 
          SBD    T5          DEDICATED PP-S 
          MJP    RSP20       IF NOT ENOUGH LEFT FOR NOS 
          LDC    4000        INITIALIZE PP NUMBER FIELD 
          STD    CL 
          LDD    CL+1 
          SBN    VNPT+VUPT
          ZJN    RSP7        IF REQUEST FOR UPPER BANK NPP
          MJN    RSP6        IF REQUEST FOR LOWER BANK NPP
          SBK    VPPT-VNPT-VUPT 
          ZJN    RSP8        IF REQUEST FOR A PAIR OF NPP-S 
  
*         REQUEST CPP FOR /*VP/.
  
          LDD    MA          SET INPUT REGISTER 
          CWM    RSPA,ON
          UJN    RSP9        PROCESS PP REQUEST 
  
*         REQUEST NPP FOR *1VN*.
  
 RSP6     LDD    MA          SET INPUT REGISTER 
          CWM    RSPB,ON
          EXECUTE  1VN,=
          UJN    RSP9        PROCESS PP REQUEST 
  
*         REQUEST NPP FOR *1VO*.
  
 RSP7     LDD    MA          SET INPUT REGISTER 
          CWM    RSPC,ON
          EXECUTE  1VO,=
          UJN    RSP9        PROCESS PP REQUEST 
  
*         REQUEST NPP FOR *1VP*.
  
 RSP8     LDD    MA          SET INPUT REGISTER 
          CWM    RSPD,ON
          EXECUTE  1VP,=
  
 RSP9     LDN    10          INITIALIZE ATTEMPT COUNT 
          STD    DC 
 RSP10    LDN    ZERL 
          CRD    CM 
          LDD    CL+1 
          LPN    VCPT 
          ZJN    RSP11       IF NPP REQUEST 
          LDD    CL+1 
          STD    CM+4        SET BARREL DESIGNATION 
          MONITOR  CPRM      REQUEST CPP
          UJN    RSP13       CHECK IF SUCCESSFUL
  
 RSP11    LDD    CF 
          ZJN    RSP12       IF NOT 810/830 WITH 20 NPP-S 
          LDD    CL+1 
          LPN    VPPT 
 RSP12    LMN    1           SET PRIORITY REQUEST 
          STD    CM+1 
          MONITOR  RPPM      REQUEST NPP
 RSP13    LDD    CM+1 
          NJN    RSP14       IF PP AVAILABLE
          PAUSE  NE 
          DELAY 
          SOD    DC          DECREMENT ATTEMPT COUNT
          NJN    RSP10       IF ANOTHER ATTEMPT TO BE MADE
          LJM    RSP20       SET PP NOT AVAILABLE STATUS
  
 RSP14    STD    T3          SAVE INPUT REGISTER ADDRESS
          LDD    CM+2        SAVE SECOND INPUT REGISTER ADDRESS 
 RSP15    STD    DA 
 RSP16    LDD    T3          GET INPUT REGISTER OF ASSIGNED PP
          CRD    CM 
          LDD    CM 
          LMC    2R*V 
          ZJN    RSP17       IF PP READY
          PAUSE  NE 
          DELAY 
          UJN    RSP16       RECHECK CALL 
  
 RSP17    RJM    IPP         IDLE PP
          MJN    RSP19       IF PP NOT IDLED
          STD    T1          BML SYMPTOM CODE 
          LDD    T5 
          RJM    SPB         SET UPPER PP BIT 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T5          SET PP NUMBER
          LPN    37 
          STD    CN+4 
          ADD    CL 
          SHN    6
          MJN    RSP18       IF FIRST OR ONLY PP
          SHN    -6 
 RSP18    STD    CL 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
 RSP19    SOD    T6 
          ZJN    RSP21       IF REQUEST SATISFIED 
          LDD    DA 
          ZJP    RSP8        IF NO SECOND PP ASSIGNED 
          STD    T3 
          LDN    0           CLEAR SECOND PP ASSIGNED 
          UJP    RSP15       PROCESS SECOND PP
  
 RSP20    LDN    ESPP        SET PP NOT AVAILABLE STATUS (*ESPP*) 
 RSP21    STD    PB+4 
          STD    CL+4 
          ZJN    RSP22       IF NO ERROR
          LDC    7700 
          STD    CL 
 RSP22    RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADN    1
          CWD    CL 
          LJM    RSPX        RETURN 
  
  
 RSPA     VFD    18/3L*VP,42/0  /*VP/ INPUT REGISTER
 RSPB     VFD    18/0L1VN,42/0  *1VN* INPUT REGISTER
 RSPC     VFD    18/0L1VO,42/0  *1VO* INPUT REGISTER
 RSPD     VFD    18/0L1VP,42/0  *1VP* INPUT REGISTER
 RSC      SPACE  4,15 
**        FUNCTION 17 - RSCT - RESERVE NIO OR CIO CHANNEL.
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/0, 12/TYPE, 36/0.
*                 CH - CHANNEL NUMBER REQUIRED. 
*                 TYPE - TYPE OF CHANNEL. 
*                   0 = NIO CHANNEL.
*                   1 = CIO CHANNEL.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR CODE. 
* 
*         USES   LO, T2, CL - CL+4. 
* 
*         CALLS  CPA, DCA.
  
  
 RSC3     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 RSC      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    RSCX        IF NONE REQUESTED
          SBN    1
          NJN    RSC3        IF LENGTH NOT 1
          LDN    CTALL
          STD    T2 
          LDC    **          FWA CHANNEL STATUS TABLE 
 RSCA     EQU    *-2
          CRM    RBUF,T2
          RJM    CPA         READ CHANNEL NUMBER AND TYPE 
          ADN    1
          CRD    CL 
          LDN    0           CLEAR ERROR FLAG 
          STD    CL+4 
          RJM    VCN         VALIDATE CHANNEL NUMBER
          PJN    RSC1        IF CHANNEL NUMBER INCORRECT
          RJM    DCA         DETERMINE CHANNEL AVAILABILITY 
          ZJN    RSC2        IF CHANNEL WAS PREVIOUSLY NOS/VE RESERVED
          LDD    CM+1 
          NJN    RSC2        IF CHANNEL ASSIGNED
          LDN    ESCH        SET CHANNEL NOT AVAILABLE STATUS 
 RSC1     STD    PB+4 
          STD    CL+4 
 RSC2     RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADN    1
          CWD    CL 
          LJM    RSCX        RETURN 
 RNP      SPACE  4,20 
**        FUNCTION 20 - RNPT - RETURN PP. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/PP NUMBER, 6/0, 12/TYPE, 
*                                       1/BAD, 35/0.
*                TYPE - TYPE OF PP BEING RETURNED.
*                  0 OR 1 = NPP.
*                  2 OR 3 = CPP.
*                BAD - PP MALFUNCTION FLAG. 
*                  0 = PP IS OK.
*                  1 = PP IS MALFUNCTIONING.
* 
*         EXIT   (PB LIST ENTRY) = 24/UNCHANGED, 24/0, 12/ERROR STATUS. 
*                (PB+4) = ERROR STATUS. 
* 
*         USES   DA, DB, LO, T4, PB+4, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA, DPL, LPR, SPB, VPN. 
* 
*         MACROS MONITOR. 
  
  
 RNP10    LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 RNP      SUBR               ENTRY/EXIT 
          RJM    LPR         LOAD PP RESIDENT 
          LDD    PB 
          SHN    21-13
          MJP    RNP4        IF RETURNING ALL PP-S
  
*         RETURN SPECIFIED PP.
  
 RNP1     LDD    PB+3 
          ZJN    RNPX        IF NONE TO RETURN
          SBN    1
          NJN    RNP10       IF REQUEST TOO LARGE 
 RNP2     RJM    CPA         READ NEXT LIST ENTRY 
          ADN    1
          CRD    CL 
          LDD    CL+1 
          SBN    VPPT 
          PJN    RNP10       IF TYPE CODE INCORRECT 
          LDD    CL+1        GET PP TYPE FLAG 
          LPN    VCPT 
          SHN    13-1 
          LMD    CL 
          SHN    -6 
          RJM    VPN         VALIDATE PP NUMBER 
          NJN    RNP3        IF NOT ASSIGNED TO NOS/VE
          LDD    T4          PP NUMBER
          LMC    10000
          RJM    SPB         SET LOWER PP BIT 
          RJM    DPL         DEADSTART PP AND LOAD *PPR*
          LDN    0           CLEAR ERROR FLAG 
 RNP3     STD    PB+4 
          STD    CL+4 
          RJM    CPA         WRITE LIST ENTRY 
          ADN    1
          CWD    CL 
          UJN    RNP7        RETURN 
  
*         RETURN ALL NOS/VE RESERVED PP-S.
  
 RNP4     LDN    0           INITIALIZE PP NUMBER AND BAD PP FLAG 
          STD    T4 
          STD    CL+2 
 RNP5     LDD    T4 
 RNP6     RJM    VPN         VALIDATE PP NUMBER 
          ZJN    RNP8        IF ASSIGNED TO NOS/VE
          LMN    ESPP 
          ZJN    RNP9        IF NOT END OF PP-S 
 RNP7     LJM    RNPX        RETURN 
  
 RNP8     LDD    T4          RETURN NOS/VE PP 
          LMC    10000
          RJM    SPB         SET LOWER PP BIT 
          RJM    DPL         DEADSTART PP AND LOAD PPR
 RNP9     AOD    T4          INCREMENT PP NUMBER
          LPN    17 
          SBN    12 
          NJN    RNP5        IF NOT END OF PP BANK
          LDN    6           SET START OF NEXT BANK 
          RAD    T4 
          UJN    RNP6        PROCESS NEXT PP
 RNC      SPACE  4,15 
**        FUNCTION 21 - RNCT - RETURN CIO OR NIO CHANNEL. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/0, 12/TYPE, 36/0.
*                     CH - CHANNEL NUMBER BEING RETURNED. 
*                     TYPE - TYPE OF CHANNEL. 
*                       0 = NIO CHANNEL.
*                       1 = CIO CHANNEL.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   PB+4, T2, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA, VTC.
  
  
 RNC7     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 RNC      SUBR               ENTRY/EXIT 
          LDN    CTALL       READ EJT ASSIGNMENT TABLE
          STD    T2 
          LDC    **          FWA OF CHANNEL EJT ASSIGNMENT TABLE
 RNCA     EQU    *-2
          CRM    CBUF,T2
          LDD    PB 
          SHN    21-13
          MJP    RNC3        IF RETURNING ALL NOS/VE CHANNELS 
          LDD    PB+3        CHECK BLOCK LENGTH 
          ZJN    RNCX        IF NONE TO BE RETURNED 
          SBN    1
          NJN    RNC7        IF TOO MANY CHANNELS TO BE RETURNED
          RJM    CPA         GET CHANNEL TO RETURN
          ADN    1
          CRD    CL 
          RJM    VCN         VALIDATE CHANNEL NUMBER
          PJN    RNC2        IF CHANNEL NUMBER INCORRECT
          LDM    NEJT 
          LMM    CBUF,T2
          ZJN    RNC1        IF CHANNEL IS NOS/VE RESERVED
          LDN    ESCH        SET CHANNEL NOT NOS/VE RESERVED STATUS 
          UJN    RNC2        WRITE PARAMETER LIST ENTRY 
  
 RNC1     RJM    VTC         VE RETURN CHANNEL
*         LDN    0           CLEAR ERROR STATUS 
 RNC2     STD    PB+4 
          STD    CL+4 
          RJM    CPA         WRITE PARAMETER LIST ENTRY 
          ADN    1
          CWD    CL 
          UJN    RNC6        RETURN 
  
*         RETURN ALL NOS/VE RESERVED CHANNELS.
  
 RNC3     LDN    0           INITIALIZE CHANNEL TABLE OFFSET
          STD    T2 
 RNC4     LDM    NEJT 
          LMM    CBUF,T2
          NJN    RNC5        IF CHANNEL NOT NOS/VE RESERVED 
          RJM    VTC         VE RETURN CHANNEL
 RNC5     AOD    T2          INCREMENT CHANNEL TABLE OFFSET 
          SBN    MXCH+1 
          MJN    RNC4        IF NOT END OF TABLE
 RNC6     LJM    RNCX        RETURN 
 STP      SPACE  4,15 
**        FUNCTION 22 - STPT - STATUS OF NOS/VE PP-S. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/PP NUMBER, 6/0, 12/TYPE, 36/0. 
*                     TYPE - TYPE OF PP.
*                       0 OR 1 = NPP. 
*                       2 OR 3 = CPP. 
* 
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   DA, DB, LO, PB+4, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA, VPN.
  
  
 STP4     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 STP      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK PARAMETER BLOCK LENGTH 
          ZJN    STPX        IF NO REQUEST
          SBK    31D
          PJN    STP4        IF LENGTH .GT. MAXIMUM LIST LENGTH 
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 STP1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          LDD    CL+1 
          SBN    VPPT 
          PJN    STP4        IF TYPE CODE INCORRECT 
          LDD    CL+1        GET PP TYPE FLAG 
          LPN    VCPT 
          SHN    13-1 
          LMD    CL 
          SHN    -6 
          RJM    VPN         VALIDATE PP NUMBER 
          ZJN    STP3        IF ASSIGNED TO NOS/VE
 STP2     STD    PB+4 
 STP3     STD    CL+4        SET ERROR STATUS 
          RJM    CPA         WRITE RESPONSE 
          ADD    LO 
          CWD    CL 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          MJN    STP1        IF NOT END OF LIST 
          LJM    STPX        RETURN 
 STC      SPACE  4,15 
**        FUNCTION 23 - STCT - STATUS OF NOS/VE CHANNELS. 
* 
*         ENTRY  (PB LIST ENTRY) = 6/CH, 6/0, 12/TYPE, 36/0.
*                     TYPE - TYPE OF CHANNEL. 
*                       0 = NIO CHANNEL.
*                       1 = CIO CHANNEL.
* 
*                (NEJT) = NOS/VE EJT ORDINAL. 
* 
*         EXIT   (PB+4) = ERROR STATUS. 
*                (PB LIST ENTRY) = 48/UNCHANGED, 12/ERROR STATUS. 
* 
*         USES   LO, PB+4, T2, CL - CL+4, CN - CN+4.
* 
*         CALLS  CPA. 
  
  
 STC5     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
          STD    PB+4 
  
 STC      SUBR               ENTRY/EXIT 
          LDD    PB+3        CHECK PARAMETER BLOCK LENGTH 
          ZJN    STCX        IF NO REQUEST
          SBK    35D
          PJN    STC5        IF LENGTH .GT. MAXIMUM LIST LENGTH 
          LDN    CTALL
          STD    T2 
          LDC    **          FWA OF CHANNEL EJT ASSIGNMENT TABLE
 STCA     EQU    *-2
          CRM    CBUF,T2
          LDN    1           INITIALIZE LIST OFFSET 
          STD    LO 
 STC1     RJM    CPA         READ NEXT LIST ENTRY 
          ADD    LO 
          CRD    CL 
          RJM    VCN         VALIDATE CHANNEL NUMBER
          PJN    STC2        IF CHANNEL NUMBER INCORRECT
          LDM    NEJT 
          LMM    CBUF,T2
          ZJN    STC3        IF CHANNEL RESERVED BY NOS/VE
          LDN    ESCH        SET CHANNEL NOT RESERVED STATUS
 STC2     STD    PB+4 
 STC3     STD    CL+4        SET ERROR STATUS 
          RJM    CPA         WRITE RESPONSE 
          ADD    LO 
          CWD    CL 
          LDD    CL+4 
          LMD    TH          CHECK IF *ESIR*
          ZJN    STC4        IF INCORRECT REQUEST 
          AOD    LO          INCREMENT LIST OFFSET
          SBD    PB+3 
          SBN    1
          MJP    STC1        IF NOT END OF LIST 
 STC4     LJM    STCX        RETURN 
          TITLE  SUBROUTINES. 
 DPL      SPACE  4,25 
**        DPL - DEADSTART PP AND LOAD *PPR*.
* 
*         ENTRY  (T3) = OFFSET INTO PP COMMUNICATION AREA.
*                (T4) = PP NUMBER.
*                (EC) = ELEMENT CONNECT CODE. 
*                (CL+2) = BAD PP FLAG IN UPPERMOST BIT. 
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
*                *PPR* AT PBUF+5. 
* 
*         EXIT   (A) .GT. 0 IF *PPR* SUCCESSFULLY LOADED. 
*                        OR IF REQUEST WAS FOR A CONCURRENT PP. 
*                    .EQ. 0 IF *PPR* NOT SUCCESSFULLY LOADED. 
*                BML MESSAGE ISSUED WITH PP NUMBER (SYMPTOM 
*                CODE INDICATES WHETHER OPERATION WAS SUCCESSFUL).
*                IF UNABLE TO COMPLETE DEADSTART/LOAD, THE PP 
*                IS IDLED AND ITS INPUT REGISTER SET TO ***.
* 
*         USES   T1 - T3, T6, T7, CN - CN+4.
* 
*         CALLS  IBM, IPP, NEC, PSC, SDC. 
* 
*         MACROS DCHAN, DELAY, PAUSE, READMR, WRITMR. 
  
  
 DPL11    LDD    T7 
          DCHAN              DROP CHANNEL 
          LDN    0           CLEAR CHANNEL ASSIGNED FLAG
          STM    CHFL 
          LDC    /COMSDFS/HS0113  SET NPP RETURNED SYMPTOM CODE 
 DPL12    STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T4          SET PP NUMBER
          LPN    37 
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LDN    1           SET SUCCESSFUL LOAD STATUS 
  
 DPL      SUBR               ENTRY/EXIT 
          LDM    PPCA        SET PP INPUT REGISTER ADDRESS
          RAD    T3 
          LDD    CL+2        CHECK BAD PP BEING RETURNED
          SHN    21-13
          PJN    DPL2        IF PP IS OK
          LDD    T4 
          LPN    40 
          ZJN    DPL1        IF BAD NPP 
          LDK    /COMSDFS/HS0124-/COMSDFS/HS0123
 DPL1     ADC    /COMSDFS/HS0123  SET BAD PP RETURNED SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T4          SET PP NUMBER
          LPN    37 
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LJM    DPL10       FLAG DISABLED PP AND RETURN
  
 DPL2     LDD    T4 
          LPN    40 
          ZJN    DPL3        IF NOT CONCURRENT PP 
          LDN    ZERL 
          CRD    CM 
          LDN    2           SET RETURN CPP SUBFUNCTION 
          STD    CM+1 
          LDD    T4 
          LPN    37 
          STD    CM+4        SET CPP NUMBER 
          MONITOR  CPRM      RETURN CPP 
          LDC    /COMSDFS/HS0115  SET CPP RETURNED SYMPTOM CODE 
          UJP    DPL12       ISSUE BML MESSAGE AND RETURN 
  
 DPL3     LDN    10          INITIALIZE DEADSTART/LOAD ATTEMPT COUNT
          STD    T2 
          LDD    T3          SET UP *IA*, *OA*, *MA*, *CP* FOR THIS PP
          STM    PBUF+IA+5
          ADN    1
          STM    PBUF+OA+5
          ADN    1
          STM    PBUF+MA+5
          LDN    NCPL        SET SYSTEM CONTROL POINT ADDRESS 
          CRD    CN 
          AOD    CN+1 
          SHN    7
          STM    PBUF+CP+5
 DPL4     RJM    SDC         SELECT DEADSTART CHANNEL 
          RJM    PSC         PRESET CHANNEL INSTRUCTIONS
 DPLA     ACN    **+40       ACTIVATE CHANNEL 
  
*         DEADSTART PP. 
  
          READMR RBUF,,DEMR  READ EC REGISTER 
          LDM    RBUF+4      SET PP NUMBER
 DPLB     SCN    37 
*         SCN    77          (IF IOU MODEL I2)
          LMD    T4 
 DPLC     LMN    0
*         LMN    40          (SET AUTO MODE BIT IF IOU MODEL I2)
          STM    RBUF+4 
          LDM    RBUF+5      SET CHANNEL NUMBER 
          SCN    37 
          LMD    T7 
          STM    RBUF+5 
          LDM    RBUF+6      SET LOAD MODE BIT
          SCN    37 
          ADN    20 
          STM    RBUF+6 
          LDM    RBUF+7      SET ENABLE BIT 
          SCN    40 
          ADN    40 
          STM    RBUF+7 
          WRITMR RBUF,,DEMR  WRITE EC REGISTER
          RJM    NEC         NORMALIZE EC REGISTER
  
*         LOAD *PPR*. 
  
          LDC    MSFW+1      OUTPUT START ADDRESS 
 DPLD     OAN    **+40
          DELAY 
 DPLE     EJM    DPL5,0      IF CHANNEL ACCEPTED WORD 
          LJM    DPL7        PROCESS TIME OUT 
  
 DPL5     LDC    PPFW-1 
 DPLF     OAM    PBUF+6,0    OUTPUT *PPR* 
 DPLG     SFM    DPL7,0      IF PARITY ERRORS 
 DPLH     DCN    **+40       DISCONNECT CHANNEL TO START PP 
  
*         WAIT FOR PP TO INITIALIZE.
* 
*         NOTE - THE DELAY MUST BE LONG ENOUGH TO ALLOW *PPR* 
*         PRESET TO COMPLETE (AND ISSUE THE *DPPM* TO CLEAR 
*         THE INPUT REGISTER).  IF A TIME OUT OCCURS HERE,
*         AND THE PP IS DEADSTARTED AGAIN AFTER IT IS ALREADY 
*         EXECUTING, THE RESULTS ARE UNPREDICTABLE. 
  
          LDD    TH          SET DELAY LOOP COUNT 
          STD    T6 
 DPL6     PAUSE  NE 
          DELAY 
          SOD    T6 
          ZJN    DPL8        IF TIME OUT
          LDD    T3          CHECK PP INPUT REGISTER
          CRD    CN 
          LDD    CN+1 
          SCN    77 
          SHN    6
          LMD    CN 
          LMC    3RP*V
          ZJN    DPL6        IF PP STILL ASSIGNED TO NOS/VE 
          LJM    DPL11       RETURN 
  
*         PROCESS TIME OUT AND PARITY ERRORS. 
  
 DPL7     BSS    0
 DPLI     DCN    **+40       DISCONNECT CHANNEL 
 DPL8     LDD    T7 
          DCHAN              DROP CHANNEL 
          LDN    0           CLEAR CHANNEL RESERVED FLAG
          STM    CHFL 
          SOD    T2          DECREMENT DEADSTART ATTEMPT COUNT
          ZJN    DPL9        IF DEADSTART NOT TO BE RETRIED 
          LJM    DPL4        ATTEMPT DEADSTART AGAIN
  
*         IDLE PP AND SET UNUSABLE IF UNABLE TO DEADSTART.
  
 DPL9     LDC    /COMSDFS/HS0120  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T4          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          RJM    IPP         IDLE PP
 DPL10    LDD    T3 
          CWM    DPLJ,ON     SET INPUT REGISTER TO ***
          LDN    0
          LJM    DPLX        RETURN 
 GCP      SPACE  4,25 
**        GCP - GET CURRENT STATUS OF PP-S. 
* 
*         ENTRY  (PPCA) = ADDRESS OF PP COMMUNICATION AREA. 
*                (CL+1) = TYPE OF PP BEING REQUESTED. 
*                       = 0 - NPP 0-11B ON 810/830 SYSTEMS, 
*                                 ANY NPP ON OTHER SYSTEMS. 
*                       = 1 - NPP 20B-31B ON 810/830 WITH MORE THAN 
*                                 10 NPP-S, ANY NPP ON OTHER SYSTEMS. 
*                       = 2 - CPP 0-4.
*                       = 3 - CPP 5-11B.
*                       = 4 - PARTNER PAIR OF NPP-S ON 810/830 WITH 
*                                MORE THAN 10 NPP-S, ANY TWO NPP-S
*                                ON OTHER SYSTEMS.
*                (DA) = NUMBER OF NPP-S IN SYSTEM.
*                (DB) = NUMBER OF CPP-S IN SYSTEM.
* 
*         EXIT   (T4) = NUMBER OF AVAILABLE UPPER BANK PP-S 
*                       IF MORE THAN 10 PP-S IN SYSTEM. 
*                (T5) = NUMBER OF DEDICATED NPP-S OR CPP-S. 
* 
*         USES   T1, T2, T3, T4, T5, T7, CM - CM+4, CN - CN+4.
  
  
 GCP      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T4          INITIALIZE COUNT OF UPPER PP-S AVAILABLE 
          STD    T5          INITIALIZE COUNT OF DEDICATED PP-S 
          LDN    12 
          STD    T2          INITIALIZE LOOP COUNTER FOR LOWER BARREL 
          LDM    PPCA        SET UP BASE PP INPUT REGISTER ADDRESS
          STD    T3 
          LDD    CL+1 
          LPN    VCPT 
          ZJN    GCP1        IF REQUESTING NPP OR PAIR
          LDD    DA          BIAS PAST NPP COMMUNICATIONS AREAS 
          SHN    3
          RAD    T3 
          LDD    DB 
          UJN    GCP2        SET CPP COUNT
  
 GCP1     LDD    DA          NPP COUNT
 GCP2     SBN    12 
          PJN    GCP4        IF TEN OR MORE PP-S
          RAD    T2          ADJUST COUNTER 
 GCP3     LDN    0
 GCP4     STD    T1          UPPER BARREL PP COUNT
 GCP5     LDN    0           INITIALIZE TABLE INDEX 
          STD    T7 
          LDD    T3          READ NEXT INPUT REGISTER 
          CRD    CN 
 GCP6     LDD    CN          CHECK FOR DEDICATED PP 
          LMM    TDPP,T7
          NJN    GCP7        IF NO MATCH
          LDD    CN+1 
          SCN    77 
          LMM    TDPP+1,T7
          NJN    GCP7        IF NO MATCH
          AOD    T5          COUNT DEDICATED PP 
          UJN    GCP8        READ NEXT INPUT REGISTER 
  
 GCP7     LDN    2           INCREMENT INDEX
          RAD    T7 
          SBN    TDPPL
          MJN    GCP6        IF NOT END OF TABLE
 GCP8     LDN    10          ADVANCE TO NEXT INPUT REGISTER 
          RAD    T3 
          SOD    T2 
          NJN    GCP5        IF NOT FINISHED WITH THIS BARREL 
          LDD    T1          PP COUNT FOR NEXT BARREL 
          ZJN    GCP9        IF NO PP-S LEFT TO CHECK 
          STD    T2          LOOP COUNTER FOR NEXT BARREL 
          ADD    T5          CURRENT TOTAL DEDICATED PP-S 
          STD    T4          DEDICATED LOWER PP-S PLUS TOTAL UPPER PP-S 
          UJP    GCP3        CHECK NEXT BARREL
  
 GCP9     LDD    T4          DEDICATED LOWER PP-S PLUS TOTAL UPPER PP-S 
          SBD    T5          REDUCE BY TOTAL DEDICATED PP-S 
          STD    T4          AVAILABLE UPPER BARREL PP-S
          LJM    GCPX        RETURN 
 TDPP     SPACE  4,10 
**        TDPP - TABLE OF DEDICATED PP-S. 
* 
*         TWO WORD ENTRY. 
* 
*T,       18/NAME OF DEDICATED PP ROUTINE, 6/0
  
  
 TDPP     BSS    0           TABLE OF DEDICATED PP-S
          VFD    24/3L*VP    NOS/VE PP
          VFD    24/0LMTR 
          VFD    24/0LDSD 
          VFD    24/0LDIS 
          VFD    24/0LO26 
          VFD    24/0L1CD 
          VFD    24/0L1HP 
          VFD    24/0L1XM 
          VFD    24/0L1TS 
          VFD    24/0L1TN 
          VFD    24/0L1TM 
          VFD    24/0LPIP 
          VFD    24/0LNDR 
          VFD    24/0LDFT 
          VFD    24/0LSCD 
          VFD    24/0LCPD 
          VFD    24/0LMDD 
          VFD    24/0LMTE 
          VFD    24/3L*** 
  
 TDPPL    EQU    *-TDPP      LENGTH OF DEDICATED PP TABLE 
 IPP      SPACE  4,15 
**        IPP - IDLE PP.
* 
*         ENTRY  (T3) = PP INPUT REGISTER ADDRESS.
*                (PPCA) = PP COMMUNICATION AREA ADDRESS.
*                (EC) = ELEMENT CONNECT CODE FOR IDLE PP. 
* 
*         EXIT   (A) = SYMPTOM CODE FOR PP ASSIGNMENT IF SUCCESSFUL.
*                    .LT. 0 IF UNABLE TO IDLE.
*                (T5) = PP NUMBER.
*                BML MESSAGE ISSUED IF UNABLE TO IDLE.
* 
*         USES   T1, T2, T5, CN - CN+4. 
* 
*         CALLS  IBM, NEC.
* 
*         MACROS DELAY, LOCKMR, PAUSE, READMR, WRITMR.
  
  
 IPP      SUBR               ENTRY/EXIT 
          LDD    T3          COMPUTE NUMBER OF PP 
          SBM    PPCA 
          SHN    -3 
          STD    T5 
          SBN    12 
          MJN    IPP2        IF PP NUMBER 0 - 11
          SBN    12 
          MJN    IPP1        IF PP NUMBER 20 - 31 
          ADN    40          ADJUST CPP NUMBER
          STD    T5 
          LDC    /COMSDFS/HS0114  CPP ASSIGNMENT SYMPTOM CODE 
          UJN    IPPX        RETURN 
  
 IPP1     LDN    6           ADJUST UPPER BANK PP NUMBER
          RAD    T5 
 IPP2     READMR RBUF,,DEMR  READ EC REGISTER 
          LDM    RBUF+4      SET PP NUMBER
 IPPA     SCN    37 
*         SCN    77          (IF IOU MODEL I2)
          LMD    T5 
 IPPB     LMN    0
*         LMN    40          (SET AUTO MODE BIT IF IOU MODEL I2)
          STM    RBUF+4 
          LDM    RBUF+6      SET IDLE MODE BIT, K REGISTER (10B)
          SCN    37 
          ADN    6
          STM    RBUF+6 
          LDM    RBUF+7      SET ENABLE BIT 
          SCN    40 
          ADN    40 
          STM    RBUF+7 
          LDN    10          INITIALIZE TIME OUT COUNT
          STD    T2 
  
*         LOOP UNTIL PP IS IDLED. 
  
 IPP3     LOCKMR SET         GET LONG TERM INTERLOCK
          WRITMR RBUF,,DEMR  WRITE EC REGISTER
          READMR IBUF,,ISTR  READ INPUT STATUS REGISTER 
          LOCKMR CLEAR       CLEAR LONG TERM INTERLOCK
          LDM    IBUF+4      CHECK IF PP IN IDLE MODE 
          LPN    3
          SHN    10 
          ADM    IBUF+5 
          SHN    10 
          ADM    IBUF+6 
          LMC    107700 
          ZJP    IPP5        IF PP IDLING 
          SOD    T2 
          ZJN    IPP4        IF TIME OUT
          PAUSE  NE 
          DELAY 
          LJM    IPP3        LOOP 
  
*         ISSUE BML MESSAGE.
  
 IPP4     LDC    /COMSDFS/HS0121  SET SYMPTOM CODE
          STD    T1 
          LDN    ZERL        CLEAR DATA WORD
          CRD    CN 
          LDD    T5          SET PP NUMBER
          STD    CN+4 
          LDC    /COMSDFS/HM0240  SET MESSAGE ID
          RJM    IBM         ISSUE BML MESSAGE
          LDD    T3          SET *** IN INPUT REGISTER
          CWM    DPLJ,ON
          RJM    NEC         NORMALIZE EC REGISTER
          LCN    1
          LJM    IPPX        RETURN 
  
*         NORMALIZE EC REGISTER.
  
 IPP5     RJM    NEC         NORMALIZE EC REGISTER
          LDC    /COMSDFS/HS0112  NPP ASSIGNMENT SYMPTOM CODE 
          LJM    IPPX        RETURN 
 PSC      SPACE  4,10 
**        PSC - PRESET CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (T7) = CHANNEL NUMBER. 
* 
*         EXIT   CHANNEL INSTRUCTIONS MODIFIED. 
* 
*         USES   T1, T5.
  
  
 PSC      SUBR               ENTRY/EXIT 
          LDC    TPSC-1      INITIALIZE CHANNEL TABLE ADDRESS 
          STD    T1 
 PSC1     AOD    T1          ADVANCE CHANNEL TABLE
          LDI    T1 
          ZJN    PSCX        IF END OF TABLE
          STD    T5          MODIFY CHANNEL INSTRUCTION 
          LDI    T5 
          SCN    37 
          LMD    T7 
          STI    T5 
          UJN    PSC1        LOOP 
  
  
**        TPSC - TABLE OF CHANNEL INSTRUCTIONS. 
  
 TPSC     BSS    0
          CON    DPLA 
          CON    DPLD 
          CON    DPLE 
          CON    DPLF 
          CON    DPLG 
          CON    DPLH 
          CON    DPLI 
          CON    MREA 
          CON    0           END OF TABLE 
 SPB      SPACE  4,15 
**        SPB - SET PP BOUNDS BIT.
* 
*         ENTRY  (A) = 6/BIT VALUE, 12/PP NUMBER. 
*                      BIT VALUE = 1 TO SET LOWER PP. 
*                                = 0 TO SET UPPER PP. 
*                (EC) = IOU CONNECT CODE. 
*                (SPBA) = NIO BARREL CONFIGURATION. 
*                (SPBB) = NUMBER OF NIO BARRELS.
* 
*         EXIT   PP OS BOUNDS REGISTER SET FOR GIVEN PP.
* 
*         USES   T2, T7.
* 
*         MACROS LOCKMR, READMR, WRITMR.
  
  
 SPB      SUBR               ENTRY/EXIT 
          STD    T7          SAVE LOGICAL PP NUMBER 
          SHN    -14
          STM    SPBE        SAVE BOUNDS BIT VALUE
          LDN    0
          STD    T2 
          LDD    T7 
          SBN    40 
          MJN    SPB2        IF NOT CONCURRENT IOU
          STD    T7 
 SPBG     UJN    SPB0        (IOU MODEL 40) 
*         PSN                (IOU MODEL 42) 
  
          LDN    3
          STD    T2 
          LDK    IOSB        USE NIO REGISTER 
          UJN    SPB1.1      READ AND ALTER OS BOUNDS REGISTER
  
 SPB0     SBN    5
          MJN    SPB1        IF IN LOWER OF THE TWO BARRELS 
          STD    T7 
          AOD    T2 
 SPB1     LDK    OBCR        SET UP FOR CONCURRENT OS BOUNDS
 SPB1.1   STD    RN 
          UJN    SPB5        READ AND ALTER OS BOUNDS REGISTER
  
 SPB2     ADN    20 
          MJN    SPB3        IF IN LOWER 10 PP-S
          STD    T7 
          AOD    T2 
          AOD    T2 
 SPB3     LDD    T7 
          SBN    5
          MJN    SPB4        IF IN LOWER BARREL OF THE TWO
          STD    T7 
          AOD    T2 
 SPB4     LDK    IOSB        SET UP FOR NON-CONCURRENT OS BOUNDS
          STD    RN 
          LDD    T2 
 SPBA     ADN    ** 
*         ADN    0           (BARREL RECONFIGURATION) 
*         ADN    1
*         ADN    2
*         ADN    3
          STD    T2 
 SPBB     SBN    ** 
*         SBN    1           (NUMBER OF BARRELS)
*         SBN    2
*         SBN    3
*         SBN    4
          MJN    SPB5        IF NO OVERFLOW 
          STD    T2 
 SPB5     LDC    SHNI        SET BIT SHIFT INSTRUCTION
          ADD    T7 
          STM    SPBC 
          STM    SPBF 
          LOCKMR SET
          READMR RBUF        READ APPLICABLE CURRENT OS BOUNDS DATA 
          LDM    RBUF,T2
          STM    SPBD 
          LCN    1
 SPBC     SHN    ** 
          LPC    ** 
 SPBD     EQU    *-1
          STM    RBUF,T2
          LDC    ** 
 SPBE     EQU    *-1
 SPBF     SHN    ** 
          LMM    RBUF,T2     ADD NEW BIT TO REGISTER DATA 
          STM    RBUF,T2
          WRITMR RBUF        SET NEW OS BOUNDS REGISTER 
          LOCKMR CLEAR
          LJM    SPBX        RETURN 
 SRA      SPACE  4,10 
**        SRA - SET NOS REQUEST HEADER ADDRESS. 
* 
*         EXIT   (A) = ADDRESS OF NOS REQUEST HEADER. 
  
  
 SRA      SUBR               ENTRY/EXIT 
 SRAA     LDC    **          (ADDRESS OF NOS REQUEST HEADER)
          UJN    SRAX        RETURN 
 VPN      SPACE  4,15 
**        VPN - VALIDATE PP NUMBER. 
* 
*         ENTRY  (A) = PP NUMBER. 
*                (DA) = NUMBER OF SYSTEM NPP-S. 
*                (DB) = NUMBER OF SYSTEM CPP-S. 
* 
*         EXIT   (A) = 0, IF ASSIGNED TO NOS/VE.
*                    = *ESIR*, IF INCORRECT NUMBER. 
*                    = *ESPP*, IF NOT ASSIGNED TO NOS/VE. 
*                    = *ESCP*, IF CONCURRENT PP NOT PRESENT.
*                (T3) = PP OFFSET INTO COMMUNICATION AREA.
*                (T4) = PP NUMBER.
*                (CM - CM+4) = INPUT REGISTER.
* 
*         USES   T3, T4, CM - CM+4. 
  
  
 VPN7     LDD    T4 
 VPN8     SHN    3
          STD    T3 
          ADM    PPCA        CHECK IF ASSIGNED TO NOS/VE
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          LMC    3RP*V
          ZJN    VPNX        IF ASSIGNED TO NOS/VE
          LDN    ESPP        SET ERROR CODE 
  
 VPN      SUBR               ENTRY/EXIT 
          STD    T4 
          SBN    10D
          MJN    VPN7        IF LOWER BANK PP 
          SBN    40-10D 
          PJN    VPN5        IF CONCURRENT PP 
          LDD    DA 
          SBN    11D
          PJN    VPN3        IF UPPER PP-S EXIST ON SYSTEM
 VPN1     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
 VPN2     UJN    VPNX        RETURN 
  
 VPN3     LDD    T4 
          SBN    20 
          MJN    VPN1        IF 12 .LE. PP NUMBER .LE. 17 
          SBN    32-20
          PJN    VPN1        IF PP NUMBER .GT. 31 
          SBK    6-32 
 VPN4     LJM    VPN8        CHECK IF VE ASSIGNED AND RETURN
  
 VPN5     SBD    DB 
          MJN    VPN6        IF AN EXISTING CPP NUMBER
          LDD    T4 
          SBN    52 
          PJN    VPN1        IF NOT A VALID CPP NUMBER
          LDK    ESCP        SET CONCURRENT PP NOT PRESENT (*ESCP*) 
          UJN    VPN2        RETURN 
  
 VPN6     LDD    T4 
          SBN    6+6
          UJN    VPN4        CHECK IF VE ASSIGNED AND RETURN
          SPACE  4,10 
**        CODE PAST THIS POINT MAY BE OVERLAID BY *PBUF*. 
* 
*         *PBUF* IS USED ONLY FOR THE *RSP* FUNCTION. 
*         *PBUF* MUST HAVE TWO RESERVED WORDS PRECEEDING IT FOR DISK
*         LINKAGE BYTES.
  
          ERRNG  PBUF-*-2    ERROR IF PBUF OVERLAYS EARLIER CODE
          TITLE  SUBROUTINES OVERLAYABLE BY *PBUF*. 
 CUA      SPACE  4,10 
**        CUA - CHECK IF UNIT ASSIGNED TO NOS/VE. 
* 
*         ENTRY  (DC) = CORRESPONDING BIT NUMBER OF UNIT. 
*                (CN - CN+4) = EST ENTRY. 
* 
*         EXIT   (A) .LT. 0 IF NOT MASS STORAGE DEVICE. 
*                    = 0 IF UNIT NOT ASSIGNED TO NOS/VE.
*                    = *ESAA* STATUS IF UNIT ASSIGNED TO NOS/VE.
* 
*         USES   CM - CM+4. 
  
  
 CUA2     LCN    0           SET NOT MASS STORAGE FLAG
  
 CUA      SUBR               ENTRY/EXIT 
          LDD    CN 
          SHN    21-13
          PJN    CUA2        IF NOT MASS STORAGE DEVICE 
          LDD    CN+4        GET UNIT ASSIGNMENT STATUS 
          SHN    3
          ADN    NVGL 
          CRD    CM 
          LDC    SHNI+21     SET SHIFT COUNT
          SBD    DC 
          STM    CUAA 
          LDD    CM+4 
 CUAA     SHN    ** 
          MJN    CUA1        IF UNIT ASSIGNED TO NOS/VE 
          LDN    0           SET UNIT NOT ASSIGNED STATUS 
          UJN    CUAX        RETURN 
  
 CUA1     LDN    ESAA        SET UNIT ALREADY ASSIGNED STATUS 
          UJN    CUAX        RETURN 
 DCA      SPACE  4,10 
**        DCA - DETERMINE CHANNEL AVAILABILITY. 
* 
*         ENTRY  (T2) = CHANNEL NUMBER. 
*                (RBUF - RBUF+CTALL*5) = CHANNEL STATUS TABLE.
* 
*         EXIT   (A) = 0 IF CHANNEL PREVIOUSLY ASSIGNED.
*                (CM+1) .NE. 0 IF CHANNEL ASSIGNED. 
* 
*         USES   T3, T4, CM - CM+4. 
* 
*         CALLS  SEC, VRC.
* 
*         MACROS MONITOR. 
  
  
 DCA      SUBR               ENTRY/EXIT 
          LDM    RBUF,T2
          SHN    21-5 
          PJN    DCA1        IF CHANNEL IS UP 
          LJM    DCA8        CHECK EQUIPMENT ON DOWN CHANNEL
  
*         CHANNEL IS UP.  SEARCH FOR EQUIPMENT CONFIGURED ON IT.
  
 DCA1     LDD    T2          CHECK IF CONSOLE CHANNEL 
          LMN    CHDS 
          ZJN    DCA4        IF CONSOLE CHANNEL 
          LDD    T2 
          SBN    20 
          MJN    DCA2        IF CHANNEL 0-17B 
          SBN    40-20
          MJN    DCA2        IF CHANNEL 20B-37B 
          SBN    56-40
 DCA2     ADN    4
          PJN    DCA4        IF REQUESTED 14B-17B, 34B-37B, OR OVER 51B 
 DCA3     LDD    LE 
          RJM    SEC         SEARCH FOR EQUIPMENT ON THIS CHANNEL 
          ZJN    DCA6        IF NO EQUIPMENT FOUND
 DCA4     LDN    0           SET CHANNEL NOT ASSIGNED 
          STD    CM+1 
          LDN    1
 DCA5     UJN    DCAX        RETURN 
  
 DCA6     STD    CM+1        CLEAR EST ORDINAL
          STD    CM+4        CLEAR MUX FLAG 
          LDN    DNCS        SET SUBFUNCTION
          STD    CM+2 
          LDD    T2          SET CHANNEL NUMBER 
          STD    CM+3 
          MONITOR  SEQM      DOWN UNCONFIGURED CHANNEL
 DCA7     RJM    VRC         VE RESERVE CHANNEL 
          LDD    T4 
          UJN    DCA5        RETURN 
  
*         CHANNEL IS DOWN.  CHECK FOR NON-TRANSFERRABLE EQUIPMENT.
  
 DCA8     LDD    LE 
 DCA9     RJM    SEC         SEARCH FOR EQUIPMENT ON THIS CHANNEL 
          PJN    DCA7        IF NO EQUIPMENT FOUND
          LDN    0           INITIALIZE TABLE INDEX 
          STD    T4 
 DCA10    LDM    TEQT,T4
          ZJN    DCA3        IF END OF TABLE
          LMD    CM+3 
          LPC    3777 
          ZJN    DCA9        IF EQUIPMENT IS TRANSFERRABLE
          AOD    T4 
          UJN    DCA10       CHECK NEXT TABLE ENTRY 
  
 TEQT     SPACE  4,10 
**        TEQT - TABLE OF TRANSFERRABLE EQUIPMENT.
* 
*         ONE WORD ENTRY. 
* 
*T        12/2RMN 
*         MN = MNEMONIC OF EQUIPMENT THAT MAY BE TRANSFERRED TO NOS/VE. 
  
  
 TEQT     BSS    0           TABLE OF TRANSFERRABLE EQUIPMENT 
          VFD    12/2RAT
          VFD    12/2RCT
          VFD    12/2RMT
          VFD    12/2RNT
          VFD    12/2RDJ
          VFD    12/2RDL
          VFD    12/2RDM
          VFD    12/2RDQ
          VFD    12/0        END OF TABLE 
 SEC      SPACE  4,15 
**        SEC - SEARCH FOR EQUIPMENT ON SPECIFIED CHANNEL.
* 
*         ENTRY  (A) = EST ORDINAL+1 FROM WHICH TO START SEARCH.
*                    = 0 IF (T3) = STARTING EST ORDINAL+1.
*                (T2) = CHANNEL NUMBER. 
* 
*         EXIT   (A) = 0 IF NONE FOUND. 
*                    = (T3) = EST ORDINAL OF EQUIPMENT FOUND. 
*                (CM - CM+4) = EST ENTRY WORD *EQDE*. 
* 
*         USES   T1, T3, CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 SEC3     LDD    T3          RETURN EST ORDINAL 
  
 SEC      SUBR               ENTRY/EXIT 
          ZJN    SEC1        IF NOT INITIAL CALL
          STD    T3          SAVE EST ORDINAL 
 SEC1     SOD    T3          DECREMENT EST ORDINAL
          SBN    NOPE-1 
          ZJN    SECX        IF END OF EST
          SFA    EST,T3 
          ADK    EQDE 
          CRD    CM          READ EST ENTRY 
          LDD    CM+3 
          ZJN    SEC1        IF NULL ENTRY
          LMC    2RDE 
          ZJN    SEC1        IF *DE* EQUIPMENT
          LDN    CM 
          STD    T1 
 SEC2     AOD    T1 
          LMN    CM+3 
          ZJN    SEC1        IF BOTH CHANNELS CHECKED 
          LDI    T1 
          ZJN    SEC2        IF CHANNEL NOT PRESENT 
          LMD    T2 
          LPN    77 
          ZJN    SEC3        IF CHANNEL MATCH 
          UJN    SEC2        CHECK NEXT CHANNEL 
 SEE      SPACE  4,20 
**        SEE - SEARCH EST FOR EQUIPMENT. 
* 
*         ENTRY  (CL - CL+4) = 6/CH, 6/EQ, 6/UN, 42/0.
*                CH = CHANNEL TO BE MATCHED.
*                EQ = EQUIPMENT (CONTROLLER) NUMBER TO BE MATCHED.
*                UN = UNIT NUMBER TO BE MATCHED.
* 
*         EXIT   (A) .LT. 0 IF EST ENTRY NOT FOUND. 
*                (T7) = EST ORDINAL IF ENTRY FOUND. 
*                (CN - CN+4) = EST ENTRY. 
*                (DC) = BIT NUMBER OF UNIT CORRESPONDING TO POSITION
*                       IN *DDLL* UNIT LIST.
* 
*         USES   DA, DB, DC, T1, T3 - T5, T7, CM - CM+4, CN - CN+4. 
* 
*         MACROS SFA. 
  
 SEE10    LCN    0           RETURN NOT FOUND FLAG
  
 SEE      SUBR               ENTRY/EXIT 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T7 
          LDD    CL          SAVE CHANNEL NUMBER
          SHN    14 
          STD    T4 
          SHN    -14
          STD    T5          SAVE EQUIPMENT (CONTROLLER) NUMBER 
          LDD    CL+1        SAVE UNIT NUMBER 
          SHN    -6 
          STD    T3 
 SEE1     AOD    T7          ADVANCE EST ORDINAL
          LMD    LE 
          ZJN    SEE10       IF END OF EST
          SFA    EST,T7 
          ADK    EQDE 
          CRD    CN          READ EST ENTRY 
          LDD    CN+3 
          ZJN    SEE1        IF NULL ENTRY
          LMC    2RDE 
          ZJN    SEE1        IF *DE* EQUIPMENT
          LDN    CN 
          STD    T1 
 SEE2     AOD    T1 
          LMN    CN+3 
          ZJN    SEE1        IF BOTH CHANNELS CHECKED 
          LDI    T1 
          ZJN    SEE2        IF CHANNEL NOT PRESENT 
          LMD    T4 
          LPN    77 
          NJN    SEE2        IF CHANNEL DOESN-T MATCH 
          LDD    CN 
          SHN    21-13
          MJN    SEE4        IF MASS STORAGE DEVICE 
  
*         CHECK NON-MASS STORAGE DEVICE.
  
          LDD    CN+4        CHECK EQUIPMENT (CONTROLLER) NUMBER
          SHN    -11
          LMD    T5 
 SEE2.1   NJN    SEE1        IF DIFFERENT EQUIPMENT NUMBER
          LDD    CN+4        CHECK FOR MATCHING UNIT NUMBER 
          LPN    17 
          LMD    T3 
 SEE3     NJN    SEE2.1      IF DIFFERENT UNIT NUMBER 
          LJM    SEEX        RETURN 
  
*         CHECK MASS STORAGE DEVICE.
  
 SEE4     LDD    CN 
          SHN    21-7 
          PJN    SEE5        IF NOT *LDAM* TYPE 
          LDD    T5 
          NJN    SEE3        IF NON-ZERO EQUIPMENT (CONTROLLER) NUMBER
          UJN    SEE6        CHECK FOR MATCHING UNIT NUMBER 
  
 SEE5     LDD    CN+2 
          SHN    -11
          LMD    T5 
          NJN    SEE3        IF EQUIPMENT (CONTROLLER) NUMBERS DIFFER 
  
*         CHECK UNIT NUMBER.
  
 SEE6     LDD    CN+4        READ UNIT LIST FROM MST
          SHN    3
          ADN    DDLL 
          CRD    CM 
          LDD    CM 
          LPN    7
          STD    DA          SAVE NUMBER OF UNITS 
          LDN    4           INITIALIZE NUMBER OF BYTES IN UNIT LIST
          STD    DB 
          LDN    0           INITIALIZE CORRESPONDING *NVGL* BIT NUMBE
          STD    DC 
 SEE7     LDM    CM,DB       CHECK FOR MATCHING UNIT NUMBERS
          LPN    77 
          LMD    T3 
          ZJN    SEE9        IF UNIT NUMBERS MATCH
          AOD    DC          INCREMENT CORRESPONDING BIT NUMBER 
          SOD    DA          DECREMENT NUMBER OF UNITS
 SEE8     MJN    SEE3        IF END OF UNIT LIST
          LDM    CM,DB
          SHN    -6 
          LMD    T3 
          ZJN    SEE9        IF UNIT NUMBERS MATCH
          SOD    DB 
          AOD    DC          INCREMENT CORRESPONDING BIT NUMBER 
          SOD    DA          DECREMENT NUMBER OF UNITS
          MJN    SEE8        IF END OF UNIT LIST
          UJN    SEE7        CHECK NEXT UNIT IN LIST
  
 SEE9     LJM    SEEX        RETURN 
 VCN      SPACE  4,10 
**        VCN - VALIDATE CHANNEL NUMBER.
* 
*         ENTRY  (CL - CL+4) = CURRENT PARAMETER LIST ENTRY.
* 
*         EXIT   (A) = ERROR RESPONSE CODE IF CHANNEL NUMBER INCORRECT. 
*                (A) .LT. 0 IF CHANNEL NUMBER IS CORRECT. 
*                (T2) = CHANNEL NUMBER, BIASED BY 40B IF CIO CHANNEL. 
* 
*         USES   T2.
  
  
 VCN1     LDD    T2 
          SBK    MXNC+1 
          MJN    VCNX        IF CHANNEL NUMBER IS CORRECT 
 VCN2     LDD    TH          SET INCORRECT REQUEST STATUS (*ESIR*)
  
 VCN      SUBR
          LDD    CL          CHANNEL NUMBER 
          SHN    -6 
          STD    T2 
          LDD    CL+1        GET TYPE 
          SBK    VNCT 
          ZJN    VCN1        IF NIO CHANNEL REQUEST 
          SBK    VCCT-VNCT
          NJN    VCN2        IF NOT CIO CHANNEL REQUEST 
          LDN    40 
          RAD    T2 
          SBK    MXCH+1 
          PJN    VCN2        IF CHANNEL NUMBER OUT OF RANGE 
          ADK    MXCH+1-40
          SBD    DB 
          MJN    VCNX        IF CHANNEL IS IN SYSTEM
          LDK    ESCC        SET CIO CHANNEL NOT PRESENT (*ESCC*) 
          UJN    VCNX        RETURN WITH ERROR STATUS 
 VET      SPACE  4,15 
**        VET - VALIDATE EQUIPMENT TRANSFERABILITY. 
* 
*         ENTRY  (CN - CN+4) = EST ENTRY. 
*                (T7) = EST ORDINAL.
*                (NEJT) = NOS/VE EJT ORDINAL. 
* 
*         EXIT   (A) = 0 IF EQUIPMENT DOWN AND NOT ASSIGNED TO NOS/VE.
*                    .LT. 0 IF ALREADY ASSIGNED TO NOS/VE.
*                    = *ESEQ* ERROR STATUS IF NOT DOWN. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 VET2     LCN    0           SET STATUS 
  
 VET      SUBR               ENTRY/EXIT 
          LDD    CN 
          LPN    3
          LMN    3
          NJN    VET1        IF EQUIPMENT NOT DOWN
          SFA    EST,T7      CHECK EQUIPMENT ASSIGNMENT 
          ADK    EQAE 
          CRD    CM 
          LDM    NEJT 
          LMD    CM+4 
          ZJN    VET2        IF ASSIGNED TO NOS/VE
          LDN    0           SET NOT ASSIGNED STATUS
          UJN    VETX        RETURN 
  
 VET1     LDN    ESEQ        SET EQUIPMENT NOT AVAILABLE STATUS 
          UJN    VETX        RETURN 
          TITLE  PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET VIRTUAL ENVIRONMENT REQUEST OVERLAY. 
* 
*         EXIT   (POFA) = FUNCTION PROCESSOR ADDRESS. 
*                (SRAA - SRAA+1) = NOS REQUEST HEADER ADDRESS.
*                (RNCA - RNCA+1) = (STCA - STCA+1) = FWA
*                        OF CHANNEL EJT ASSIGNMENT TABLE. 
*                (DA) = NUMBER OF NPP-S IN SYSTEM.
*                (DB) = NUMBER OF CPP-S IN SYSTEM.
* 
*         USES   DA, DB, CN - CN+4. 
* 
*         CALLS  SRI. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          RJM    SEA         LOCATE DFT/OS BUFFER 
          ADN    DSCM+3 
          CRD    CM 
          LDD    CM+2        READ *DFT* CONTROL WORD
          SHN    14 
          LMD    CM+3 
          SHN    -4 
          SHN    6
          LMD    CM 
          ADN    DFRQ        READ NOS REQUEST AREA POINTER
          CRD    CM 
          LDD    CM+2        SET ADDRESS OF NOS REQUEST HEADER
          SHN    14 
          LMD    CM+3 
          SHN    -4 
          SHN    6
          LMD    CM 
          STM    SRAA+1      SAVE ADDRESS 
          SHN    -14
          RAM    SRAA 
          LDK    CHTP 
          CRD    CN 
          LDD    CN+2        SAVE EJT ASSIGNMENT TABLE ADDRESS
          SHN    14 
          LMD    CN+3 
          ADN    CTALL
          STM    RNCA+1 
          STM    STCA+1 
          SHN    -14
          RAM    RNCA 
          STM    STCA 
          LDD    CN+2        SAVE CHANNEL STATUS TABLE ADDRESS
          RAM    RSCA 
          LDD    CN+3 
          STM    RSCA+1 
          RJM    SRI         SET RECONFIGURATION INFORMATION
          LDN    PPUL        GET THE PP COUNTS
          CRD    CN 
          LDD    CN+2 
          STD    DA          NUMBER OF NPP-S IN SYSTEM
          LDD    CN+3 
          LPN    77 
          STD    DB          NUMBER OF CPP-S/CIO CHANNELS IN SYSTEM 
          LDM    TFCN,IR+2   SET FUNCTION PROCESSOR ADDRESS 
          STM    POFA 
          LJM    PRSX        RETURN 
  
 SRI      SPACE  4,10 
**        SRI - SET RECONFIGURATION INFORMATION.
* 
*         ENTRY  (EC) = IOU CONNECT CODE. 
* 
*         EXIT   (SPBA) = NIO BARREL CONFIGURATION. 
*                (SPBB) = NUMBER OF NIO BARRELS PRESENT.
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS READMR.
  
  
 SRI      SUBR               ENTRY/EXIT 
          LDN    0           INITIALIZE BARREL COUNT
          STD    T1 
          LDN    2           SET WORD COUNT 
          STD    T2 
          LDK    EABL+IOEI   READ IOU INFORMATION 
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          ADD    CM 
          SHN    6
          CRM    SRIA,T2
          LDM    SRIA+/DSL/PPP0  CHECK ALL PP-S PRESENT IN BARREL 1 
          NJN    SRI3        IF ONLY ONE BARREL 
          LDM    SRIA+/DSL/PPP1 
          SHN    21-4 
          MJN    SRI2        IF ONLY TWO BARRELS
          NJN    SRI1        IF THREE BARRELS 
          AOD    T1 
 SRI1     AOD    T1 
 SRI2     AOD    T1 
 SRI3     AOD    T1 
          RAM    SPBB        SET NUMBER OF BARRELS
          LDM    SRIA+/DSL/HDMN  GET IOU MODEL NUMBER 
          SHN    -4 
          LMC    0#42 
          NJN    SRI4        IF NOT MODEL 42 IOU
          LDN    PSNI 
          STM    SPBG 
          UJN    SRI5        CONTINUE RECONFIGURATION 
  
 SRI4     SHN    -4 
          SBN    1
          ZJN    SRI6        IF IOU MODEL I1
          MJN    SRI5        IF NOT MODEL I2
          LDN    40          MODIFY EC REGISTER SETTINGS FOR I2 
          RAM    DPLB 
          STM    IPPA 
          LDN    40 
          RAM    DPLC 
          STM    IPPB 
 SRI5     AOM    SRIB        MODIFY FOR IOU MODEL I2 OR I4
 SRI6     READMR SRIA,,ISTR 
          LDM    SRIA+7 
          SHN    -3 
 SRIB     LPN    2           (IOU MODEL I1) 
*         LPN    3           (IOU MODEL I2 OR I4) 
          RAM    SPBA        SET NIO BARREL RECONFIGURATION 
          LJM    SRIX        RETURN 
  
 SRIA     BSS    2*5         IOU INFORMATION
 TFCN     SPACE  4,10 
**        TFCN - TABLE OF FUNCTION PROCESSOR ADDRESSES. 
* 
*         ONE WORD INDEXED BY FUNCTION CODE.
* 
*T        12/ ADDR
* 
*         ADDR   ADDRESS OF FUNCTION PROCESSOR. 
  
  
 TFCN     BSS    0           TABLE OF FUNCTION PROCESSOR ADDRESSES
          LOC    0
  
 RSCM     FCN    EOS         RESERVE CM                 (IN MAIN) 
 RSPP     FCN    EOS         RESERVE PP                 (IN MAIN) 
 RSCH     FCN    EOS         RESERVE CHANNEL            (IN MAIN) 
 RSEQ     FCN    REQ         RESERVE EQUIPMENT
 RNCM     FCN    EOS         RETURN CM                  (IN MAIN) 
 RNPP     FCN    EOS         RETURN PP                  (IN MAIN) 
 RNCH     FCN    EOS         RETURN CHANNEL             (IN MAIN) 
 RNEQ     FCN    TEQ         RETURN EQUIPMENT 
 STCM     FCN    EOS         STATUS CM                  (IN MAIN) 
 STPP     FCN    EOS         STATUS PP                  (IN MAIN) 
 STCH     FCN    EOS         STATUS CHANNELS            (IN MAIN) 
 STEQ     FCN    SEQ         STATUS EQUIPMENT 
 STMR     FCN    EOS         STATUS AVAILABLE RESOURCES (IN MAIN) 
 SFRC     FCN    FRC         SET FREE-RUNNING COUNTER TO VALUE
 RSPT     FCN    RSP         RESERVE NPP, NPP PARTNER PAIR OR CPP 
 RSCT     FCN    RSC         RESERVE NIO OR CIO CHANNEL 
 RNPT     FCN    RNP         RETURN NPP, CPP OR ALL PP-S
 RNCT     FCN    RNC         RETURN NIO OR CIO CHANNEL OR ALL CHANNELS
 STPT     FCN    STP         STATUS NPP-S AND/OR CPP-S
 STCT     FCN    STC         STATUS NIO AND/OR CIO CHANNELS 
  
 MXVR     BSS    0           MAXIMUM *VER* REQUEST + 1
          LOC    *O 
 TFCNL    EQU    *-TFCN      LENGTH OF FUNCTION CODE TABLE
 EOS      SPACE  4,10 
**        EOS -  ERROR IN OVERLAY SELECTION.
* 
*         OVERLAY *2VR* IS EXECUTING WITH A FUNCTION WHICH SHOULD 
*         HAVE BEEN PROCESSED IN THE MAIN *VER* OVERLAY.
* 
*         ENTRY  OVERLAY PRESET COMPLETED.
* 
*         EXIT   TO *ERR* IN MAIN OVERLAY.
  
  
 EOS      SUBR               ENTRY (NO EXIT)
          ABORT  EROS        * VER - OVERLAY SELECTION ERROR* 
          SPACE  4,10 
*         CHECK FOR OVERFLOW. 
  
  
          OVERFLOW  OVLA,EPFW 
          TTL    VER - VIRTUAL ENVIRONMENT REQUEST PROCESSOR. 
          END 
