MSI 
          IDENT  MSI,ORIG 
          ABS 
          SST 
          ENTRY  MSI
          ENTRY  FLAW 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          ENTRY  UTL= 
          SYSCOM B1 
*COMMENT  MSI - MASS STORAGE DEVICE INITIALIZATION. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  MSI - MASS STORAGE DEVICE INITIALIZATION.
          SPACE  4
***       MSI - MASS STORAGE DEVICE INITIALIZATION. 
*         D. A. HIVELEY.     72/09/27.
*         S.L. BETH.         73/01/23.
          SPACE 4 
***       MSI - MASS STORAGE DEVICE INITIALIZATION. 
* 
*         THE FOLLOWING PARAMETERS MAY BE ENTERED VIA 
*         THE K-DISPLAY.
* 
*         FM = FAMILY NAME / PACK NAME (DEPENDS ON *TY* VALUE). 
*         PN = FAMILY NAME / PACK NAME (DEPENDS ON *TY* VALUE). 
*         UN = USER NAME (FOR PRIVATE AUXILIARY PACK ONLY). 
*         DM = DEVICE MASK. 
*         SM = SECONDARY MASK.
*         NC = NUMBER OF CATALOG TRACKS.
*         NP = NUMBER OF PACKS. 
*         DN = DEVICE NUMBER. 
*         TY = TYPE 
*                F = FAMILY DEVICE. 
*                X = AUXILIARY DEVICE.
*         LA = LOWER BOUND ACCESS LEVEL.
*         UA = UPPER BOUND ACCESS LEVEL.
* 
*         ENTER XX=0.        TO CLEAR ANY OF THE ENTRIES LISTED ABOVE.
*         ENTER XX=NULL.     TO CLEAR THE FIELD IN THE MST (UN ONLY). 
* 
*         EQ = EST ORDINAL.  THIS OPTION IS ONLY VALID FOR *FLAW* 
*                PROCESSING.
* 
*         NOTE   IT IS NECESSARY TO USE THE DSD/EQPDECK *INITIALIZE*
*                ENTRY TO SELECT DEVICES AND OPTIONS TO BE INITIALIZED. 
*                DEVICE CHARACTERISTICS CAN ONLY BE CHANGED DURING
*                *AL*, *FT*, OR *HT* INITIALIZATION.  IF THE *FP* 
*                OPTION IS SELECTED, INITIALIZATION WAITS FOR THE 
*                DEVICE TO BE FORMATTED.
* 
*         THE FOLLOWING FLAW DIRECTIVES CAN ONLY BE ENTERED VIA 
*         THE K-DISPLAY.
* 
*         SLF = SET LOGICAL TRACK FLAW ON *EQ*. 
*         CLF = CLEAR LOGICAL TRACK FLAW ON *EQ*. 
*         SPF = SET PHYSICAL TRACK FLAW ON *EQ*.
*         CPF = CLEAR PHYSICAL TRACK FLAW ON *EQ*.
* 
*         DEFAULT VALUES ARE -
* 
*         FM = NO NAME       NC = (DEVICE DEPENDENT - SEE *COMSMSP*)
*         UN = NO NAME       EQ = 0 
*         DM = 0             NP = 0 
*         TY = 0             DN = 1 
*         LA = VALUE CONTAINED IN EST.
*         UA = VALUE CONTAINED IN EST.
* 
*                       ********************
* 
*         IT SHOULD BE NOTED THAT MSI INITIALIZES WITH THE NEW
*         PARAMETER INPUT. THEREFORE IF A FAMILY MASK OR DEVICE 
*         NUMBER IS CHANGED THE RESULTANT EDIT OF THE OTHER DEVICES 
*         IN THE FAMILY MAY MISS SOME FILES LEAVING THE SPACE 
*         RESERVED BUT WITH NO CATALOG ENTRIES POINTING TO THE FILES. 
*         TO AVOID THIS SITUATION, FIRST PERFORM AN INITIALIZE OF THE 
*         DEVICE WITH ITS OLD PARAMETERS TO CLEAN UP THE FAMILY,
*         THEN REINITIALIZE WITH THE NEW PARAMETERS.
* 
*                       ********************
* 
* 
* 
*         THE *FM* PARAMETER WILL BE CONSIDERED A PACK NAME IF THE
*         DEVICE IS AN AUXILIARY DEVICE (*TY=X*). 
* 
*         BEFORE ENTERING PARAMETERS CHECK THE K DISPLAY FOR
*         THE LIST OF EQUIPMENTS TO BE INITIALIZED, IF THE LIST 
*         IS NOT COMPLETE ENTER THE INITIALIZE REQUESTS FOR THE 
*         OTHER EQUIPMENTS AND ENTER *RERUN* TO UPDATE MSI. 
* 
*         THE DEVICE WHICH IS TO BE INITIALIZED MUST FULFILL
*         CERTAIN REQUIRMENTS. IF THE DEVICE IS AVAILABLE AND/OR
*         HAS NO LABEL ERROR STATUS, IT MUST BE THE FIRST EQUIPMENT IN
*         THE CHAIN.  *MSI* WILL NOT ALLOW A CHAINED EQUIPMENT TO BE
*         SPLIT IN THE MIDDLE OF THE CHAIN (SUCH AS INITIALIZING THE
*         THIRD UNIT IN A FOUR DEVICE CHAIN).  DEVICES WHICH ARE TO BE
*         CHAINED TOGETHER AND ARE AVAILABLE AND/OR HAVE RECOVERED
*         LABELS, MUST HAVE THE INITIALIZE REQUESTS SET FOR EACH
*         EST ORDINAL IN THE CHAIN. 
* 
*         THE INPUT TO THE FLAW ROUTINE IS CONSIDERED OCTAL 
*         UNLESS THE DIGITS 8 OR 9 APPEAR IN THE NUMBER, OR 
*         THE RADIX SYMBOL *D* IS APPENDED TO THE NUMBER. 
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         * EQXXX, ACTIVE FILES, CANNOT INITIALIZE.*
* 
*         * EQXXX, INACTIVE QUEUES INITIALIZED.*
* 
*         * EQXXX, UNABLE TO INITIALIZE IQFT.*
* 
*         * USER ACCESS NOT VALID.* 
* 
*         * INTERNAL ERROR IN MSI.* 
* 
*         * IQFT FILE INTERLOCKED.* 
* 
*         * LINK DEVICE CANNOT BE ALTERED.* 
* 
*         * MSI ABORTED INITIALIZE MAY NOT BE COMPLETE.*
* 
*         * NO INITIALIZE REQUESTS SET FOR MSI.*
* 
*         * NO IQFT FILE FOUND.*
* 
*         * UNABLE TO READ IQFT FILE.*
* 
*         * MSI HUNG.*
          SPACE  4
***       OPERATOR MESSAGES.
* 
*         *ENTER OLD PACK NAME* THIS INPUT MUST MATCH THE 
*                OLD PACKNAME TO CONTINUE.
* 
*         *ENTER OLD FAMILY NAME* MUST BE ENTERED TO CONTINUE.
* 
*         *ENTER OLD USER NAME.*  MUST BE ENTERED TO CONTINUE.
* 
*         *ENTER OLD DEVICE NUMBER* MUST BE ENTERED TO CONTINUE.
* 
*         *ENTER EST ORDINAL.*  ENTER THE EST ORDINAL OF THE DEVICE 
*                TO BE FLAWED OR INITIALIZED.  THIS IS THE ONLY INPUT 
*                WHICH WILL BE ACCEPTED AT THIS POINT.
* 
*         *ENTER PARAMETERS*  ENTER ANY LEGAL PARAMETERS, THEN
*                ENTER *GO* TO PROCESS THE PARAMETERS.
* 
*         *ENTER FLAWS* ENTER ALL FLAWS FOR THE CURRENT EQUIPMENT,
*                ENTER *GO* TO PROCESS THE FLAWS. FLAWS MAY ALSO
*                BE ENTERED DURING AN INITIALIZE RUN. 
* 
*         *ENTER IDENTITY OF EQXXX.*  THE CURRENT DEVICE IS GOING TO
*                BE CHAINED TO ANOTHER DEVICE. TO VERIFY ITS
*                AVAILABILITY ENTER ITS (PACKNAME AND USER NAME), 
*                (PACKNAME), (FAMILY NAME) OR (FAMILY NAME AND
*                DEVICE NUMBER) THE ORDER OF ENTRY IS NOT IMPORTANT.
*                THE ID ENTRIES MUST BE MADE TO CONTINUE PROCESSING.
* 
*         *END OF RUN* MSI COMPLETED REQUESTED FUNCTIONS. 
* 
*         *ENTER CLEAR OR RERUN.* MSI WILL ONLY ACCEPT THE COMMANDS 
*                *CLEAR* AND *RERUN* AT THIS TIME.
* 
          SPACE  4
***       OPERATOR ERROR MESSAGES.
* 
*         *UN MUST BE SPECIFIED.*  DEVICE IS FLAGGED AS PRIVATE 
*                THE USER NAME MUST BE SPECIFIED OR THE 
*                PACK NAME CLEARED. 
* 
*         *NC IS NOT A POWER OF 2.*  THE NUMBER OF CATALOG TRACKS 
*                MUST BE A POWER OF 2.  CORRECT AND ENTER *GO*. 
* 
*         *FAMILY MASK NOT EQUAL TO 377.*  THE DEVICE MASK FOR THE
*                FAMILY DOES NOT EQUAL 377B, CORRECT AND ENTER
*                *GO* OR ENTER *GO* TO OVERRIDE.  THIS IS THE ONLY
*                INPUT ACCEPTED AT THIS TIME. 
* 
*         *EQ OR DN INCORRECT.*  EST ORDINAL TOO BIG, DEVICE SPECIFIED
*                IS NOT MASS STORAGE, OR DEVICE NUMBER .GT. 77B WAS 
*                SPECIFIED.  CORRECT AND ENTER *GO.*. 
* 
*         *EQXXX, NO FULL TRACK ACCESS.*  INDICATES AN ATTEMPT TO 
*                INITIALIZE WITH *OP=FT* AND NO FULL TRACK ACCESS 
*                EXISTS.  ENTER *CLEAR* TO CLEAR THE INITIALIZE REQUEST 
*                OR *GO* TO INITIALIZE AS A HALF TRACK DEVICE.
* 
*         *INCORRECT ENTRY.*  INPUT NOT ALLOWED - INCORRECT FORMAT OF 
*                INPUT LINE OR MODIFICATION OF A TRACK RESERVED FOR 
*                HARDWARE TESTING WAS ATTEMPTED.
* 
*         *FM OR PN MUST BE SPECIFIED.*  ENTER THE REQUIRED 
*                PARAMETER AND ENTER *GO*.
* 
*         *NP GREATER THAN 8.*  ENTER CORRECT NUMBER OF PACKS THEN
*                ENTER *GO*.
* 
*         *DUPLICATE PN.*  ANOTHER PACK IN THE SYSTEM HAS THE SAME
*                NAME.  CHANGE THE PACKNAM OR REMOVE THE OTHER
*                DEVICE FROM THE SYSTEM (IF THIS IS DONE *CMS* MUST 
*                RUN TO UPDATE THE MST TABLES). 
* 
*         *NC EXCEEDS 200B.*  THE NUMBER OF CATALOG TRACKS EXCEEDS
*                200B.  CORRECT AND ENTER *GO*. 
* 
*         *CANNOT ALLOCATE DEVICE.*  CANNOT ALLOCATE A MULTI-SPINDLE
*                DEVICE, NOT ENOUGH SPARE EQUIPMENT OR SPARES 
*                NOT UP AND ALLOCATABLE OR AN ATEMPT WAS MADE TO
*                ALLOCATE A NONREMOVABLE DEVICE.  DECREASE THE PACK 
*                COUNT AND ENTER *GO* OR ENTER *CLEAR* TO VOID MSI RUN. 
* 
*         *NOT AUXILIARY PACK.*  ATTEMPT TO MAKE A PRIVATE PACK OUT 
*                OF A NONAUXILIARY DEVICE.  CORRECT AND ENTER *GO*. 
* 
*         *DUPLICATE DN.*  DEVICE NUMBER MATCHES ANOTHER IN THE 
*                FAMILY CORRECT AND ENTER *GO* OR OVERRIDE BY 
*                ENTERING *GO*.  THIS IS THE ONLY INPUT ACCEPTED AT 
*                THIS TIME.  THE OVERRIDE IS ONLY ALLOWED IF THE
*                CONFLICTING DEVICE HAS THE FULL INITIALIZE STATUS SET. 
* 
*         *DEVICE NOT REMOVABLE.*  A NONREMOVABLE DEVICE WAS
*                SELECTED FOR CHAINING IN A MULTIPACK STRING. 
*                ENTER *CLEAR* TO VOID THE MSI RUN. 
* 
*         *NP NOT ALLOWED.*  THE EQUIPMENT IS NOT A PACK TYPE 
*                DEVICE.  CORRECT AND ENTER *GO*. 
* 
*         *DUPLICATE BITS IN MASK.*  THE MASK FOR THE FAMILY HAS
*                DUPLICATE BITS SET, THIS DESTROYS THE INTEGRITY OF 
*                THE PF SYSTEM BY CREATING AN AMBIGUOUS MAPING OF THE 
*                USER INDEX.  CORRECT AND ENTER *GO* OR ENTER *GO* TO 
*                OVERRIDE.  THIS IS THE ONLY INPUT ACCEPTED AT THIS 
*                TIME.  THE OVERRIDE IS ONLY ALLOWED IF THE CONFLICTING 
*                DEVICE HAS THE FULL INITIALIZE STATUS SET. 
* 
*         *DEVICE NOT FIRST IN CHAIN.*  TO PREVENT DESTROYING THE 
*                INTEGRITY OF A LINKED DEVICE INITIALIZATION WILL ONLY
*                TAKE PLACE ON AN AVAILABLE DEVICE IF IT IS THE FIRST 
*                DEVICE IN THE CHAIN.  THE ONLY INPUT ACCEPTED AT THIS
*                TIME IS *RERUN* OR *CLEAR*.
* 
*         *EQXXX, INITIALIZE BIT NOT SET.*  EQXXX IS AVAILABLE AND HAS
*                A GOOD LABEL, IT CANNOT BE LINKED TO ANOTHER EQUIPMENT 
*                UNLESS THE TOTAL INITIALIZE REQUEST IS SET.  ENTER DSD 
*                COMMAND *INITIALIZE,AL,XXX.*, THEN ENTER *K.RERUN.* TO 
*                UPDATE THE STATUS OF MSI, OR ENTER *CLEAR* 
*                TO VOID THE MSI RUN. 
* 
*         *DN CANNOT BE ZERO.*  A (DN = 0) WAS ENTERED TO CLEAR A 
*                DUPLICATE DEVICE NUMBER ERROR.  THE DN CANNOT BE ZERO
*                FOR A FAMILY TYPE DEVICE.  ENTER A NONZERO VALUE 
*                TO CONTINUE OR ENTER *GO* TO OVERRIDE THE ERROR. 
* 
*         *EQXXX, FORMAT PENDING.*  EQXXX HAS THE FORMAT PENDING BIT
*                SET AND CANNOT BE PROCESSED UNTIL FORMATTING IS
*                COMPLETE.
* 
*         *DEADSTART INITIALIZE REQUIRED.*  THE PENDING INITIALIZE IS 
*                FOR A NONREMOVABLE DEVICE WITH ERROR IDLE OR A LABEL 
*                ERROR STATUS.  THIS ERROR STATUS REQUIRES A DEADSTART
*                INITIALIZE.
* 
*         *DEFINED DEVICE ALREADY EXISTS.*  THE DEVICE AS DEFINED 
*                ALREADY EXISTS IN THE MULTI-MAINFRAME ENVIRONMENT. 
*                IF THIS IS AN AUXILIARY DEVICE CHANGE THE PACKNAME 
*                OR REMOVE THE OTHER PACK FROM THE COMPLEX.  IF A 
*                FAMILY DEVICE CHANGE THE DEVICE NUMBER TO A UNIQUE 
*                VALUE FOR THIS FAMILY. 
* 
*         *FULL INITIALIZE REQUIRED.*  THE PENDING INITIALIZE IS FOR
*                A DEVICE WITH AN ERROR STATUS SET.  THIS DEVICE MUST 
*                BE INITIALIZED WITH A FULL INITIALIZE REQUEST. 
* 
*         *EQXXX, TRACK LIMIT.*  INSUFFICIENT SPACE ON THE DEVICE TO
*                COMPLETE THE INITIALIZATION.  FREE UP SPACE AND ENTER
*                *RERUN* OR ENTER *CLEAR*.  IF THIS ERROR OCCURS
*                DURING DEADSTART, REDEADSTART AND CHECK EQUIPMENT
*                USAGE IN THE *CMRDECK*.
* 
*         *UA NOT WITHIN LIMIT.*  THE UPPER BOUND ACCESS LEVEL
*                EXCEEDS THAT CONTAINED IN THE EST.  CORRECT AND
*                ENTER *GO*.
* 
*         *LA NOT WITHIN LIMIT.*  THE LOWER BOUND ACCESS LEVEL
*                IS SMALLER THAN THAT CONTAINED IN THE EST. CORRECT 
*                AND ENTER *GO*.
* 
*         *LA GREATER THAN UA.*  THE LOWER ACCESS LEVEL LIMIT 
*                IS GREATER THAN THE UPPER LIMIT.  CORRECT AND
*                ENTER *GO*.
* 
*         *UNKNOWN ACCESS LEVEL NAME.*  THE ACCESS LEVEL NAME 
*                ENTERED IS INCORRECT.  CORRECT AND ENTER *GO*. 
* 
*         TO HALT PROCESSING ON THE CURRENT EQUIPMENT ENTER *CLEAR* 
*         THE CURRENT INITIALIZE REQUEST WILL BE CLEARED AND MSI WILL 
*         ADVANCE TO THE NEXT DEVICE WITH AN INITIALIZE REQUEST UP. 
* 
*         TO CLEAR ALL PARAMETER INPUT WITHOUT CLEARING THE INITIALIZE
*         REQUEST ENTER *RERUN*.
          TITLE  MACROS.
*CALL     COMCMAC 
*CALL     COMCDCM 
 CLEAR    SPACE  4
**        CLEAR - CLEAR STORAGE.
* 
*         CLEAR  FWA,COUNT,MASK 
* 
*         IF *MASK* IS *X7* IT IS ASSUMED THAT (X7) = 0.
  
  
          PURGMAC  CLEAR
 CLEAR    MACRO  L,C,M
          LOCAL  A
          MACREF CLEAR
          IFNE   M,X7,1 
          MX7 0 
          R= B2,L 
          R= B3,L+C 
 A        SA7 B2
          SB2 B2+B1 
          NE B2,B3,A
          ENDM
 ERROR    SPACE  4
**        ERROR - DISPLAY KEYBOARD ERROR MESSAGE. 
* 
*         ERROR  NUMBER 
  
  
          PURGMAC  ERROR
 ERROR    MACRO  N
          MACREF ERROR
 .N       MICRO  1,,*N* 
          SA1 ERROR".N" 
          RJ MTW
          ENDM
          SPACE  4
**        KEYMES - DISPLAY KEYBOARD MESSAGE.
* 
*         KEYMES MES
  
  
          PURGMAC  KEYMES 
          MACREF KEYMES 
 KEYMES   MACRO  N
          SA1 N 
          RJ MTW
          ENDM
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMSDSL 
*CALL     COMSDSP 
*CALL     COMSESS 
*CALL     COMSIOQ 
*CALL     COMSLSD 
*CALL     COMSMLS 
          LIST   X
*CALL     COMSMSI 
          LIST   *
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPFM 
*CALL     COMSPRD 
          QUAL   PFU
*CALL     COMSPFU 
          QUAL   *
 CTCT     EQU    /PFU/CTCT
 CTCU     EQU    /PFU/CTCU
 CTLM     EQU    /PFU/CTLM
 CTOP     EQU    /PFU/CTOP
 CTSU     EQU    /PFU/CTSU
 FTCA     EQU    /PFU/FTCA
 FTPM     EQU    /PFU/FTPM
 FTSC     EQU    /PFU/FTSC
*CALL     COMSSFM 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          TITLE  ASSEMBLY CONSTANTS.
          SPACE  4,5
*         TABLE AND BUFFER SIZES. 
  
 PKLL     EQU    10B         LENGTH OF PACK LINK TABLE
 CATBL    EQU    1011B       CATALOG BUFFER LENGTH
 SCRBL    EQU    201B        SCRATCH BUFFER LENGTH
 PARAML   EQU    40B         PARAMETER AREA LENGTH
          TITLE  DISPLAY BUFFER LINE NUMBER TABLES. 
          SPACE  4
          TITLE  PARAMETER HOLD AREA. 
          ORG    106B 
 ORIG     BSS    1           COMMAND NAME (FOR *UPC*) 
 PAR      BSS    PARAML      PARAMETER AREA 
          SPACE  4
*         OPTION TABLE. 
  
 OTBL     EQU    *
          LOC    0
 PMFN     BSS    1           FAMILY NAME
 PMUN     BSS    1           USER NAME
 PMID     BSS    1           ID ENTRY 
          BSS    1
 PMTY     BSS    1           TYPE ENTRY 
 PMLA     BSS    1           LOWER ACCESS LEVEL 
 PMUA     BSS    1           UPPER ACCESS LEVEL 
 NNME     EQU    *-PMFN 
 PMDM     BSS    1           DEVICE MASK
 PMSM     BSS    1           SECONDARY MASK 
 PMNC     BSS    1           NUMBER CATALOG TRACKS
 PMNP     BSS    1           NUMBER OF PACKS
 PMDN     BSS    1           DEVICE NUMBER
 PMEQ     BSS    1           EST ORDINAL
 PMOP     BSS    1           OPTION 
 PMXX     BSS    1           GARBAGE INPUT
 NOCT     EQU    *-PMDM 
          LOC    *O 
 OTBLL    EQU    *-OTBL      OPTION TABLE LENGTH
          ORG    OTBL 
          SPACE  4
*         TENP - TABLE OF ENTERED PARAMETERS. 
  
  
 TENP     BSS    0
          BSS    OTBLL
          SPACE  4
*         PARC - TABLE OF CONVERTED PARAMETERS. 
  
  
 PARC     BSS    0           42/FN,18/0 
          BSSZ   OTBLL       42/UI,18/0 
                             42/ID,18/0 
                             42/ID,18/0 
                             06/TY,54/0 
                             42/LA,18/0 
                             42/UA,18/0 
                             52/0,8/DM
                             52/0,8/SM
                             57/0,3/NC
                             57/0,3/NP
                             54/0,6/DN
                             54/0,6/EQ
                             57/0,3/OP
                             60/TRASH 
          SPACE  4
*         TARG - ARGUMENT TABLE.
  
  
 TARG     BSS    0
 FM       ARG    DARG,(TENP+PMFN),400B
 PN       ARG    DARG,(TENP+PMFN),400B
 UN       ARG    DARG,(TENP+PMUN),400B
 TY       ARG    DARG,(TENP+PMTY),400B
 ENLA     BSS    0
 LA       ARG    DARG,(TENP+PMLA),400B
 ENUA     BSS    0
 UA       ARG    DARG,(TENP+PMUA),400B
 DM       ARG    DARG,(TENP+PMDM),400B
 SM       ARG    DARG,(TENP+PMSM),400B
 NC       ARG    DARG,(TENP+PMNC),400B
 NP       ARG    DARG,(TENP+PMNP),400B
 DN       ARG    DARG,(TENP+PMDN),400B
 DARG     BSSZ   1           DEFAULT ENTRY
 ENDP     BSS    0
 OP       ARG    DARG,(TENP+PMOP),400B
          BSSZ   1
 ENEQ     BSS    0
 EQ       ARG    DARG,(TENP+PMEQ),400B
          BSSZ   1
 ENMS     BSS    0
 DM       ARG    DARG,(TENP+PMDM),400B
 NC       ARG    DARG,(TENP+PMNC),400B
          BSSZ   1
 ENDN     BSS    0
 DN       ARG    DARG,(TENP+PMDN),400B
          BSSZ   1
 EIDS     BSS    0
 FM       ARG    DARG,(TENP+PMID),400B
 PN       ARG    DARG,(TENP+PMID),400B
 UN       ARG    DARG,(TENP+PMID+1),400B
 DN       ARG    DARG,(TENP+PMID+1),400B
          BSSZ   1
 HNGP     BSS    0
 XX       ARG    DARG,(TENP+PMXX),400B
          BSSZ   1
 DATB     SPACE  4,10 
*         DATB - DISPLAY ADDRESS TABLE. 
  
  
 DATB     BSS    0           DISPLAY ADDRESS TABLE
          CON    FNDS+1 
          CON    UNDS+1 
          CON    SCRB 
          CON    SCRB 
          CON    TYDS+1 
          CON    LADS+1 
          CON    UADS+1 
          CON    DMDS+1 
          CON    SMDS+1 
          CON    NCDS+1 
          CON    NPDS+1 
          CON    DNDS+1 
          CON    EQDS+1 
          CON    SCRB 
          CON    SCRB 
 DAST     CON    LTDS+1      LEFT SCREEN ADDRESS
 DASM     CON    LTDS+3      MATCH ADDRESS FOR TRT
          SPACE  4
 FETS     SPACE  4,10 
*         FETS. 
  
  
 QFET     FILEB  CATB,CATBL,EPR,FET=8  *QFM* FET
 CATS     FILEB  CATB,CATBL,FET=10     *PFU* FET
 UIFT     FILEB  0,0,FET=10            *PFU* UTILITY INTERLOCK FET
 OUTPUT   FILEC  0,0                   *ABT* PROCESSOR OUTPUT FET 
 FLAGS    SPACE  4
*         FLAGS (CLEARED BY *PRS*). 
  
 FLGS     EQU    *           FWA OF FLAG BLOCK
 TEMP     BSS    1           TEMPORARY CELL 
 FLAG     BSS    1           FLAGS NO PARAMETER INPUT NEEDED
 PVT      BSS    1           FLAGS DEVICE IS PRIVATE PACK 
 DSI      BSS    1           FLAG DEADSTART INITIALIZE
 TOTL     BSS    1           FLAG TOTAL INITIALIZE (NEGATIVE) 
 PALF     BSS    1           PACKS ALLOCATED FLAG 12/EQ NUMBER
 CNT      BSS    1           PARAMETER COUNT/ CATALOG TRACK COUNT 
 LCRC     BSS    1           LOW CORE READ CONTROL WORD 
 BUFI     BSS    1           INDEX TO MST RECORDS IN BUFFER 
 ARGP     BSS    1           POINTER TO CURRENT ARGUMENT TABLE
 PFUF     BSS    1           FLAG *PFU* ACTIVE
 UIFL     BSS    1           UTILITY INTERLOCK FLAG (PFU) 
 LINK     BSS    1           LINK EST ORDINAL 
 CLF      BSS    1           FLAG *CLEAR* REQUEST ENTERED 
 CLOV     BSS    1           *CLEAR* OVERRIDE EST ORDINAL 
 SSFL     BSS    1           SECURE SYSTEM FLAG 
 SSID     CON    MSSI        SUBSYSTEM ID 
 FLGSL    EQU    *-FLGS      LENGTH OF FLAG BLOCK 
          SPACE  4
**        TEMPORARY CELLS.
  
  
 EQ       CON    0           EST ORDINAL (DISPLAY CODE) 
 RQ       CON    0           INITIALIZE REQUESTS PROCESSED
  
*         FLAW FLAG.
  
 FLFG     CON    0           IF SET, FLAW PROCESSING
          TITLE  MAIN LOOP. 
**        MSI - MAIN PROGRAM. 
  
  
 MSI      SB1    1
          EREXIT  ABT1       SET ABORT PROCESSOR ADDRESS
          BX6    X6-X6       CLEAR FLAW FLAG
          SA6    FLFG 
 MSI1     RJ     PRS         PRESET 
          RJ     CIR         CHECK INITIALIZATION REQUESTED 
          SA1    RQ 
          PL     B6,MSI3     IF INITIALIZATION REQUESTED
          NZ     X1,MSI2     IF AT LEAST ONE REQUEST PROCESSED
          MESSAGE  MESC      * NO INITIALIZE REQUESTS SET FOR MSI.* 
 MSI2     KEYMES EDRN        *END OF RUN.*
          SYSTEM IMS,R,,CIT  CLEAR *CMS* INTERLOCK
          EXCST  =C*CMS.*    CALL *CMS* TO UPDATE SYSTEM CONFIGURATION
          ENDRUN
  
*         IF EQUIPMENT AVAILABLE AND NOT DEADSTART STATUS OR
*         IF EQUIPMENT UNAVAILABLE AND IF THE LABEL WAS RECOVERED,
*         REQUEST THE VERIFICATION OF THE DEVICES PARAMETERS AND COPY 
*         THE INFORMATION TO THE K DISPLAY. OTHERWISE GO REQUEST INPUT
*         OF THE NEW PARAMETERS.
  
 MSI3     SX6    X1+B1       INCREMENT REQUESTS PROCESSED 
          SA6    A1 
          RJ     DSP         DISPLAY EQUIPMENTS TO BE PROCESSED 
          RJ     DIO         DISPLAY INITIALIZE OPTIONS 
          SA5    PARC+PMEQ
          R=     X1,ESTE
          IX1    X5*X1
          SA1    ESTB+X1+EQDE  GET EST ENTRY
          SX7    TARG 
          SA4    ESTF+X5
          SA7    ARGP 
          SA3    X4+STLL
          MX6    6
          LX6    -18
          BX7    -X6*X3      CLEAR ERROR STATUS 
          LX1    59-54
          SA7    X4+STLL
          BX3    X6*X3
          LX7    59-LIAL
          SA2    X4+PFGL
          NG     X7,MSI4.1   IF DEADSTART INITIALIZE
          LX3    24 
          AX2    12 
          ZR     X3,MSI5     IF NO ERROR STATUS 
          SA4    TOTL 
          NG     X4,MSI4     IF FULL INITIALIZE 
          ERROR  25          *FULL INITIALIZE REQUIRED.*
          EQ     MSI6        HALT PROCESSING ON CURRENT DEVICE
  
 MSI4     NZ     X2,MSI7     IF RECOVERED LABEL 
          SX6    X3-STLE
          NZ     X6,MSI4.1   IF NOT LABEL ERROR 
          LX1    54-56
          PL     X1,MSI7.1   IF NOT REMOVABLE DEVICE
          RJ     SAL         SET ACCESS LEVEL DEFAULTS
          EQ     MSI10       PROCESS KEYBOARD INPUT 
  
 MSI4.1   NG     X1,MSI5     IF EQUIPMENT UNAVAILABLE 
  
*         IF INITIALIZE SET, DEVICE AVAILABLE AND DEADSTART STATUS, 
*         INITIALIZE AND DO NOT STOP FOR OPERATOR INTERVENTION. 
  
          MX6    1
          BX7    X7-X7
          SA6    DSI         FLAG DEADSTART INITIALIZE
          EQ     MSI9        DEADSTART INITIALIZE (COPY PARAMETERS) 
  
 MSI5     SA4    ESTF+X5
          SA3    X4+PFGL
          MX1    -3 
          AX3    3
          BX1    -X1*X3 
          BX6    -X5
          ZR     X1,MSI7     IF ONE OF M
          SA6    CLOV        SET OVERRIDE *CLEAR* INDICATOR 
          ERROR  18          *DEVICE NOT FIRST IN CHAIN.* 
 MSI6     SX6    HNGP 
          SX7    7777B
          SA6    ARGP 
          SA7    CNT
          RJ     PKI         STOP FURTHER PROCESSING
          KEYMES ENCL        *ENTER CLEAR OR RERUN.*
          EQ     MSI6        LOOP 
  
 MSI7     SA4    ESTF+X5     CHECK STATUS OF DEVICE 
          SA1    X4+DULL
          SA2    X4+ACGL
          SA3    X4+MDGL
          SA4    X4+STLL
          NG     X3,MSI8     IF DEVICE REMOVABLE
          LX2    59-4 
          PL     X2,MSI8     IF ERROR IDLE NOT SET
 MSI7.1   ERROR  24          *DEADSTART INITIALIZE REQUIRED.* 
          EQ     MSI6        STOP PROCESSING
  
 MSI8     MX3    -12
          LX4    -12
          BX7    -X3*X4 
          MX3    -11
          BX1    -X3*X1 
          MX0    18 
          LX4    59-LIPF+12 
          BX7    X7+X1
          SA2    CLF         CHECK *CLEAR* FLAG 
          ZR     X7,MSI9     IF NO ACTIVE FILES/USERS 
          NZ     X2,CLEAR    IF *CLEAR* FLAG SET
          PL     X4,MSI9     IF NOT INITIALIZING PF,S 
          LX0    -18
          SA4    EQ 
          LX4    42-18
          SA1    MESA 
          BX7    -X0*X1 
          BX7    X7+X4
          SA7    A1 
          MESSAGE  MESA      * EQXXX, ACTIVE FILES, CANNOT INITIALIZE.* 
          RJ     ABT         ABORT *MSI*
  
 MSI9     SA7    CLF         CLEAR *CLEAR* FLAG 
          RJ     CPY         COPY PARAMETERS TO K-DISPLAY 
          SX6    B1          ALLOW FLAW ENTRIES TO NOW BE MADE
          SA6    CFEB 
          SA1    DSI
          SA2    TOTL 
          MI     X1,MSI12    IF DEADSTART INITIALIZE
          PL     X2,MSI12    IF NOT TOTAL INITIALIZE
 MSI10    SX7    200
          SA7    CNT
          KEYMES REQPM       *ENTER PARAMETERS.*
 MSI11    RJ     PKI         PROCESS KEYBOARD INPUT 
 MSI12    RJ     PPM         PROCESS PARAMETERS 
          ZR     X7,MSI11    IF MORE INPUT NEEDED 
          RJ     CRE         CHECK REQUIRED ENTRIES 
          ZR     X6,MSI12    IF PARAMETERS TO PROCESS 
          SA4    TOTL 
          SA5    PARC+PMEQ
          NG     X4,MSI12.1  IF TOTAL INITIALIZE
          SA4    X5+ESTF
          SA4    X4+STLL
          LX4    59-LIPF
          PL     X4,MSI14.1  IF NOT *PF* INITIALIZE 
 MSI12.1  BSS    0
          RJ     UMS         UPDATE MSTS
          ZR     X1,MSI13    IF DEVICE ALLOWED
          KEYMES ERROR22     *DEFINED DEVICE ALREADY EXISTS.* 
          EQ     MSI11       PROCESS NEW INPUT
  
 MSI13    RJ     EDF         SEPARATE FAMILY FROM OTHER EQUIPMENTS
          SA1    ESTF+B7
          SA4    X1+MDGL
          LX4    59-58
          NG     X4,MSI14    IF AUXILIARY DEVICE
          RJ     CMS         CHECK MASKS
          MI     X7,MSI12    PROCESS NEW PARAMETERS 
          SA5    PARC+PMEQ
          SA1    ESTF+X5
          LX1    59-54
          NG     X1,MSI14    IF DEVICE UNAVAILABLE
          RJ     ECT         EDIT CATALOGS
          RJ     EDD         EDIT DIRECT ACCESS FILES IN FAMILY 
 MSI14    SA5    PARC+PMEQ
          SYSTEM IMS,R,X5,IND INITIALIZE PERMANENT FILES
 MSI14.1  RJ     ISF         INITIALIZE SPECIAL FILES 
          SA1    FLAI 
          SX1    X1-TFLA
          ZR     X1,CLEAR    IF NO FLAWS
          SA1    TFLA 
          BX2    X5 
          LX2    59-35
          BX7    X2+X1       SET EQ NUMBER IN FLAW TABLE
          SA7    A1          RESET TABLE WITH EQ NUMBER ADDED 
          SYSTEM IMS,R,TFLA,SFL    SET FLAWS
  
*         CHECK FOR MORE DEVICES TO BE INITIALIZED. 
  
 CLEAR    BSS    0           CLEAR INITIALIZE REQUEST 
          SA5    PARC+PMEQ
          SA4    CLOV        CHECK OVERRIDE ON THIS EQUIPMENT 
          SA2    PKL-1
          SA1    ESTF+X5
          SA1    X1+STLL
          SX6    B1 
          PL     X4,MSI15    IF OVERRIDE NOT SET
          IX6    X5+X4       CHECK EQUIPMENT
 MSI15    MX3    60-LIRP     CLEAR CURRENT INITIALIZE REQUESTS
          BX1    -X3*X1 
          MX3    48-LIMF
          LX3    48 
          BX7    -X3*X1 
          SA7    A1 
          SA1    CLF         CHECK FOR CLEAR OPERATION
          ZR     X1,MSI16    IF NOT *CLEAR* 
          ZR     X6,MSI16    IF OVERRIDE SET FOR THIS EST ORDINAL 
          RJ     EDF         SEPARATE THE FAMILY FROM OTHER DEVICES 
          RJ     CMS         CHECK MASKS
          MI     X7,MSI      PROCESS NEW DATA AS A RERUN
          SA2    PKL-1
          SA5    PARC+PMEQ
 MSI16    ZR     X5,MSI17    IF EST ORDINAL ZERO
          SB5    X5          SAVE EST ORDINAL 
          SYSTEM IMS,R,X5,CIN  CLEAR CURRENT INITIALIZE REQUEST 
          SA2    A2+B1
          SX5    X2 
          NZ     X5,MSI16    IF LINKED PACKS CLEAR THEIR INITIALIZE 
                             REQUESTS.
          SA1    ESTF+B5     CHECK *ISD* INTERLOCK
          LX1    59-58
          PL     X1,MSI17    IF NO INTERLOCK SET
 MSI16.1  SA2    PARC+PMEQ
          BX6    X2 
          LX6    48 
          SA6    CIRB 
          SYSTEM IMS,R,CIRB,ISD  CLEAR DEVICE INTERLOCK 
          SA1    CIRB 
          PL     X1,MSI16.1  IF INTERLOCK NOT CLEAR 
 MSI17    RJ     CDS         CLEAR THE DISPLAY
          EQ     MSI1        LOOP FOR MORE EQUIPMENTS 
  
          TITLE  AUXILIARY PROCESSORS.
 RERUN    SPACE  4,10 
**        RERUN - RERUN *MSI*.
  
  
 RERUN    RJ     CDS         CLEAR DISPLAY
          SA1    RERNA       LOAD RERUN ADDRESS 
          SB2    X1 
          JP     B2          RERUN THE SELECTED OPTION
  
 RERNA    VFD    42/0,18/MSI2 
 TKL      SPACE  4,10 
**        TKL - TRACK LIMIT PROCESSING. 
  
  
  
 TKL      SA1    PARC+PMEQ   SET EST ORDINAL IN TRACK LIMIT MESSAGE 
          RJ     COD
          SA4    ERROR26
          MX7    -18
          LX6    48-18
          LX7    48-18
          BX6    -X7*X6 
          BX7    X7*X4
          BX6    X6+X7
          SA6    A4 
          ERROR  26          *EQXXX, TRACK LIMIT.*
          EQ     MSI6        STOP PROCESSING
          SPACE  4
***       FLAW - ENTER DEVICE FLAWS.
  
  
 FLAW     SX6    FLAW        SET RERUN ADDRESS
          SA6    RERNA
          SB1    1
          SX6    B1+         SET FLAW FLAG
          SA6    FLFG 
          RJ     PRS
          MX6    60          SET OVERRIDE CONTROL 
          SA6    CLOV 
          SETRNR NOROLL      PREVENT JOB ROLLOUT
          SA5    LRDS        SET UP DISPLAY CONTROL WORD
          BX7    X5 
          SA7    KDCW 
          SA5    BLK         CLEAR PAGE 2 OF 2 COMMENT
          BX7    X5 
          SA7    LNDS+3 
          SA5    FLAA 
          BX7    X5 
          SA7    LNDS+4 
          SA5    FLAB 
          BX7    X5 
          SA7    L
          SA7    R
          RJ     REQ         REQUEST EQUIPMENT
          SA1    PARC+PMEQ
          BX6    -X1
          SA6    CLOV        SET OVERRIDE CONTROL FOR THIS EQUIPMENT
          RJ     COD
          SX6    B1          ALLOW FLAW ENTRIES TO NOW BE MADE
          SA6    CFEB 
          BX6    X4 
          SA6    INDS+1      SET EST ORDINAL
          KEYMES ENFLS       *ENTER FLAWS.* 
          RJ     PKI         PROCESS KEYBOARD 
          SA1    PARC+PMEQ
          SA2    TFLA 
          LX1    59-35
          BX7    X1+X2       SET EQ NUMBER IN TABLE 
          SA7    TFLA 
          SYSTEM IMS,R,A7,SFL 
          ENDRUN
  
 FLAA     DATA   1L 
 FLAB     VFD    18/0,18/KDTA,24/0  DISPLAY CONTROL WORD
 FLAI     CON    TFLA 
          SPACE  4,10 
**        FLAW TABLE FOR *IMS* CALL.
* 
*T WORD1  12/ TYPE, 12/ 0, 12/ EQ, 12/ 0, 12/ TRACK 
*T,WORD2-N  12/ TYPE, 12/ 0, 12/ 0, 12/ 0, 12/ TRACK
* 
*         EQ =    EST ORDINAL 
*         TYPE =  0 - END TABLE 
*                 1 - SET FLAW
*                 2 - CLEAR FLAW
*         TRACK = LOGICAL TRACK TO FLAW 
  
  
 TFLA     BSSZ   PNFE        FLAW TABLE 
          TITLE  MAJOR PROCESSORS.
 REQ      SPACE  4,10 
**        REQ - REQUEST EST ORDINAL.
* 
*         EXIT   (PARC+PMEQ) = EST ORDINAL. 
* 
*         USES   X - 1, 2, 4, 5, 6, 7.
*                A - 1, 2, 4, 5, 6, 7.
* 
*         CALLS  PKI, COD.
* 
*         MACROS ERROR, KEYMES. 
  
  
 REQ3     SA1    X4+ESTF
          SA1    X1+STLL
          MX2    1
          MI     X1,REQ2     IF FORMAT PENDING
          LX2    LIAL-59
          BX7    X1+X2       SET INITIALIZE REQUEST IN MST IMAGE
          LX2    LIRP-LIAL
          BX7    X7+X2
          SA7    A1 
  
 REQ      SUBR               ENTRY/EXIT 
          SX6    ENEQ 
          SA6    ARGP 
          KEYMES REQEQ       *ENTER EST ORDINAL.* 
 REQ1     SX7    B1+
          SA7    CNT
          RJ     PKI         REQUEST EQUIPMENT
          SA4    PARC+PMEQ
          R=     X5,ESTE
          IX5    X4*X5
          SA5    ESTB+X5+EQDE  GET EST ENTRY
          MI     X5,REQ3     IF EQ IS MASS STORAGE DEVICE 
          ERROR  5           *EQ OR DN INCORRECT.*
          EQ     REQ1        SEND ERROR MESSAGE AND WAIT ON CORRECTION
  
 REQ2     BX1    X4 
          RJ     COD
          MX7    -18         SET EST ORDINAL IN FORMAT PENDING MESSAGE
          LX6    30 
          SA4    ERROR21
          LX7    30 
          BX6    -X7*X6 
          BX7    X7*X4
          BX6    X6+X7
          SA6    A4 
          ERROR  21          *EQXXX, FORMAT PENDING.* 
          EQ     REQ1        WAIT ON NEW INPUT
  
 DSP      SPACE  4,10 
**        DSP - DISPLAY EST ORDINALS. 
* 
*         USES   X - 1, 2, 3, 4, 5, 7.
*                A - 1, 2, 7. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         MACROS CLEAR. 
  
  
 DSP      SUBR               ENTRY/EXIT 
          SB4    OPDS+1 
          SA1    BLK         CLEAR THE EQUIPMENT LIST 
          BX7    X1 
          CLEAR  B4,4,X7
          CLEAR  INDSA+1,4,X7 
          SB2    B0 
          SB5    B0 
          MX4    -3 
          SB7    B0 
 DSP1     SA1    ESTF+B2
          SB2    B2+B1
          SB3    B2-ESMX
          ZR     B3,DSPX     IF END OF EQUIPMENTS 
          ZR     X1,DSP1     IF EMPTY LINK
          SA2    X1+STLL
          MI     X2,DSP1     IF FORMAT PENDING
          LX2    59-LIRP
          SX3    B2-B1
          PL     X2,DSP1     IF NO INITIALIZE REQUESTS
          SB5    B5+B1
          BX5    -X4*X3 
          AX3    3
          BX7    -X4*X3 
          LX7    6
          BX3    X4*X3
          LX3    9
          IX7    X3+X7
          SA3    DSPA 
          IX7    X7+X5
          IX7    X7+X3
          SA1    B4+B7       MERGE EQUIPMENT IN DISPLAY 
          LX7    42 
          EQ     B5,B1,DSP2  IF FIRST EQUIPMENT IN WORD 
          LX7    -30
          SB5    B0 
          SX2    B7-3 
          SB7    B7+B1       NEXT WORD
          NZ     X2,DSP2     IF NOT OVERFLOW TO SECOND LINE 
          SB6    INDSA+1
          EQ     B4,B6,DSPX  IF OVERFLOW SECOND LINE
          SB4    B6 
          SB7    B0 
 DSP2     IX7    X7+X1       SET EST ORDINAL IN MESSAGE 
          SA7    A1 
          EQ     DSP1        LOOP 
  
 DSPA     CON    3R000-3R 
 CPY      SPACE  4,10 
**        CPY - COPY MST PARAMETERS TO DISPLAY BLOCK. 
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  PKI, COD.
* 
*         MACROS KEYMES.
  
  
 CPY      SUBR               ENTRY/EXIT 
          SA1    DSI
          SA5    PARC+PMEQ
          MX7    1
          SA7    FLAG        FLAG NO PARAMETER INPUT NEEDED 
          SA4    ESTF+X5     ADDRESS OF MST 
          MI     X1,CPY6     IF DEADSTART INITIALIZE
          SA1    X4+PUGL
          MX6    42 
          BX1    X6*X1
          BX6    X4 
          SA6    TEMP        SAVE THE MST POINTER 
          MX7    1
          ZR     X1,CPY2     IF NOT PRIVATE PACK
          SA7    PVT         SET PRIVATE PACK FLAG
 CPY1     KEYMES ENOUN       *ENTER OLD USER NAME.* 
          SX7    01 
          SA7    CNT
          RJ     PKI         PROCESS KEYBOARD INPUT 
          SA4    TEMP 
          SA2    PARC+PMUN
          SA3    X4+PUGL
          BX1    X2-X3
          AX1    18 
          NZ     X1,CPY1     IF USER NAMES DO NOT MATCH 
 CPY2     SA1    X4+MDGL
          LX1    59-58
          PL     X1,CPY4     IF NOT AN AUXILIARY DEVICE 
 CPY3     KEYMES ENOPN       *ENTER OLD PACK NAME.* 
          SX7    1
          SA7    CNT
          RJ     PKI         PROCESS KEYBOARD 
          SA4    TEMP 
          SA2    PARC+PMFN
          SA3    X4+PFGL
          BX1    X2-X3
          AX1    18 
          NZ     X1,CPY3     IF PACKNAMES DO NOT MATCH
          EQ     CPY6        GO TO NEXT PARAMETER 
  
 CPY4     SA1    X4+PFGL
          MX0    42 
          BX1    X0*X1
          ZR     X1,CPY6     IF NO FAMILY NAME
 CPY5     KEYMES ENOFN       *ENTER OLD FAMILY NAME.* 
          SX7    1
          SA7    CNT
          RJ     PKI         PROCESS KEYBOARD INPUT 
          SA4    TEMP 
          SA2    PARC+PMFN
          SA3    X4+PFGL
          MX0    42 
          BX1    X2-X3
          BX1    X0*X1       TEST FAMILY NAME 
          NZ     X1,CPY5     IF FN DO NOT MATCH 
  
 CPY6     SB5    X4          SET MST POINTER
          RJ     PTY         PROCESS TYPE 
          MX0    -18
          SA1    PARC+PMEQ
          SX1    X1+1000B    ENSURE LEADING ZEROES
          RJ     COD
          SA2    =7L
          BX6    -X0*X6 
          BX6    X6+X2
          LX6    -18
          SA6    EQDS+1      SET EST ORDINAL
          SA1    B5+ALGL
          MX6    -12
          LX1    59-11
          BX1    -X6*X1 
          RJ     COD         CONVERT NUMBER OF CATALOG TRACKS 
          BX6    X4 
          SA6    NCDS+1 
          RJ     SAL         SET ACCESS LEVEL DEFAULTS
          SA4    B5+DDLL     GET PACK COUNT 
          MX6    -3 
          LX4    12 
          BX1    -X6*X4 
          SX1    X1+B1       ADJUST COUNT 
          RJ     DTY         CHECK FOR PACK TYPE DEVICE 
          PL     X3,CPY7     IF NOT PACK DEVICE 
          BX6    X1 
          SA6    PARC+PMNP   SET PACK COUNT IN PARM LIST
+         RJ     COD         CONVERT NUMBER OF PACKS
          BX6    X4 
          SA6    NPDS+1 
 CPY7     SA1    B5+MDGL
          SA2    DSI
          LX1    59-58
          MI     X1,CPY9     IF AUXILIARY PACK
          SX7    B5 
          SA7    TEMP 
          SA3    B5+PFGL
          MX6    -6 
          LX3    59-11
          BX6    -X6*X3 
          BX7    X7-X7
          SA6    PARC+PMDN   SET DEVICE NUMBER IN PARAMETER BLOCK 
          MI     X2,CPY9     IF DEADSTART INITIALIZE
          ZR     X6,CPY10    IF DN EQUALS ZERO
          SA7    A6+         CLEAR THE DEVICE NUMBER
 CPY8     KEYMES ENODN       *ENTER OLD DEVICE NUMBER.* 
          SX7    1
          SA7    CNT
          RJ     PKI         PROCESS KEYBOARD 
          SA4    TEMP 
          SA2    PARC+PMDN
          SA3    X4+PFGL
          MX6    -6 
          LX3    59-11
          BX1    -X6*X3      MASK OFF OLD DN
          BX1    X1-X2
          NZ     X1,CPY8     IF DEVICE NUMBERS DO NOT MATCH 
          SB5    X4          SAVE MST ADDRESS 
          EQ     CPY10       CLEAR *ID* AND *NC*
  
 CPY9     SA1    B5+PFGL
          MX6    -6 
          LX1    59-11
          BX1    -X6*X1 
          RJ     COD         CONVERT DEVICE NUMBER
          BX6    X4 
          SA6    DNDS+1 
 CPY10    BX7    X7-X7
          SA7    PARC+PMID   ID 
          SA7    A7+B1
          SA7    PARC+PMNC   NC 
          EQ     CPYX        RETURN 
 PPM      SPACE  4,10 
**        PPM - PROCESS PARAMETERS. 
* 
*         EXIT   (X7) = ZERO IF MORE PARAMETERS NEEDED. 
*                (B5) = MST POINTER.
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  CPN, DTY, MTW, PTY, VLC. 
* 
*         MACROS ERROR, KEYMES. 
  
  
 PPM      SUBR               ENTRY/EXIT 
          SB4    PARC 
          SB6    B0 
          SB3    PMEQ 
          SA1    PARC+PMEQ
          SA1    X1+ESTF
          SB5    X1          MST POINTER
 PPM1     SA5    B4+B6       CHECK PARAMETER LIST 
          NZ     X5,PPM2     IF PARAMETER ENTERED 
          SB6    B6+B1
          NE     B3,B6,PPM1  IF NOT END OF PARAMETERS 
          KEYMES REQPM       *ENTER PARAMETERS.*
          SA1    FLAG 
          BX7    X1 
          EQ     PPMX        EXIT PARAMETER ENTRY NEEDED
  
 PPM2     RJ     CMC         CHECK MODE CHANGE
          ZR     X7,PPM23    IF NO FULL TRACK ACCESS
          SA1    PARC+PMDM   PROCESS MASKS
          SA2    PARC+PMSM
          SA3    B5+PUGL
          MX0    -16
          LX2    8
          BX3    X0*X3       CLEAR OLD MASKS
          BX6    X1+X2
          BX6    X6+X3
          SA6    A3 
          RJ     PTY         PROCESS TYPE 
 PPM3     SA1    PVT
          SA2    PARC+PMFN
          MX7    42 
          BX3    X2 
          SA4    PARC+PMUN
          MI     X1,PPM5     IF PRIVATE PACK (PVT SET)
          NZ     X4,PPM5     IF PRIVATE PACK (UN DEFINED) 
          ZR     X2,PPM10    IF NO FAMILY NAME DEFINED
  
*         PROCESS FAMILY NAME.
  
          SA1    B5+PFGL
          BX6    -X7*X1 
          BX6    X2+X6
          SA6    A1 
          BX6    X6-X6
          SA6    PVT         CLEAR PRIVATE PACK FLAG
          EQ     PPM10       GO TO NEXT PARAMETER 
  
*         PROCESS PACK NAME AND USER NAME.
  
 PPM5     SA5    B5+MDGL
          SA1    B5+PFGL
          SA2    B5+PUGL
          BX6    X5 
          MX5    42 
          BX0    -X5*X1 
          LX6    59-58
          BX1    X5*X1       OLD PACK NAME
          BX7    -X5*X2 
          ZR     X4,PPM7     IF NO NEW UN USE OLD ONE 
          SA5    NULL 
          BX5    X5-X4       TEST FOR *NULL*
          NZ     X5,PPM6     IF NOT NULL
          MX6    0           CLEAR PVT
          SA7    B5+PUGL
          SA6    PVT
          SA6    PARC+PMUN
          EQ     PPM3        LOOP 
  
 PPM6     PL     X6,PPM21    IF NOT AUXILIARY DEVICE
          MX6    1
          BX7    X7+X4       SET NEW USER NAME
          SA6    PVT
          SA7    A2          UPDATE MST 
          LX6    1
          SA6    PARC+PMNC   FORCE NC TO 1
          EQ     PPM8        CONTINUE 
  
 PPM7     BX7    X5*X2       CHECK FOR OLD UN 
          ZR     X7,PPM22    IF NO OLD UN 
 PPM8     NZ     X3,PPM9     IF PACKNAM DEFINED 
          NZ     X1,PPM10    GO TO NEXT PARAMETER 
          ERROR  7           *FN OR PN MUST BE SPECIFIED.*
          MX7    0
          SA7    PVT
          EQ     PPMX        ERROR EXIT 
  
 PPM9     BX6    X3+X0       SET NEW PACK NAME
          SA6    A1 
 PPM10    RJ     CPN         CHECK FOR DUPLICATE PACK NAME
          ZR     X7,PPMX     IF ERROR 
  
*         PROCESS NUMBER OF CATALOG TRACKS. 
  
          SA4    B5+ALGL
          MX0    -12
          LX4    -12
          SA3    B5+PUGL
          MX1    -8 
          BX3    -X1*X3 
          BX6    X0*X4
          LX6    12 
          ZR     X3,PPM13    IF NO MASK SET - NO CATALOGS NEEDED
          SA3    PARC+PMNC
          SA5    PARC+PMEQ
          NZ     X3,PPM11    IF NC SPECIFIED
          BX3    -X0*X4      DEFAULT COUNT FROM MST 
 PPM11    NZ     X3,PPM12    IF NOT USING EQUIPMENT DEFAULT 
          RJ     DTY         GET DEFAULT FOR DEVICE 
 PPM12    BX1    -X0*X3      VALIDATE NC
          CX6    X1 
          SB4    X1-201B
          BX4    X0*X4       CLEAR OLD COUNT
          SB6    X6 
          PL     B4,PPM20    IF NC TOO LARGE
          BX6    X4+X1       SET NEW COUNT
          NE     B6,B1,PPM19 IF NC NOT POWER OF 2 
          LX6    12 
  
*         PROCESS NUMBER OF PACKS.
  
 PPM13    SA6    A4 
          SA1    PARC+PMNP
          ZR     X1,PPM14    IF NUMBER OF PACKS NOT SPECIFIED 
          SA2    B5+DDLL
          MX7    -57
          MX0    -3 
          SX1    X1-1 
          BX6    X0*X1
          LX7    -9 
          BX7    -X7*X2      CLEAR CURRENT UNIT COUNT 
          NZ     X6,PPM18    IF NP .GT. 7 
          LX1    -12         POSITION PACK COUNT
          BX7    X7+X1
          LX1    12 
          SA7    A2 
          RJ     DTY
          AX3    59 
          BX3    -X3*X1 
          NZ     X3,PPM17    IF NOT PACK TYPE DEVICE AND NP .NE. 1
          RJ     ALP         ALLOCATE PACKS 
          BX7    X7-X7
          MX0    -3 
          PL     X5,PPMX     IF UNABLE TO ALLOCATE PACKS
 PPM14    SA2    PARC+PMEQ   RESTORE EST POINTER
          SA2    X2+ESTF
          SA1    X2+DDLL     GET NUMBER OF PACKS
          SB5    X2 
          LX1    12 
          SA2    B5+MDGL     SET SECTOR LIMITS
          BX1    -X0*X1 
          BX5    X1          SAVE PACK COUNT
          SX1    X1+B1
          MX0    -11
          BX2    X0*X2
          LX2    -36
          BX6    -X0*X2 
          LX2    36 
          IX6    X1*X6
          BX6    X2+X6
          SA6    A2 
  
*         PROCESS DEVICE NUMBER.
  
          SA1    PARC+PMDN
          SA2    B5+PFGL
          SA3    B5+MDGL
          MX0    -6 
          BX2    X0*X2       CLEAR OLD N/M
          BX2    X2+X5       SET NEW N/M
          BX4    X0*X1
          LX0    59-47
          LX3    59-58
          LX1    12 
          AX3    59 
          MX7    1
          NZ     X1,PPM15    IF DN SPECIFIED
          BX1    -X0*X2 
          NZ     X1,PPM15    IF OLD DN SET
          SX1    10000B      SET DEFAULT TO *1* 
 PPM15    NZ     X4,PPM16    IF *DN* TOO LARGE
          BX2    X0*X2       CLEAR OLD DN 
          BX1    -X3*X1      CLEAR DN FOR AUXILIARY DEVICE
          BX6    X2+X1       ADD IN NEW DN
          SA6    A2          UPDATE PFGL
  
*         PROCESS DEVICE ACCESS LEVEL LIMITS.  VERIFY THAT ACCESS 
*         LEVEL VALUES ENTERED ARE VALID ENTRIES.  WHEN RUNNING IN
*         UNSECURED MODE, NO VALIDATION AGAINST THE EQUIPMENT-S 
*         DEFAULT LIMITS (IN THE EST) IS MADE, SINCE THESE DEFAULT
*         VALUES WILL ALWAYS BE ZERO. 
  
          SA1    PARC+PMUA   DETERMINE IF KNOWN UPPER LEVEL ENTERED 
          SB2    B0 
          RJ     VLC         VERIFY UPPER ACCESS LEVEL
          NG     X2,PPM27    IF UNKNOWN VALUE ENTERED 
          SB4    X2          STORE VALUE
          SA1    PARC+PMLA   DETERMINE IF KNOWN LOWER LEVEL ENTERED 
          RJ     VLC         VERIFY LOWER ACCESS LEVEL
          NG     X2,PPM27    IF UNKNOWN VALUE ENTERED 
          SB3    X2+         STORE VALUE
          SA1    SSFL 
          GT     B3,B4,PPM26 IF LA .GT. UA
          ZR     X1,PPM15.1  IF UNSECURED SYSTEM
          SA1    PARC+PMEQ   GET DEFAULT LIMITS FROM EST
          R=     X4,ESTE
          IX4    X1*X4
          SA4    ESTB+1+X4
          LX4    -12         GET UPPER LIMIT
          MX0    -3 
          BX2    -X0*X4 
          SB7    X2          (B7) = UPPER LIMIT 
          LX4    -3          GET LOWER LIMIT
          BX2    -X0*X4 
          SB6    X2+         (B6) = UPPER LIMIT 
          GT     B4,B7,PPM24 IF VALUE SPECIFIED .GT. LIMIT
          LT     B3,B6,PPM25 IF VALUE SPECIFIED .LT. LOWER LIMIT
 PPM15.1  SA1    B5+PFGL     SET VALUES INTO MST
          MX0    -6 
          LX0    6
          BX2    X0*X1
          SX3    B3          POSITION LOWER LEVEL 
          LX3    9
          SX4    B4          POSITION UPPER LEVEL 
          LX4    6
          BX3    X3+X4       SET INTO *PFGL*
          BX6    X2+X3
          SA6    A1 
          EQ     PPMX        RETURN 
  
 PPM16    ERROR  5           *EQ OR DN INCORRECT.*
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM17    ERROR  16          *NP NOT ALLOWED.*
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM18    ERROR  8           *NP GREATER THAN 8.* 
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM19    ERROR  2           *NC IS NOT A POWER OF 2.*
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM20    ERROR  10          *NC EXCEEDS 200B.* 
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM21    ERROR  12          *NOT AUXILIARY PACK.*
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM22    ERROR  1           *UN MUST BE SPECIFIED.*
          MX7    0
          SA7    PVT
          EQ     PPMX        RETURN 
  
 PPM23    ERROR  23          * EQXXX, NO FULL TRACK ACCESS.*
          BX7    X7-X7
          EQ     PPMX        RETURN 
  
 PPM24    ERROR  27          *UA NOT WITHIN LIMIT.* 
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM25    ERROR  28          *LA NOT WITHIN LIMIT.* 
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM26    ERROR  29          *LA GREATER THAN UA.*
          MX7    0
          EQ     PPMX        RETURN 
  
 PPM27    ERROR  30          *UNKNOWN ACCESS LEVEL NAME.* 
          MX7    0
          EQ     PPMX        RETURN 
  
 NULL     DATA   4LNULL 
 CPN      SPACE  4,10 
**        CPN - CHECK PACKNAMES.
* 
*         ENTRY  (B5) = MST POINTER OF CURRENT EQUIPMENT. 
* 
*         EXIT   (X7) = 0 IF DUPLICATES OCCURED.
* 
*         USES   X - 1, 2, 3,4, 5, 6, 7.
*                A - 1, 2, 3, 4, 5, 7.
*                B - 7. 
* 
*         MACROS ERROR. 
  
  
 CPN      SUBR               ENTRY/EXIT 
          SA1    B5+MDGL
          SA2    ESTF-1 
          SA4    B5+PFGL
          LX1    59-58
          BX7    X1 
          SA7    CPNB 
          MX7    42 
          BX4    X7*X4       CURRENT PACKNAME 
 CPN1     SA2    A2+B1
          SB7    A2-ESTF-ESMX-1 
          ZR     B7,CPNX     IF END OF EQUIPMENTS 
          ZR     X2,CPN1     IF EMPTY LINK
          SA3    X2+PFGL
          BX1    X3-X4       TEST NAME
          SX6    B5 
          BX1    X7*X1
          IX6    X2-X6
          NZ     X1,CPN1     IF NO MATCH
          ZR     X6,CPN1     IF CURRENT EQUIPMENT 
          SA5    X2+MDGL
          LX5    59-58
          SA1    CPNB 
          NG     X1,CPN2     IF CURRENT DEVICE IS AUXILIARY 
          PL     X5,CPN1     IF PART OF SAME FAMILY 
 CPN2     AX3    3
          SA1    CPNA 
          MX6    -3 
          SA5    X2+STLL
          BX6    -X6*X3 
          BX5    X1*X5       CHECK ERROR STATUS AND INITIALIZE
          NZ     X6,CPN1     IF NOT 1 OF M PACKS
          NZ     X5,CPN1     IF ERROR STATUS OR INITIALIZE
          ERROR  9           *DUPLICATE PN.*
          MX7    0
          EQ     CPNX        ERROR EXIT 
  
  
 CPNA     VFD    12/3600B,12/77B,36/0  INITIALIZE/STATUS MASK 
 CPNB     CON    0           STATUS OF CURRENT DEVICE 
 ALP      SPACE  4,10 
**        ALP - ALLOCATE PACKS. 
* 
*         ENTRY  (X1) = NUMBER OF UNITS-1 TO ALLOCATE.
* 
*         EXIT   (X5) .LT. 0 IF ABLE TO ALLOCATE. 
*                TO *ABT* IF ACTIVE FILES ON LINKED EQUIPMENT.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2. 
* 
*         CALLS  ALD, COD.
* 
*         MARCOS ERROR, MESSAGE.
  
  
 ALP6     MX6    1           SET PACK ALLOCATED FLAG
          BX7    X7-X7       SET END OF PACK EQUIPMENT LIST 
          SA6    A5 
          SA7    B2 
  
 ALP      SUBR               ENTRY/EXIT 
          SB2    PKL         PACK EQUIPMENT LIST ADDRESS
          SA5    PALF        PACK ALLOCATION FLAG 
          NG     X5,ALPX     IF ALREADY ALLOCATED 
          SA2    PARC+PMEQ   FIRST EQUIPMENT OF PACK
          SA4    ESTF+X2     MST ADDRESS
          R=     X3,ESTE
          IX3    X2*X3
          SA3    ESTB+X3+EQDE  GET EST ENTRY
          SA4    X4+DDLL
          MX0    -3 
          LX3    59-55
          AX4    51 
          BX6    -X0*X4      SET ORIGINAL UNIT COUNT
          SX7    X6+B1
          IX5    X1-X7       UNIT COUNT-1 REMAINING TO ALLOCATE 
          NG     X5,ALP6     IF NO MORE UNITS TO ALLOCATE 
          PL     X3,ALP1     IF NOT *LDAM* DEVICE 
          RJ     ALD         ALLOCATE *LDAM* DEVICE 
          PL     X5,ALP4     IF DEVICE NOT ALLOCATED
          EQ     ALP6        RETURN 
  
 ALP1     SA3    A3+         GET EST ENTRY
          SA1    ALPA        STATUS MASK
          BX2    X1*X3       DESIRED EQUIPMENT STATUS 
          LX3    59-56
          PL     X3,ALP3     IF DEVICE NOT REMOVABLE
 ALP2     SA4    ESTF+X2     READ *STLL* WORD OF MST
          SA4    X4+STLL
          AX4    3           POSITION EST LINK
          MX6    -9 
          BX6    -X6*X4 
          LX7    39 
          ZR     X6,ALP4     IF END OF CHAINABLE DEVICE 
          SA6    ALPB 
          R=     X3,ESTE
          IX3    X4*X3
          SA3    ESTB+X3+EQDE  GET EST ENTRY
          BX6    X2-X3
          SA4    ESTF+X4     MST ADDRESS
          BX3    X1*X6
          NZ     X3,ALP4     IF STATUS NOT CORRECT
          SA3    ALPB        GET EST ORDINAL
          BX6    X7+X3
          SA6    B2          PUT IN PACK EQUIPMENT LIST 
          MX6    1
          BX6    X6+X4
          SA6    A4          FLAG EQUIPMENT AS LINKED DEVICE
          MX6    -12
          SA3    X4+DDLL
          SA4    X4+STLL
          LX4    -12
          BX6    -X6*X4 
          NZ     X6,ALP5     IF ACTIVE USERS
          AX3    51 
          BX7    -X0*X3      SET ORIGINAL UNIT COUNT
          SB2    B2+1        ADVANCE PACK EQUIPMENT LIST ADDRESS
          SX7    X7+B1
          IX5    X5-X7       UNIT COUNT - 1 REMAINING TO ALLOCATE 
          NG     X5,ALP6     IF NO MORE UNITS TO ALLOCATE 
          EQ     ALP2        PROCESS NEXT EQUIPMENT 
  
 ALP3     ERROR  15          *DEVICE NOT REMOVABLE.*
          BX5    X5-X5
          EQ     ALPX        ERROR EXIT 
  
 ALP4     ERROR  11          *CANNOT ALLOCATE DEVICE.*
          BX6    X6-X6
          SX5    B0 
          SA6    PKL         CLEAR PACK EQUIPMENT LIST
          EQ     ALPX        ERROR EXIT 
  
 ALP5     SA1    ALPB        GET EST ORDINAL
          RJ     COD         CONVERT EST ORDINAL TO DISPLAY CODE
          MX7    -18         SET EST ORDINAL IN ACTIVE FILES MESSAGE
          LX6    30 
          SA4    MESA 
          LX7    30 
          BX6    -X7*X6 
          BX7    X7*X4
          BX6    X6+X7
          SA6    A4 
          MESSAGE  A4        * EQXXX, ACTIVE FILES, CANNOT INITIALIZE.* 
          RJ     ABT         ABORT *MSI*
  
 ALPA     VFD    6/4,6/0,12/0,3/7,9/0,12/7777B,12/0 
 ALPB     BSS    1           EST ORDINAL
 UMS      SPACE  4,10 
**        UMS - UPDATE MASS STORAGE.
* 
*         ENTRY  INTERNAL EST,S AND MST,S REFLECT NEW DEVICE PARAMETERS.
*                (PKL) = LIST OF EQUIPMENT MST,S TO BE MODIFIED.
* 
*         EXIT   (X1) .NE. 0 IF DUPLICATE DAT ENTRY.
* 
*         USES   X - ALL. 
*                A - ALL. 
* 
*         CALLS  COD, PKI, BPT. 
* 
*         MACROS ERROR, KEYMES, MESSAGE, SYSTEM.
  
  
 UMS11    MESSAGE  MESJ      *LINK DEVICE CANNOT BE ALTERED.* 
          BX1    X1-X1
  
 UMS      SUBR               ENTRY/EXIT 
          SA1    PARC+PMEQ   EQUIPMENT
          SA5    PKL
          RJ     BPT         BUILD MST UPDATING PARAMETER TABLE 
          SA4    LINK 
          SA3    DSI
          BX4    X4-X1
          SA1    PKL         CHECK FOR LINKED DEVICE
          NG     X3,UMS1     IF DEADSTART INITIALIZE
          ZR     X4,UMS11    IF LINK DEVICE 
 UMS1     NZ     X1,UMS2     IF CHAINED DEVICE
          RJ     DTY
          SA4    DTYA 
          SX5    X4-2RDE
          SX4    X4-2RDP
          MX0    -2 
          IX4    X4*X5
          NZ     X4,UMS1.1   IF NOT EXTENDED MEMORY DEVICE
          SA4    PARC+PMEQ   EXTRACT XM SHIFT 
          R=     X5,ESTE
          IX5    X4*X5
          SA5    ESTB+X5+EQAE 
          LX5    -30
          BX2    -X0*X5 
          SB2    X2 
          MX0    -11
          SX5    20B
          SA4    TUMS+3      CLEAR OLD SECTOR LIMITS
          LX5    B2 
          BX6    X0*X4
          LX0    36 
          BX6    X0*X6
          BX6    X6+X5       MERGE NEW SECTOR LIMITS
          LX5    36 
          BX6    X6+X5
          SA6    A4 
 UMS1.1   SYSTEM IMS,R,TUMS,MMS 
          SA1    TUMS+6      CHECK REPLY
          EQ     UMSX        RETURN 
  
*         IF THE EQUIPMENT IN THE LINK LIST IS AVAILABLE AND HAS
*         A GOOD LABEL, THE PACKNAME AND USER NAME OR FAMILY NAME 
*         AND DEVICE NUMBER OR JUST THE FAMILY NAME MUST BE 
*         VERIFIED TO INSURE THE CORRECT PACK IS BEING INITIALIZED. 
  
 UMS2     SA2    ESTF+X1
          R=     X3,ESTE
          IX3    X1*X3
          SA3    ESTB+X3+EQDE  GET EST ENTRY
          SA4    X2+STLL
          MX0    -6 
          LX4    24 
          LX3    59-54
          BX5    -X0*X4 
          SX6    A1 
          SA6    TEMP        SAVE PKL INDEX 
          PL     X3,UMS4     IF AVAILABLE 
          ZR     X5,UMS4     IF NO LABEL ERRORS 
          SA3    ELST        CHECK LABEL ERROR FOR NONRECOVERABLE TYPE
 UMS3     BX6    X3-X5
          SA3    A3+B1
          ZR     X6,UMS9     IF NONRECOVERABLE ERROR
          NZ     X3,UMS3     IF NOT END LIST
 UMS4     SA3    X2+PFGL
          SA4    X2+PUGL
          SA5    X2+STLL
          MX0    42 
          BX6    X0*X3       PACKNAME OR FAMILY NAME
          LX5    59-LIRP
          BX7    X0*X4       USER NAME
          SX1    X1+
          NG     X5,UMS6     IF INITIALIZE SET
          RJ     COD         CONVERT EST ORDINAL TO DISPLAY CODE
          MX7    -18         SET EST ORDINAL IN ACTIVE FILES MESSAGE
          LX6    30 
          SA4    ERROR19
          LX7    30 
          BX6    -X7*X6 
          BX7    X7*X4
          BX6    X6+X7
          SA6    A4 
 UMS5     ERROR  19          * EQXXX, INITIALIZE BIT NOT SET.*
          SX6    7777B
          SX7    HNGP 
          SA6    CNT
          SA7    ARGP 
          RJ     PKI
          EQ     UMS5        LOOP 
  
 UMS6     NZ     X7,UMS7     IF USER NAME SET 
          LX3    -12
          MX0    -6 
          BX7    -X0*X3      DEVICE NUMBER
          MX0    -3 
          ZR     X7,UMS7     IF DEVICE NUMBER EQ ZERO 
          BX2    -X0*X7 
          AX7    3
          SX2    X2+2R00
          LX7    6
          IX7    X2+X7
          LX7    59-11
 UMS7     SA6    SPN
          SA7    SUN
          SX1    X1          CLEAR PACK COUNT 
          MX0    1
          RJ     COD         CONVERT EQ NUMBER
          LX0    -22
          BX6    X0+X4       ADD TRAILING PERIOD
          SA6    ENID+2 
 UMS8     SX7    B1 
          SX6    EIDS 
          SA6    ARGP 
          SA7    CNT
          KEYMES ENID        *ENTER IDENTITY OF EQXXX.* 
          RJ     PKI         PROCESS KEYBOARD 
          SA1    PARC+PMID
          SA5    PARC+PMID+1
          SA2    SPN
          SA3    SUN
          BX4    X1-X2
          BX5    X5-X3
          NZ     X4,UMS8     IF FN OR PN DO NOT MATCH 
          ZR     X5,UMS9     IF UN OR DN MATCH
          SA1    PARC+PMID+1
          LX3    6
          SX2    1R0
          BX5    X3-X2
          BX1    X5-X1
          NZ     X1,UMS8     IF NO MATCH ON DN
 UMS9     SA2    TEMP 
          SA1    X2+B1       NEXT ENTRY IN PKL
          NZ     X1,UMS2     IF NOT END OF LIST 
          SA5    PKL         START OF EQUIPMENTS
  
*         UPDATE MST,S AND LINK EQUIPMENTS. 
  
 UMS10    BX4    X5          SAVE LINKED PACK COUNT 
          AX4    36 
          SYSTEM IMS,R,TUMS,MMS  UPDATE MST 
          SA1    TUMS+6      CHECK REPLY
          NZ     X1,UMSX     IF DUPLICATE DAT ENTRY 
          BX1    X5          SET EQUIPMENT
          SA5    A5+B1       READ NEXT EQUIPMENT
          ZR     X4,UMSX     IF END OF LIST 
          R=     X2,ESTE
          IX2    X1*X2
          SA2    ESTB+X2+EQDE  GET EST ENTRY
          MX0    1
          LX0    54-59
          BX6    X0+X2
          SA6    A2 
          SA2    ESTF+X1     SET DEVICE IN USE IN CHAIN 
          SA2    X2+STLL
          SA3    TUMS+1      UPDATE N/M 
          SX4    X4 
          LX0    2-54 
          BX6    X2+X0
          IX7    X4+X3       INCREMENT N/M
          SA7    A2-STLL+PFGL 
          SA6    A2 
          RJ     BPT         BUILD PARAMETER TABLE
          EQ     UMS10       LOOP FOR NEXT ENTRY
  
 SPN      CON    0
 SUN      CON    0
  
 ELST     CON    STLE        LABEL ERROR
          CON    STNR        NOT READY
          CON    0
 TUMS     SPACE  4,15 
**        TUMS - TABLE OF MST UPDATING PARAMETERS.
* 
*T, TUMS  60/  EST ENTRY
*T,       60/  PFGL MST WORD
*T,       60/  PUGL MST WORD
*T,       60/  MDGL MST WORD
*T,       12/  NC,12/  EQ,12/  AI,12/  CI,12/  NE 
*T,       12/  NP, 48/  UNIT LIST (*LDAM* DEVICES)
*T,       60/  REPLY WORD 
*         NC     NUMBER OF CATALOG TRACKS.
*         EQ     EST ORDINAL. 
*         AI     ALGORITHM INDEX. 
*         CI     CLEAR IN USE AS CHAINED DEVICE.
*         NE     NEXT EQUIPMENT IN LINKED DEVICE. 
  
  
 TUMS     BSSZ   7
 EDF      SPACE  4,10 
**        EDF - SEPARATE FAMILY FROM OTHER MASS STORAGE.
* 
*         EXIT   (B7) = EST ORDINAL.
* 
*         USES   X - ALL. 
*                A - 1, 2, 4, 7.
*                B - 2, 3, 7. 
  
  
 EDF      SUBR               ENTRY/EXIT 
          SA1    PARC+PMEQ
          SB7    X1          SAVE EST ORDINAL 
          SA1    ESTF+X1
          SA1    X1+PFGL
          MX0    42 
          BX5    X0*X1       FAMILY NAME
          SA1    ESTF-1 
 EDF1     SA1    A1+B1
          MX3    42 
          MI     X1,EDF5     IF LINKED EQUIPMENT
          ZR     X1,EDF2     IF EMPTY LINK
          SA4    X1+PFGL
          BX3    X0*X4
          BX3    X3-X5       TEST FAMILY NAME 
          BX2    X1 
 EDF2     SB3    A1-ESTF-ESMX 
          ZR     B3,EDFX     IF END OF EST
          ZR     X3,EDF4     IF MATCH ON FAMILY 
 EDF3     MX7    0
          SA7    A1          CLEAR NON FAMILY LINK
          EQ     EDF1        LOOP ON SEARCH 
  
 EDF4     SB2    A1-ESTF
          EQ     B2,B7,EDF1  IF CURRENT EQUIPMENT 
          SX4    B2 
          R=     X3,ESTE
          IX3    X4*X3
          SA4    X2+STLL
          SA3    ESTB+X3+EQDE  GET EST ENTRY
          SA2    X2+MDGL     CHECK FOR AUXILIARY DEVICE 
          LX4    59-LDIU
          LX3    59-54
          LX2    59-58
          NG     X4,EDF3     IF DEVICE IN USE 
          MI     X2,EDF3     IF AUXILIARY DEVICE CLEAR ENTRY
          PL     X3,EDF1     IF EQUIPMENT AVAILABLE LOOP FOR NEXT EQ
          EQ     EDF3        IF NOT AVAILABLE CLEAR LINK
  
 EDF5     SA3    X1+STLL
          MX6    60-LIRP
          BX3    -X6*X3 
          MX6    48-LIMF
          LX6    48 
          BX6    -X6*X3      CLEAR INITIALIZE REQUEST IN LINKED EQ
          SA6    A3 
          EQ     EDF3        GO CLEAR LINK
 CMS      SPACE  4,10 
**        CMS - CHECK MASK AND DEVICE NUMBER. 
* 
*         ENTRY  (B7) = EQ NUMBER.
* 
*         EXIT   (B6) = DEVICE NUMBER.
*                (B7) = EQ NUMBER.
*                (X7) .LT. 0 IF NEW PARAMETERS TO PROCESS.
* 
*         USES   ALL REGISTERS. 
* 
*         CALLS  PKI. 
* 
*         MACROS ERROR. 
  
  
 CMS11    SA1    PARC+PMEQ   SET EQUIPMENT
          BX7    X7-X7
          SB7    X1 
          SA1    ESTF+X1     SET DEVICE NUMBER
          SA1    X1+PFGL
          MX0    -6 
          AX1    12 
          BX1    -X0*X1 
          SB6    X1 
  
 CMS      SUBR               ENTRY/EXIT 
 CMS1     SA1    ESTF-1 
          MX6    0
          SA5    ESTF+B7
          SA5    X5+PFGL
          MX0    -6 
          AX5    12 
          BX4    -X0*X5 
          SB6    X4          SAVE DN
 CMS2     SA1    A1+B1
          ZR     X1,CMS5     IF EMPTY LINK
          MX5    -8 
          SA2    X1+PUGL
          BX3    X6*X2
          BX2    -X5*X2 
          IX6    X6+X2
          SA2    X1+PFGL
          MX7    60-LIFD
          SA5    X1+STLL     CHECK INITIALIZE STATUS
          AX2    12 
          BX2    -X0*X2      DEVICE NUMBER
          BX5    X7*X5       EXTRACT FULL INITIALIZE FLAGS
          IX2    X2-X4       CHECK AGAINST CURRENT DEVICE NUMBER
          CX5    X5 
          MX7    1           ALLOW *GO* IF FULL INITIALIZE SET
          LX5    59 
          BX7    X7-X5
          SA7    CMSA 
          ZR     X2,CMS8     IF DN MATCH
 CMS3     ZR     X3,CMS5     IF NO DUPLICATION OF BITS IN MASK
          SB3    A1-ESTF
          SX7    B3-B7
          NZ     X7,CMS4     IF NOT CURRENT DEVICE
          MX7    1
          SA7    CMSA        INDICATE *GO* NOT ALLOWED
 CMS4     ERROR  17          *DUPLICATE BITS IN MASK.*
          EQ     CMS6        DISPLAY ERROR
  
 CMS5     SB3    A1-ESTF-ESMX 
          NZ     B3,CMS2     IF NOT END OF FAMILY 
          SX7    377B 
          ZR     X6,CMSX     IF NO MASK BITS SET
          BX6    X7-X6       TEST MASK
          BX7    X7*X6
          ZR     X7,CMSX     EXIT MASK OK 
  
*         PROCESS MASK OVER FLOW. 
  
          ERROR  3           *FAMILY MASK NOT EQUAL 377.* 
          SX7    0
          SA7    CMSA        INDICATE *GO* ALLOWED FOR THIS ERROR 
 CMS6     MX7    1
          SX6    B1 
          SA7    PARC+PMDM   CLEAR DEVICE MASK
          SA6    CNT
          SX7    ENMS 
          SA7    ARGP 
          RJ     PKI         PROCESS MASK ERROR 
          SA1    PARC+PMDM
          SA5    CMSA        CHECK IF *GO* ALLOWED
          MX7    1
          PL     X1,CMSX     IF NOT *GO*
 CMS7     ZR     X5,CMS11    IF *GO* ALLOWED
          EQ     CMS1        LOOP 
  
*         PROCESS DUPLICATE DEVICE NUMBER.
  
 CMS8     SB3    A1-ESTF
          EQ     B3,B7,CMS3        IF SAME EQUIPMENT
          ERROR  13          *DUPLICATE DN.*
 CMS9     MX7    1
          SA7    PARC+PMDN   CLEAR DEVICE NUMBER
          SX6    B1 
          SX7    ENDN 
          SA6    CNT
          SA7    ARGP 
          RJ     PKI         PROCESS DN ERROR 
          SA1    PARC+PMDN
          SA5    CMSA        CHECK IF *GO* ALLOWED
          MI     X1,CMS7     IF *GO* ENTERED
          NZ     X1,CMS10    IF DN NOT ZERO 
          ERROR  20          *DN CANNOT BE ZERO.* 
          EQ     CMS9        PROCESS ERROR
  
 CMS10    MX7    1
          EQ     CMSX        GO PROCESS NEW DN
  
 CMSA     CON    0           INDICATOR FOR ALLOWING *GO* ENTRY
 CRE      SPACE  4,15 
**        CRE - CHECK REQUIRED ENTRIES. 
* 
*         ENTRY  (B5) = ADDRESS OF MST FOR EQUIPMENT. 
* 
*         EXIT   (X6) = 0 IF NEW PARAMETERS TO PROCESS. 
*                (B5) = ADDRESS OF MST FOR EQUIPMENT. 
* 
*         USES   X - 0, 1, 2, 4, 6, 7.
*                A - 1, 2, 4, 6, 7. 
*                B - 5. 
* 
*         CALLS  PKI. 
* 
*         MACROS KEYMES.
  
  
 CRE      SUBR               ENTRY/EXIT 
          MX0    42 
          SA1    B5+PFGL     CHECK FAMILY/PACK NAME 
          BX6    X0*X1
          NZ     X6,CREX     IF FAMILY/PACK NAME SPECIFIED
          SX6    B5+         SAVE MST POINTER 
          SA6    TEMP 
 CRE1     KEYMES ENNFN       *ENTER NEW FAMILY/PACK NAME.*
          SX7    B1+
          SA7    CNT
          RJ     PKI         PROCESS KEYBOARD INPUT 
          SA2    PARC+PMFN
          ZR     X2,CRE1     IF FAMILY/PACK NAME NOT ENTERED
          SA4    TEMP        RESTORE MST POINTER
          SB5    X4 
          MX6    0           NEW PARAMETERS TO PROCESS
          EQ     CREX        RETURN 
 EDD      SPACE  4,10 
**        EDD - EDIT DEVICE TRTS. 
* 
*         ENTRY  (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL OF INITIALIZED EQUIPMENT. 
* 
*         EXIT   B6,B7 NOT CHANGED. 
* 
*         USES   X - 0, 1, 2, 4, 5, 6.
*                A - 1, 2, 4, 6.
*                B - 3, 4.
* 
*         MACROS SYSTEM.
  
  
 EDD      SUBR               ENTRY/EXIT 
          SA1    ESTF+B7     SET IMS PARAMETER WORD 
          MX0    -8 
          SB3    -B1
          SA4    X1+PUGL
          BX0    -X0*X4      EXTRACT DEVICE MASK
          LX0    59-11
          ZR     X0,EDDX     IF NOT MASTER DEVICE 
          SB0    0
 EDD1     SB3    B3+B1
          SB4    ESMX 
          SX5    B3 
          EQ     B3,B4,EDDX  IF END OF EQUIPMENTS 
          SA1    ESTF+B3
          ZR     X1,EDD1     IF NO ENTRY
          EQ     B3,B7,EDD1  IF EQUIPMENT BEING INITIALIZED 
          LX5    47-11
          SA2    X1+STLL
          MX4    60-LIPF
          BX2    X4*X2
          BX6    X0+X5
          NZ     X2,EDD1     IF FULL OR *PF* INITIALIZE SET 
          SA6    EDPA 
          SYSTEM IMS,R,EDPA,EDT    EDIT TRT ON DEVICE 
          EQ     EDD1        LOOP FOR NEXT EQUIPMENT
  
 EDPA     CON    0           12/MASK, 12/EQ, 36/0 
  
 ECT      SPACE  4,10 
**        ECT - EDIT CATALOGS.
* 
*         ENTRY  (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
* 
*         EXIT   (B6) (B7) UNCHANGED. 
* 
*         USES   ALL BUT B6 AND B7
* 
*         CALLS  OPC, RDC, SCT, SFF, WTC. 
* 
*         MACROS CALLPFU, MESSAGE, RECALL, RETURN, SYSTEM.
  
  
 ECT      SUBR               ENTRY/EXIT 
          RETURN CATS,R 
          SB5    ESTF-1 
          NZ     B6,ECT1     IN DEVICE NUMBER .NE. 0
          MESSAGE  MESD      * INTERNAL ERROR IN MSI.*
          RJ     ABT         ABORT *MSI*
  
 ECT1     SB4    B5-ESTF-ESMX+1 
          ZR     B4,ECTX     IF END FAMILY
          SA1    B5+B1
          SB5    B5+B1
          ZR     X1,ECT1     IF EMPTY LINK
          SA3    X1+ALGL
          SA5    X1+PUGL
          MX0    -8 
          MX2    -12
          SA4    X1+STLL
          LX3    -12
          BX7    -X0*X5      DEVICE MASK
          MX0    60-LIPF
          BX6    -X2*X3      MASK CATALOG TRACK COUNT 
          ZR     X7,ECT1     IF NOT MASTER DEVICE 
          SA6    CNT         SAVE CATALOG TRACK COUNT 
          BX4    X0*X4
          SA5    X1+PFGL
          NZ     X4,ECT1     IF FULL OR *PF* INITIALIZE SET 
          RJ     OCT         OPEN CATALOG 
 ECT2     RJ     RDC         READ CATALOG ENTRIES 
          RJ     SFF         SEARCH FOR FILES AND DELETE
          ZR     X6,ECT3     IF NO FILES DELETED
          RJ     WTC         REWRITE UPDATED CATALOG
 ECT3     PL     X7,ECT2     IF NOT END OF CATALOG TRACK
          RJ     ACT         ADVANCE TO NEXT CATALOG TRACK
          PL     X7,ECT2     IF NOT END OF CATALOG TRACKS 
          SA1    CATS        DROP *PFU* 
          SX7    10B
          MX0    42 
          BX6    X0*X1
          BX7    X7+X6       SET FUNCTION TO DROP *PFU* 
          SA7    A1 
          RECALL A1          WAIT FOR PFU TO COMPLETE 
          CALLPFU UIFT,CTCU,R CLEAR UTILITY INTERLOCK 
          RETURN CATS 
          EQ     ECT1        LOOP FOR NEXT EQUIPMENT
 ABT      SPACE  4,10 
**        ABT - ABORT JOB.
* 
*         USES   X - 0, 1, 2, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 3, 5.
* 
*         MACROS ABORT, CALLPFU, MESSAGE, RECALL, ROUTE, SYSTEM.
  
  
 ABT      SUBR               ENTRY
 ABT1     SA1    SSID 
          SX1    X1-DSSI
          NZ     X1,ABT2     IF NOT DEADSTART SEQUENCING
          MESSAGE  MESL 
 +        EQ     *           HANG 
  
 ABT2     SYSTEM IMS,R,B1,CIT CLEAR *CMS* INTERLOCK 
          SB3    0
          SB5    ESMX 
 ABT3     SA2    ESTF+B3     CHECK FOR ISD INTERLOCK
          LX2    59-58
          PL     X2,ABT4     IF EQUIPMENT NOT INTERLOCKED 
          SX6    B3 
          LX6    48          SET EST ORDINAL
          SA6    CIRB 
          SYSTEM IMS,R,CIRB,ISD  CLEAR DEVICE INTERLOCK 
          SA1    CIRB 
          PL     X1,ABT3     IF INTERLOCK NOT CLEARED 
 ABT4     SB3    B3+1 
          LT     B3,B5,ABT3  IF NOT END OF EQUIPMENTS 
          SA2    PFUF 
          SA1    CATS        CHECK *PFU* ACTIVITY 
          SX7    10B
          MX0    42 
          ZR     X2,ABT5     IF *PFU* NOT ACTIVE
          BX6    X0*X1
          BX7    X7+X6
          SA7    A1 
          RECALL A1          WAIT FOR PFU TO COMPLETE 
 ABT5     SA1    UIFL 
          ZR     X1,ABT6     IF UTILITY INTERLOCK NOT SET 
          SA1    UIFT 
          SX2    B1          FORCE FET COMPLETE 
          BX6    X1+X2
          SA6    A1 
          CALLPFU A1,CTCU,R  CLEAR UTILITY INTERLOCK
 ABT6     MESSAGE  MESB      * MSI ABORTED INITIALIZE MAY NOT BE
*                            COMPLETE.* 
          SYSTEM DMD,R,RFL= 
          SETFS  OUTPUT,0    CHANGE FILE STATUS FOR SSJ= OUTPUT 
          ROUTE  ABTA,R 
          ABORT              ABORT *MSI*
  
  
*         ROUTE BLOCK FOR MEMORY DUMP.
  
 ABTA     VFD    42/0LOUTPUT,18/0 
          VFD    24/0,12/2HLP,6/0,18/FRCS+FRDC
          BSS    DPBL-2 
 OCT      SPACE  4,10 
**        OCT - OPEN CATALOG. 
* 
*         ENTRY  (B5) = ESTF POINTER. 
*                (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
*                (X5) = *PFGL* WORD OF MST. 
*                (X7) = DEVICE MASK.
* 
*         EXIT   B5, B6, B7, NOT CHANGED. 
*                CATALOG OPENED AND *PFU* ACTIVE. 
*                CATS FET NOT BUSY. 
* 
*         USES   ALL BUT B5, B6, B7.
* 
*         MACROS CALLPFU, RECALL. 
  
  
 OCT      SUBR               ENTRY/EXIT 
          MX0    -6 
          AX5    12 
          BX3    -X0*X5 
          SB2    X3          SAVE DN OF THIS EQIPMENT 
          LX5    12 
          SB4    7
          LX7    59-7 
 OCT1     MI     X7,OCT2     IF MASK BIT SET
          LX7    1
          SB4    B4-B1
          EQ     OCT1        FORM USER NAME FOR THIS DEVICE 
  
 OCT2     MX0    42 
          SX7    B5-ESTF     EQ NUMBER
          SA7    SCRB        PF DESCRIPTION (42/0, 6/, 12/ EST ORDINAL) 
          SX6    B4          SAVE USER INDEX
          SA6    A7+B1
          SX1    A7          SET ADDRESS OF PF DESCRIPTION
          SX2    A6          SET ADDRESS OF USER INDEX
          LX1    18 
          BX7    X1+X2
          SA7    CATS+FTPM
          CALLPFU CATS,CTCT,R GET CATALOG TRACK PARAMETERS
  
*         OPEN CATALOG FILE.
  
          SX2    5           FILE STATUS
          SA1    CATS+FTPM   GET CATALOG TRACK PARAMETERS 
          MX0    -24
          BX1    -X0*X1      SET EST ORDINAL AND FIRST TRACK
          MX0    -12
          BX6    -X0*X1      SET CURRENT TRACK
          LX1    36 
          BX2    X2+X1       BUILD CATALOG TRACK FST ENTRY
          LX6    24 
          BX7    X2+X6
          SA7    A1 
          BX6    X6-X6       CLEAR SECTOR COUNT 
          SA6    CATS+FTSC
          CALLPFU CATS,CTOP,R OPEN CATALOG FILE 
  
*         SET UTILITY INTERLOCK ON DEVICE.
  
          SX7    B5-ESTF     SET EQUIPMENT TO INTERLOCK 
          SX2    UIFL        SET INTERLOCK FLAG ADDRESS 
          LX7    48 
          BX6    X7+X2
          SA6    UIFT+FTPM
          CALLPFU UIFT,CTSU,R SET PF UTILITY INTERLOCK
  
*         ACTIVATE PFU LOAD PROCESSOR.
  
          SA1    CATS        CLEAR CATS FET STATUS
          SX7    B2          SET MASTER DEVICE NUMBER 
          MX2    42 
          SX3    PFUF        SET ADDRESS OF PFU ACTIVE FLAG 
          LX7    54 
          BX6    X7+X3
          SA6    CATS+FTPM
          BX1    X2*X1
          SX2    B1          SET CATS FET COMPLETE
          BX7    X1+X2
          SA7    A1 
  
*         IT IS NECESSARY TO DO A SEPARATE RECALL ON CATS RATHER THAN 
*         CALLING THE CTLM PROCESSOR OF PFU WITH AUTO RECALL SINCE PFU
*         STAYS AT THE CONTROL POINT AFTER INITIALIZING THE CTLM
*         PROCESSOR AND SETTING THE FET COMPLETE BUT DOES NOT RESTART 
*         THE CPU.
  
          CALLPFU CATS,CTLM  ACTIVATE PFU LOAD PROCESSOR
          RECALL CATS        WAIT FOR PFU TO INITIALIZE 
          EQ     OCTX        EXIT 
  
  
 ACT      SPACE  4,10 
**        ACT - ADVANCE CATALOG TRACK.
* 
*         ENTRY  (B5) = ESTF POINTER. 
*                (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
*                CATS FET NOT BUSY. 
* 
*         EXIT   B5,B6,B7 UNCHANGED.
*                (X7) = 0 CATALOG TRACK ADVANCED. 
*                (X7) .LT. 0 END OF CATALOG TRACKS. 
*                CATS FET NOT BUSY. 
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 2, 6, 7.
* 
*         MACROS RECALL.
  
  
 ACT      SUBR               ENTRY/EXIT 
          SA1    CNT
          SX6    X1-1 
          SA6    A1 
  
*         ADVANCE TO NEXT CATALOG TRACK 
  
 ACT1     SA2    SCRB+1      18/UI
          SX7    X2+10B 
          SA7    A2          18/NEXT UI 
          SX0    A7-B1
          SX7    A7 
          LX0    18 
          BX7    X0+X7       18/SCR,18/SCR+1
          SA1    CATS+1      REWIND BUFFER
          SA2    A1-B1       SET POSITION FUNCTION CODE IN FET
          SA7    CATS+FTCA
          MX3    42 
          SX6    X1 
          BX7    X7-X7       CLEAR SECTOR COUNTER 
          SA6    A1+B1
          SA7    CATS+FTSC
          BX7    X3*X2
          SA6    A6+B1
          SA7    A2          ISSUE FILE POSITION REQUEST
          RECALL A2          WAIT FOR *PFU* TO PROCESS REQUEST
          SA1    CNT         CHECK IF END OF CATALOG TRACKS 
          MX7    1
          ZR     X1,ACTX     IF END OF CATALOG TRACKS 
          MX7    0
          EQ     ACTX        RETURN 
 RDC      SPACE  4,10 
**        RDC - READ CATALOG. 
* 
*         ENTRY  (B5) = ESTF POINTER. 
*                (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
* 
*         EXIT   B5,B6,B7 UNCHANGED.
*                CATALOGS READ INTO CATS BUFFER.
*                CATS FET NOT BUSY. 
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 3, 6, 7.
* 
*         MACROS RECALL.
  
  
 RDC      SUBR               ENTRY/EXIT 
          SA1    CATS 
          MX0    42 
          BX6    X0*X1
          SX2    4           READ FUNCTION
          BX6    X6+X2
          SA3    A1+B1       GET FIRST
          BX7    -X0*X3 
          SA7    A3+B1       RESET IN AND OUT 
          SA7    A7+B1
          SA6    A1          SET FUNCTION 
          RECALL CATS 
          MX7    0
          SA7    CATS+FTSC   CLEAR SECTOR COUNT 
          EQ     RDCX        RETURN 
 SFF      SPACE  4,20 
**        SFF - SEARCH FOR FILES. 
* 
*         ENTRY  (B5) = ESTF POINTER. 
*                (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
* 
*         EXIT   B5,B6,B7 UNCHANGED.
*                (X6) = 0 IF CATALOG NOT CHANGED. 
*                (X7) .LT. 0 IF EOI ENCOUNTERED.
*                CATALOG ENTRIES (PFC-S) THAT POINT TO FILES ON 
*                SPECIFIED DEVICE ARE CHANGED AS FOLLOWS. 
*                1. IF PFC HAS VALID ALTERNATE STORAGE ADDRESS (ASA), 
*                THE DISK ADDRESS IS CLEARED. 
*                2. IF THE PFC HAS NO ASA, THEN THE PFC IS DELETED
*                BY CLEARING THE USER INDEX.
* 
*         USES   X - 0, 1, 2, 4, 6, 7.
*                A - 1, 2, 4, 7.
*                B - 3, 4.
  
  
 SFF      SUBR               ENTRY/EXIT 
          SX7    B0 
          SX6    B0 
          SA1    CATS+2      IN 
          SA2    CATS+1      FIRST
          SX0    177B 
          SA2    X2 
          BX0    X0*X2       CHECK FOR EMPTY SECTOR 
          NZ     X0,SFF1     IF NOT EMPTY 
          MX7    1
          EQ     SFFX        EXIT 
  
 SFF1     SB4    CATB+1 
          SB3    X0          WORDS IN SECTOR
          MX0    -6 
          SX1    B1          SET WRITE WITHOUT EOI FLAG 
          LX1    53-0 
          BX7    X1+X2
          SA7    A2 
 SFF2     SA1    B4+FCEO     CHECK DEVICE NUMBER
          SX4    B6 
          LX1    59-35
          BX1    -X0*X1      MASK OFF DN
          IX4    X1-X4
          NZ     X4,SFF4     IF DN-S DO NOT MATCH 
  
*         CHECK ALTERNATE STORAGE COPIES OF FILE DATA.  IF THE FILE 
*         DATA RESIDES ON TAPE OR CARTRIDGE ALTERNATE STORAGE, THE
*         DISK ADDRESS AND THE DEVICE NUMBER IN THE CATALOG ENTRY 
*         WILL BE CLEARED TO FORCE A RESTAGE OF THE FILE ON THE NEXT
*         *ATTACH*.  OTHERWISE, THE CATALOG ENTRY WILL BE DELETED.
  
          SA1    B4+FCTV
          MX2    -24
          BX7    -X2*X1 
          NZ     X7,SFF2.1   IF TAPE ALTERNATE STORAGE COPY EXISTS
          SA1    B4+FCAA
          MX2    -36
          BX7    -X2*X1 
          ZR     X7,SFF3     IF NO CARTRIDGE ALTERNATE STORAGE COPY 
          LX1    59-48
          NG     X1,SFF3     IF CARTRIDGE COPY OBSOLETE 
 SFF2.1   SA2    B4+FCBT     CLEAR DISK ADDRESS OF FILE 
          MX7    48 
          LX7    12 
          BX7    X7*X2
          SA7    A2 
          SA2    B4+FCDN     CLEAR DEVICE NUMBER
          MX7    54 
          LX7    36 
          BX7    X7*X2
          SA7    A2 
          SX6    B1          FORCE CATALOG UPDATE 
          EQ     SFF4        CHECK NEXT CATALOG ENTRY 
  
 SFF3     SA1    B4+FCUI     CLEAR USER INDEX OF FILE 
          MX2    42 
          BX7    X2*X1       CLEAR USER INDEX 
          SA7    A1 
          SX6    B1          FORCE CATALOG UPDATE 
  
*         PROCESS NEXT CATALOG ENTRY. 
  
 SFF4     SB4    B4+NWCE
          SB3    B3-NWCE
          NZ     B3,SFF2     IF MORE ENTRIES IN THIS SECTOR 
          SA1    CATS+2      GET IN 
          SA2    CATS+FTSC
          SA4    CATS+4      GET LIMIT
          SB3    B0 
          SX7    X2+B1       BUMP SECTOR COUNT
          SX2    B4+B1
          IX2    X1-X2       IN - BUFFER POINTER
          SA7    A2 
          IX4    X4-X1       LIMIT - IN 
          MI     X2,SFFX     IF POINTER .EQ. IN 
          SA1    B4          READ NEXT CONTROL WORD 
          MX2    -24
          SX7    177B 
          BX2    -X2*X1 
          BX7    X7*X1
          SB4    B4+B1       SET TO NEXT CATALOG ENTRY
          SB3    X7          WORDS IN SECTOR
          MX7    1           SET WRITE WITHOUT EOI FLAG 
          LX7    53-59
          BX7    X7+X1
          SA7    A1 
          NZ     X2,SFF2     IF MORE DATA 
          MX7    1           FLAG EOI ENCOUNTERED 
          EQ     SFFX        RETURN 
 WTC      SPACE  4,10 
**        WTC - WRITE CATALOG BUFFER TO DISK. 
* 
*         ENTRY  (B5) = ESTF POINTER. 
*                (B6) = DEVICE NUMBER.
*                (B7) = EST ORDINAL.
* 
*         EXIT   B5,B6,B7 UNCHANGED.
*                CATALOGS WRITTEN FROM CATS BUFFER. 
*                CATS FET NOT BUSY. 
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 6.
* 
*         MACROS RECALL.
  
  
 WTC      SUBR               ENTRY/EXIT 
          SA1    CATS 
          MX0    42 
          SX2    2           WRITE FUNCTION 
          BX6    X0*X1
          BX6    X6+X2
          SA6    CATS        WRITE CATALOG
          RECALL CATS 
          EQ     WTCX        RETURN 
          TITLE  SUBROUTINES. 
 ALD      SPACE  4,15 
**        ALD - ALLOCATE *LDAM* DEVICES.
* 
*         ENTRY  (A3) = EST ENTRY ADDRESS.
*                (A5) = *PALF* ADDRESS. 
*                (X2) = EST ORDINAL.
*                (X5) = UNIT COUNT-1 REMAINING TO ALLOCATE. 
*                (X7) = ORIGINAL UNIT COUNT.
*                (B2) = *PKL* INDEX.
* 
*         EXIT   (A5) = *PALF* ADDRESS. 
*                (B2) = *PKL* INDEX.
*                (X5) = .LT. 0 IF DEVICE ALLOCATED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3, 4, 5.
* 
*         CALLS  AUL. 
  
  
 ALD      SUBR               ENTRY/EXIT 
          SA3    A3          GET EST ENTRY
          SB3    X2          SAVE EST ORDINAL 
          SA1    ALDA        GET ALLOCATION MASK
          SB4    X2          SET SEARCH INDEX 
          BX0    X1 
          BX1    X0*X3       MATCH CRITERIA 
          LX3    59-56
          PL     X3,ALDX     IF DEVICE NOT REMOVABLE
 ALD1     SB4    B4+B1       INCREMENT EST ORDINAL
          SX3    B4 
          R=     X2,ESTE
          IX2    X3*X2
          SA2    ESTB+X2+EQDE  GET EST ENTRY
          SA3    B4+ESTF
          SX4    B4-ESMX
          PL     X4,ALDX     IF END OF EST ENTRIES
          BX6    X0*X2       CHECK DEVICE FOR MATCH 
          BX6    X1-X6
          SA4    X3+STLL
          NZ     X6,ALD1     IF NO DEVICE MATCH 
  
*         THE CHANNELS OF THE FIRST DEVICE ARE COMPARED WITH
*         THE CHANNELS OF THE LINK CANDIDATES TO INSURE THAT ALL
*         ITS CHANNELS ARE CONTAINED IN THE LINK DEVICES CHANNELS.
  
          SB5    B0          INITIALIZE CHANNEL COMPARE 
          LX2    24          POSITION CHANNELS (B * * * * * * * A)
          MX3    -12
          BX6    -X3*X2      CHANNEL *A*
          SA6    ALDB 
          LX2    12 
          BX6    -X3*X2      CHANNEL *B*
          SA6    A6+B1
          SX3    B3 
          R=     X2,ESTE
          IX3    X3*X2
          SA3    ESTB+X3+EQDE  GET EST ENTRY OF FIRST EQUIPMENT 
          LX3    24 
          SA2    ALDB 
 ALD2     MX6    -12         CHECK CHANNEL WITH LIST
          BX6    -X6*X3 
          ZR     X6,ALD3     IF CHANNEL .EQ. 0
          BX2    X2-X6
          ZR     X2,ALD4     IF CHANNELS COMPARE
          SA2    A2+B1
          NZ     X2,ALD2     IF MORE CHANNELS TO CHECK
          EQ     ALD1        LOOP FOR NEXT EQUIPMENT
  
 ALD3     NZ     B5,ALD4     IF NOT CHANNEL *A* 
          NZ     X2,ALD1     IF LIST CHANNEL *A* .NE. 0 
 ALD4     LX3    12          TEST NEXT CHANNEL
          SB5    B5+B1
          SA2    ALDB 
          SX6    B5-2        *** TWO CHANNEL SUPPORT
          NZ     X6,ALD2     IF NOT END OF CHANNELS 
          MX6    12          CHECK FOR ACTIVE USES
          SX2    B4 
          MX3    60-LIFD
          LX6    24 
          BX6    X6*X4
          BX3    X3*X4
          NZ     X6,ALD1     IF ACTIVE USERS
          ZR     X3,ALD1     IF TOTAL INITIALIZE NOT SET
          LX7    39 
          LX4    0-3
          BX7    X7+X2       FORM *PKL* ENTRY 
          MX6    -3 
          SA7    B2 
          BX7    -X6*X4 
          SB2    B2+B1       INCREMENT *PKL* INDEX
          SX7    X7+B1       ADJUST UNIT COUNT
          IX5    X5-X7
          PL     X5,ALD1     IF MORE UNITS TO ALLOCATE
          RJ     AUL         ASSEMBLE UNIT LIST 
          EQ     ALDX        RETURN 
  
 ALDA     VFD    12/5600B    *MS*, SHARED, REMOVABLE, *LDAM*
          VFD    24/0 
          VFD    12/7777B    0N/OFF AND TYPE
          VFD    12/0 
 ALDB     BSS    3           CHANNEL LIST FOR DEVICE MATCH
 AUL      SPACE  4,10 
**        AUL - ASSEMBLE UNIT LIST. 
* 
*         ENTRY  (B3) = EST ORDINAL.
* 
*         EXIT   *DDLL* LIST BUILT. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 4, 7. 
*                B - 3, 4, 5, 6, 7. 
  
  
 AUL3     SA2    B3+ESTF     FORM *DDLL*
          MX0    -48
          LX7    B5,X7
          SA1    X2+DDLL
          BX4    -X0*X7 
          BX1    X0*X1
          BX7    X1+X4
          SA7    X2+DDLL     SET *DDLL* IMAGE IN MST
  
 AUL      SUBR               ENTRY/EXIT 
          SB4    PKL         INITIALIZE INDEX 
          SX1    B3 
          MX0    -6 
          SA4    PARC+PMNP   GET UNIT COUNT 
          SB5    B0          INITIALIZE SHIFT INDEX 
          SB6    X4 
 AUL1     SA1    X1+ESTF
          SA3    X1+DDLL
          BX2    X3 
          MX6    -3          GET ORIGINAL UNIT COUNT
          LX2    -51
          SB7    6
          BX6    -X6*X2 
 AUL2     BX4    -X0*X3      MASK UNIT
          BX7    X0*X7
          BX7    X4+X7       MERGE NEXT UNIT
          SX6    X6-1 
          SB6    B6-B1
          LX7    -6 
          AX3    6
          SB5    B5+B7
          ZR     B6,AUL3     IF END OF ASSEMBLY 
          PL     X6,AUL2     IF MORE UNITS TO MERGE 
          SA1    B4          GET NEXT EQUIPMENT 
          SB4    B4+B1
          EQ     AUL1        LOOP TO ASSEMBLE NEXT UNIT 
 BPT      SPACE  4,10 
**        BPT - BUILD MST UPDATING PARAMETER TABLE. 
* 
*         ENTRY  (X1) = EST ORDINAL.
*                INTERNAL EST AND MST REFLECT NEW PARAMETERS. 
*                (X5) = *PKL* LIST ENTRY. 
* 
*         EXIT   *TUMS* BUILT FOR IMS FUNCTION 6. 
*                (X5) = UNCHANGED.
* 
*         USES   X - 0, 2, 3, 4, 6, 7.
*                A - 2, 3, 4, 6, 7. 
  
  
 BPT      SUBR               ENTRY/EXIT 
          SA2    X1+ESTF     MST ADDRESS
          R=     X3,ESTE
          IX3    X1*X3
          SA3    ESTB+X3+EQDE  GET NEW EST ENTRY
          SA4    X2+PFGL     GET NEW MST WORDS
          BX6    X3 
          LX7    X4 
          SA3    X2+PUGL
          SA6    TUMS 
          MX0    1           SET 16-WORD PFC FLAG 
          SA4    X2+MDGL
          LX0    57-59
          SA7    A6+B1       TUMS + 1 
          LX6    X3 
          BX7    X0+X4
          SA6    A7+B1       TUMS + 2 
          SA7    A6+B1       TUMS + 3 
          MX0    -12
          SA3    X2+ALGL     CATALOG COUNT
          AX3    12 
          BX6    -X0*X3 
          SA4    X2+DILL     ALGORITHM INDEX
          SA3    X2+STLL
          LX6    12 
          MX7    LIHD-LIFD+1
          BX6    X6+X1       NC, EQ 
          LX7    LIHD-59
          BX4    -X0*X4 
          LX6    12 
          BX7    X7*X3
          ZR     X7,BPT1     IF NOT CHANGING ALGORITHM INDEX
          BX6    X6+X4       NC, EQ, AI 
 BPT1     LX3    59-LDIU
          LX6    24 
          LX0    12 
          BX6    -X0+X6      NC, EQ, AI, CI 
          SA4    X2+DDLL     GET NEW DEVICES UNIT LIST
          PL     X3,BPT2     IF CLEARING DEVICE IN USE IN CHAIN 
          SA4    X2+STLL     GET CURRENT UNIT COUNT 
          SA3    X2+DDLL     GET CURRENT UNIT LIST
          BX6    X0*X6
          MX0    -48
          LX4    59-14
          MX2    3
          BX7    -X0*X3 
          LX2    -9 
          BX4    X2*X4
          BX4    X4+X7
 BPT2     SX3    X5          SET NEXT EQUIPMENT IN CHAIN
          BX6    X6+X3
          SA6    A7+B1       TUMS+4 
          BX7    X4 
          MX6    0
          SA7    A6+B1       TUMS+5 
          SA6    A7+B1       TUMS+6 = CLEAR REPLY WORD
          EQ     BPTX        RETURN 
 CIR      SPACE  4,10 
**        CIR - CHECK INITIALIZATION REQUESTED. 
* 
*         EXIT   (B6) .LT. 0 IF NO EQUIPMENT FOUND. 
*                (B6) = FIRST EQUIPMENT FOUND.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 4, 6. 
*                B - 4, 5, 6. 
* 
*         MACROS SYSTEM.
  
  
 CIR      SUBR               ENTRY/EXIT 
          SB3    NOPE        INITIALIZE EST ORDINAL FOR SEARCH
          SB6    -B1
          SB5    ESMX 
 CIR1     EQ     B3,B5,CIRX  IF END OF EQUIPMENTS 
          SA2    ESTF+B3
          SB3    B3+B1
          ZR     X2,CIR1     IF EMPTY LINK
          SX6    B3-B1       EST ORDINAL
          R=     X1,ESTE
          IX1    X6*X1
          SA1    ESTB+X1+EQDE  GET EST ENTRY
          SA4    X2+STLL
          NG     X4,CIR2     IF FORMAT PENDING
          MX3    60-LIPF
          BX7    X3*X4
          LX4    59-LIRP
          PL     X4,CIR1     IF NO INITIALIZE REQUESTS PENDING
          BX3    X1 
          LX4    LIRP-LUNL
          MI     X4,CIR1     IF DEVICE UNLOADED 
          LX1    59-57
          BX4    X3 
          LX4    59-49
          LX3    59-52
          BX1    X3+X1
          LX6    48 
          NG     X4,CIR2     IF DEVICE OFF OR DOWN
          PL     X1,CIR3     IF NOT SHARED DEVICE 
          ZR     X7,CIR3     IF NOT GLOBAL INITIALIZE 
          SA6    CIRA 
          PL     X3,CIR1.1   IF NOT AN ISD DEVICE 
          SX7    B1 
          BX6    X6+X7
          SA6    CIRB 
          SYSTEM  IMS,R,CIRB,ISD  INTERLOCK DEVICE
          SA1    CIRB 
          PL     X1,CIR2     IF DEVICE NOT INTERLOCKED
          SA2    B3+ESTF-1   SET DEVICE INTERLOCKED FLAG
          MX7    1
          LX7    -1 
          BX7    X7+X2
          SA7    A2 
 CIR1.1   SYSTEM IMS,R,CIRA,CSD  CHECK DEVICE STATUS
          SA1    CIRA        CHECK REPLY
          NG     X1,CIR3     IF DEVICE UNLOADED IN OTHER MACHINES 
 CIR2     SA4    A4          CLEAR INITIALIZE REQUESTS
          MX3    60-LIRP
          BX4    -X3*X4 
          MX3    48-LIMF
          LX3    48 
          BX6    -X3*X4 
          SA6    A4+
          EQ     CIR1        LOOP ON SEARCH 
  
 CIR3     PL     B6,CIR1     IF EQUIPMENT ALREADY FOUND 
          SB6    B3-B1
          SX7    B3-B1       SET EQUIPMENT TO PROCESS 
          SX1    B3+1000B-1  ENSURE LEADING ZEROES IN CONVERSION
          MX0    -18
          SA7    PARC+PMEQ
          RJ     COD
          SA2    =7L
          BX6    -X0*X6 
          SA6    EQ 
          BX7    X6+X2
          LX7    -18
          SA7    EQDS+1      SET EST ORDINAL IN K-DISPLAY 
          EQ     CIR1        LOOP ON SEARCH 
  
  
 CIRA     CON    0           IMS REQUEST/REPLY AREA 
 CIRB     CON    0           ISD INTERLOCK STATUS 
 CMC      SPACE  4,10 
**        CMC - CHECK MODE CHANGE.
* 
*         ENTRY  (PARC+PMEQ) = EQUIPMENT TO CHECK FOR MODE CHANGE.
*                (B5) = MST ADDRESS OF EQUIPMENT. 
* 
*         EXIT   (X7) = 0 IF NO FULL TRACK ACCESS WHEN REQUIRED.
*                TO *ABT* IF INTERNAL ERROR DETECTED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 3, 6.
* 
*         CALLS  PMC. 
  
  
 CMC4     SX6    -B3         SET *CLEAR* OVERRIDE 
          SA6    CLOV 
          MX0    18 
          SA4    EQ 
          SA1    ERROR23     FORM MESSAGE 
          LX0    -12
          BX6    -X0*X1 
          LX4    48-18
          BX6    X6+X4
          SA6    A1          *EQXXX, NO FULL TRACK ACCESS.* 
          BX7    X7-X7
  
 CMC      SUBR               ENTRY/EXIT 
          SA4    PARC+PMEQ
          SX7    B1 
          SB3    X4 
          SA3    B5+STLL
          LX3    59-LIHD
          SB6    B0          INDICATE HALF TRACK
          NG     X3,CMC1     IF HALF TRACK MODE 
          LX3    LIHD-LIFD
          PL     X3,CMCX     IF NO MODE CHANGE
          BX3    X3-X3
 CMC1     RJ     PMC         PROCESS MODE CHANGE
          NG     X5,CMC4     IF NO FULL TRACK ACCESS
          SB3    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
 CMC2     SB3    B3+B1       ADVANCE EST ORDINAL
          SX7    B1 
          SB4    B3-ESMX
          ZR     B4,CMCX     IF END OF EST
          SA2    B3+ESTF
          SB4    X2 
          EQ     B4,B5,CMC2  IF CURRENT EQUIPMENT 
          SA3    B4+STLL
          LX3    59-LIHD
          SB6    B0          SET HALF TRACK MODE
          NG     X3,CMC3     IF HALF TRACK MODE 
          LX3    LIHD-LIFD
          PL     X3,CMC2     IF NO MODE CHANGE
          BX3    X3-X3
 CMC3     RJ     PMC         PROCESS MODE CHANGE
          EQ     CMC2        LOOP 
 DIO      SPACE  4,10 
**        DIO - DISPLAY INITIALIZE OPTIONS. 
* 
*         EXIT   DISPLAY UPDATED. 
*                (TOTL) = 0 IF NOT TOTAL INITIALIZE.
* 
*         USES   X - 0, 2, 3, 5, 6, 7.
*                A - 2, 3, 5, 6, 7. 
*                B - 2, 3, 4. 
  
  
*         DISABLE ACCESS LEVEL PARAMETER ENTRIES ON ANYTHING
*         OTHER THAN A TOTAL INITIALIZE.
  
 DIO2     MX7    1
          SA7    ENLA        DISABLE *LA* PARAMETER ENTRY 
          SA7    A7+B1       DISABLE *UA* PARAMETER ENTRY 
          ERRNZ  ENUA-ENLA-1 ERROR IF WORDS NOT CONTIGUOUS
          MX0    LIPF-LIQF+1 EXTRACT *PF* AND *QF* OPTIONS
          LX5    LIFD-LIPF
          BX3    X0*X5
          MX0    48-LIMF     EXTRACT DAYFILE OPTIONS
          LX5    LIPF-LIDF
          BX2    X0*X5
          LX2    LIQF-LIFD   MERGE PARTIAL INITIALIZE OPTIONS 
          BX5    X3+X2
          SB4    TPDS+2 
          SA3    BLK
          SB3    42 
          SA2    DIOB 
          BX7    X3 
          SX0    77B
 DIO3     PL     X5,DIO4     IF OPTION NOT SET
          BX3    X0*X2
          LX3    6
          SX3    X3+1RF&1R
          LX6    X3,B3
          BX7    X6-X7
          SB3    B3-18
          PL     B3,DIO4     IF DISPLAY WORD NOT FILLED 
          SA7    B4+1 
          SX6    A7-TPDS-4
          ZR     X6,DIOX     IF DISPLAY LINE LIMIT
          SA3    BLK
          SB4    A7 
          BX7    X3 
          SB3    48          RESET SHIFT COUNT
 DIO4     AX2    6
          LX5    1
          NZ     X2,DIO3     IF ALL OPTIONS NOT CHECKED 
          BX6    X6-X6
          SA7    B4+B1
          SA6    TOTL        CLEAR TOTAL INITIALIZE STATUS
  
 DIO      SUBR               ENTRY/EXIT 
          SA3    PARC+PMEQ   GET EST ORDINAL
          SA4    ESTF+X3     GET MST ADDRESS
          SA5    X4+STLL
          SB2    B0 
          LX5    59-LIAL
          NG     X5,DIO1     IF INITIALIZE *AL* 
          SB2    B2+B1
          LX5    LIAL-LIHD
          NG     X5,DIO1     IF INITIALIZE *HT* 
          SB2    B2+B1
          LX5    LIHD-LIFD
 DIO1     PL     X5,DIO2     IF NOT INITIALIZE *FT* 
          SA2    B2+DIOA     SET VALUE FOR INITIALIZE REQUEST 
          MX7    1
          SA3    BLK
          BX6    X2 
          SA7    TOTL        SET TOTAL INITIALIZE INDICATOR 
          SA6    TPDS+3 
          BX7    X3 
          SA7    A6+B1
          EQ     DIOX        RETURN 
  
  
 DIOA     DATA   H$  *TOTAL*$ 
          DATA   H$*TOTAL/HT*$
          DATA   H$*TOTAL/FT*$
 DIOB     VFD    24/0,36/6RMEADQP&6R
 DTY      SPACE  4,10 
**        DTY - GET PARAMETERS FOR DEVICE TYPE. 
* 
*         ENTRY  PARC+PMEQ = EST ORDINAL. 
* 
*         EXIT   (X3) = TDTY ENTRY FOR DEVICE TYPE. 
*                (X3) = 0 IF EQUIPMENT NOT FOUND. 
*                (X5) = EST ORDINAL.
* 
*         USES   X - 2, 3, 5, 6.
*                A - 3, 5.
  
  
 DTY      SUBR               ENTRY/EXIT 
          MX2    11 
          SA5    PARC+PMEQ   GET EQUIPMENT
          LX2    -1 
          R=     X3,ESTE
          IX3    X5*X3
          SA3    ESTB+X3+EQDE  GET EST ENTRY
          LX3    36 
          BX2    X2*X3       DEVICE TYPE
          BX6    X2          SAVE DEVICE TYPE 
          LX6    12 
          SA6    DTYA 
          SA3    TDTY-1 
 DTY1     SA3    A3+B1
          BX6    X2-X3
          LX6    1
          AX6    48+1 
          ZR     X6,DTYX     IF DEVICE TYPE FOUND 
          NZ     X3,DTY1     IF MORE ENTRIES
          EQ     DTYX        RETURN 
  
  
 DTYA     CON    0           DEVICE TYPE
 ISF      SPACE  4,15 
**        ISF - INITIALIZE SPECIAL FILES. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 2, 3, 4, 6. 
* 
*         MACROS MESSAGE, QCALL, SYSTEM.
  
  
 ISF      SUBR               ENTRY/EXIT 
          SA1    PARC+PMEQ   GET MST POINTER
          SA1    X1+ESTF
          SB5    X1 
          SA3    TOTL 
          SA4    B5+STLL
          AX3    59 
          BX4    X3+X4
          MX5    -4 
          LX4    59-LIQF     CHECK QUEUE FILE INITIALIZATION
          PL     X4,ISF5     IF NOT SELECTED
  
*         INITIALIZE INACTIVE QUEUED FILES. 
  
          SA3    QFET 
          SA2    PARC+PMEQ
          LX5    10 
          BX6    X5*X3       CLEAR ERROR CODE 
          LX2    48-0 
          SA6    A3          RESET FET+0
          BX6    X2 
          SA6    A3+7        SET EST ORDINAL FOR *QFM*
          QCALL  IIQF,QFET   INITIALIZE QUEUED FILES
          SA1    QFET 
          BX5    -X5*X1      ISOLATE ERROR CODE 
          AX5    10D         SET ERROR CODE LOWER 
          SA1    PARC+PMEQ
          SA3    MESI        * EQXXX, INACTIVE QUEUES INITIALIZED.* 
          SA2    TOTL 
          ZR     X5,ISF1     IF QUEUES INITIALIZED
          SA3    MESE        * EQXXX, UNABLE TO INITIALIZE IQFT.* 
          NG     X2,ISF5     IF TOTAL INITIALIZE
 ISF1     SA1    EQ          SET EST ORDINAL IN MESSAGE 
          MX0    42 
          LX1    42-18
          LX0    42-18
          BX3    X0*X3
          BX6    X3+X1
          SA6    A3 
          SX0    A3          SET MESSAGE ADDRESS
          ZR     X5,ISF4     IF FILE INITIALIZED
          SX2    X5-FAIE
          NZ     X2,ISF2     IF NOT INTERLOCK ERROR 
          MESSAGE  MESF,,R   * IQFT FILE INTERLOCKED.*
          EQ     ISF4        SET UNABLE TO INITIALIZE IQFT FILE 
  
 ISF2     SX2    X5-FNFE
          NZ     X2,ISF3     IF FILE FOUND
          MESSAGE  MESG,,R   * NO IQFT FILE FOUND.* 
 ISF3     SX2    X5-RMSE
          NZ     X2,ISF4     IF NOT RMS ERROR 
          MESSAGE  MESH,,R   * UNABLE TO READ IQFT FILE.* 
 ISF4     MESSAGE  X0,,R     ISSUE INITIALIZATION STATUS MESSAGE
*         MESSAGE  MESE,,R   * EQXXX, UNABLE TO INITIALIZE IQFT.* 
*         MESSAGE  MESI,,R   * EQXXX, INACTIVE QUEUES INITIALIZED.* 
 ISF5     SA5    DSI
          SA4    B5+STLL
          NG     X5,ISFX     IF DEADSTART INITIALIZE
          SA3    TOTL 
          AX3    59 
          SA5    PARC+PMEQ
          BX4    X3+X4
          LX4    59-LIDF
          PL     X4,ISF6     IF NOT DAYFILE INITIALIZATON 
  
*         INITIALIZE SYSTEM DAYFILE.
  
          SYSTEM IMS,R,X5,IDF 
 ISF6     LX4    LIDF-LIAF
          PL     X4,ISF7     IF NOT ACCOUNT FILE INITIALIZATION 
  
*         INITIALIZE ACCOUNT FILE.
  
          SYSTEM IMS,R,X5,IDF+1 
 ISF7     LX4    LIAF-LIEF
          PL     X4,ISF8     IF NOT ERRLOG INITIALIZATION 
  
*         INITIALIZE ERRLOG.
  
          SYSTEM IMS,R,X5,IDF+2 
 ISF8     LX4    LIEF-LIMF
          PL     X4,ISF9     IF NOT MAINTENANCE LOG INITIALIZATION
  
*         INITIALIZE MAINTENANCE LOG. 
  
          SYSTEM IMS,R,X5,IDF+3 
 ISF9     PL     X3,ISFX     IF NOT TOTAL INITIALIZE
          SA1    B5+ACGL     CHECK FOR LOCAL AREA SECTOR
          LX1    59-GLAP
          PL     X1,ISFX     IF LOCAL AREA SECTOR NOT DEFINED 
          SYSTEM IMS,R,X5,ILA INITIALIZE LOCAL AREAS
          EQ     ISFX        RETURN 
 MTW      SPACE  4,10 
**        MTW - MOVE THREE WORDS TO DISPLAY LINE. 
* 
*         ENTRY  (A1) = MESSAGE ADDRESS.
* 
*         USES   X - 1, 2, 5, 6, 7. 
*                A - 1, 2, 5, 6, 7. 
*                B - 2. 
  
  
 MTW      SUBR               ENTRY/EXIT 
          SA2    A1+B1
          BX6    X1 
          SA1    A2+B1
          LX7    X2 
          SA2    FLFG 
          NZ     X2,MTW2     IF FLAW PROCESSING 
          SA5    PAGA 
          LX5    30 
          SB2    X5 
          GT     B2,B1,MTW2  IF CURRENT LEFT SCREEN INDEX IS 2
          SA6    MSDS1+1
 MTW1     BX6    X1 
          SA7    A6+1 
          SA6    A7+B1
          SA1    BLK
          BX6    X1 
          EQ     B1,B2,MTW3  IF CURRENT LEFT SCREEN INDEX IS 1
          SA2    MSDS1+1
 MTW1.1   SA6    A2 
          SA6    A2+1 
          SA6    A6+B1
          EQ     MTWX        RETURN 
  
 MTW2     SA6   MSDS2+1      DISPLAY FLAW MESSAGE 
          EQ    MTW1         CONTINUE 
  
 MTW3     SA2    MSDS2+1
          EQ     MTW1.1      CONTINUE 
 PMC      SPACE  4,15 
**        PMC - PROCESS MODE CHANGE.
* 
*         ENTRY  (B3) = EST ORDINAL.
*                (X3) = .LT. 0, IF HALF TRACK ACCESS. 
*                (B6) = 0, IF HALF TRACK MODE.
* 
*         EXIT   (X5) .LT. 0, IF NO FULL TRACK ACCESS.
* 
*         USES   X - ALL. 
*                A - 2, 4, 5, 7.
*                B - 4, 6.
* 
*         CALLS  DTY. 
* 
*         MACROS MESSAGE. 
  
  
 PMC      SUBR               ENTRY/EXIT 
          MX0    -12
          MX1    0
          NG     X3,PMC3     IF HALF TRACK ACCESS 
          MX1    60 
          SB6    12          SET FULL TRACK SHIFT COUNT 
  
*         ASSEMBLE EST IMAGE. 
  
 PMC3     SX7    B3 
          R=     X4,ESTE
          IX7    X7*X4
          SA4    ESTB+X7+EQDE READ EST ENTRY
          LX4    -12
          BX5    -X0*X4      CURRENT DEVICE TYPE
          SA2    PMCB-1 
 PMC4     SA2    A2+B1       READ NEXT LIST WORD
          BX7    -X0*X2 
          ZR     X2,PMC4.0   IF END OF LIST 
          BX6    X5-X7
          NZ     X6,PMC4     IF NO MATCH
          AX2    12 
          AX2    X2,B6       POSITION NEW DEVICE TYPE 
          BX5    -X0*X2      NEW DEVICE TYPE
 PMC4.0   BX4    X0*X4
          BX7    X4+X5       MERGE NEW DEVICE TYPE
          SX0    10001B      SET CHANNEL ACCESS FLAGS 
          LX7    12 
          LX0    24+8 
          BX2    X0*X7       CHANNEL MODE FLAGS 
          BX2    X1-X2       SELECT MODE OF OPERATION 
          BX2    X0*X2       NEW CHANNEL ACCESS FLAGS 
          MX5    1
          ZR     X1,PMC4.1   IF HALF TRACK INITIALIZE 
          ZR     X2,PMCX     IF NO CHANNELS FOR ACCESS
 PMC4.1   SA7    A4 
          RJ     DTY         SET SINGLE UNIT SECTOR LIMIT 
          MX0    12 
          LX0    -12
          SA1    X5+ESTF
          SA2    X1+MDGL
          BX7    X0*X3
          BX2    -X0*X2 
          AX3    12 
          BX7    X2+X7
          MX0    -6 
          SA7    A2 
          SA4    X1+DILL     CHANGE ALGORITHM INDEX 
          BX2    -X0*X3 
          BX4    X0*X4
          BX7    X2+X4
          SA7    A4 
          EQ     PMCX        RETURN 
  
**        DEVICE CONVERSION TABLES. 
*T PMCB   24/,12/ *FT* TYPE, 12/ *HT* TYPE, 12/OLD TYPE 
  
 PMCB     VFD    24/,12/2RDK,12/2RDI,12/2RDI
          VFD    24/,12/2RDL,12/2RDJ,12/2RDJ
          VFD    24/,12/2RDK,12/2RDI,12/2RDK
          VFD    24/,12/2RDL,12/2RDJ,12/2RDL
          VFD    24/,12/2RDQ,12/2RDM,12/2RDM
          VFD    24/,12/2RDQ,12/2RDM,12/2RDQ
          CON    0           END OF TABLE 
 PTY      SPACE  4,10 
**        PTY - PROCESS TYPE. 
* 
*         ENTRY  (B5) = MST POINTER.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3. 
* 
*         CALLS  COD. 
  
  
 PTY      SUBR               ENTRY/EXIT 
          SA1    PARC+PMTY
          SA2    B5+MDGL
          LX1    6
          SA3    B5+PUGL
          LX2    59-58
 PTY1     MX0    -16
          ZR     X1,PTY3     IF TYPE NOT ENTERED
          BX6    -X0         DEFAULT MASK FOR AUXILIARY DEVICES 
          MX7    1           SET AUXILIARY BIT
          SX4    X1-1RX 
          BX2    -X7*X2 
          ZR     X4,PTY2     IF AUXILIARY TYPE
          MX7    0           CLEAR AUXILIARY BIT
          BX6    -X0*X3      DEFAULT MASKS FOR FAMILY TYPE
          SX1    1RF         SET TO FAMILY DEVICE 
 PTY2     BX3    X0*X3       SET DEFAULT MASKS
          BX6    X3+X6
          BX7    X7+X2       MERGE NEW AUXILIARY BIT
          SA6    A3 
          LX7    58-59
          SA7    A2 
          LX1    -6 
          BX6    X1 
          SA6    A1          RESET TYPE 
          SA6    TYDS+1 
          SA1    B5+PUGL     SET INDIRECT FILE MASK 
          MX0    -8 
          BX7    -X0*X1 
          BX1    -X0*X1 
          SA7    PARC+PMDM
          RJ     COD
          SA1    B5+PUGL     SET DIRECT ACCESS MASK 
          BX6    X4 
          AX1    8
          SA6    DMDS+1 
          BX7    -X0*X1 
          BX1    -X0*X1 
          SA7    PARC+PMSM
          RJ     COD
          BX6    X4 
          SA6    SMDS+1 
          EQ     PTYX        RETURN 
  
 PTY3     SX1    1RX
          NG     X2,PTY1     IF AUXILIARY DEVICE
          SX1    1RF         SET TO FAMILY DEVICE 
          EQ     PTY1        LOOP 
 SAL      SPACE  4,15 
**        SAL - SET ACCESS LEVEL DEFAULTS.
* 
*         EXIT   DEFAULTS SET IN THE PARAMETER LIST AND THE K-DISPLAY.
*                IF THE INITIALIZE IS TOTAL, THE DEFAULTS WILL BE 
*                SET TO THE LOWER EQUIPMENT ACCESS LIMIT FROM THE 
*                EST ENTRY. 
*                THE DEFAULTS WILL BE SET FROM THE MST FOR DEADSTART
*                INITIALIZE, AS WELL AS FOR A NON-TOTAL INITIALIZE. 
* 
*         USES   X - 0, 1, 2, 5, 6. 
*                A - 1, 5, 6. 
*                B - 3, 4.
  
  
 SAL      SUBR               ENTRY/EXIT 
          SA1    TOTL 
          SA5    B5+PFGL     READ ACCESS LEVELS FROM LABEL
          SB4    51          SET SHIFT COUNTS 
          SB3    3
          MX0    -3 
          PL     X1,SAL1     IF NOT TOTAL INITIALIZE
          SA1    DSI
          NG     X1,SAL1     IF DEADSTART INITIALIZE
          SA5    PARC+PMEQ
          R=     X1,ESTE
          IX1    X5*X1
          SA5    ESTB+X1+EQAE  READ ACCESS LEVELS FROM EST
          SB4    45          SET SHIFT COUNTS 
          SB3    B0+
 SAL1     LX5    B4          POSITION ACCESS LEVELS 
          BX1    -X0*X5      PROCESS LOWER ACCESS LEVEL 
          SA1    X1+TALV
          MX2    42 
          BX6    X2*X1
          SA6    PARC+PMLA   SET LOWER LIMIT IN PARAMETER LIST
          SA6    LADS+1      SET LOWER LIMIT IN DISPLAY 
          LX5    B3          PROCESS UPPER ACCESS LEVEL 
          BX1    -X0*X5 
          SA1    X1+TALV
          BX6    X2*X1
          SA6    PARC+PMUA   SET UPPER LIMIT IN PARAMETER LIST
          SA6    UADS+1      SET UPPER LIMIT IN DISPLAY 
          EQ     SALX        RETURN 
 PRS      SPACE  4,15 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   EST AND MST TABLE READ INTO BUFFERS. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 5, 6, 7. 
*                B - 7. 
* 
*         CALLS  PRK. 
* 
*         MACROS CLEAR, GETSSM, MESSAGE, SYSTEM.
  
  
 PRS      SUBR               ENTRY/EXIT 
          SA5    JOPR        CHECK JOB ORIGIN 
          MX0    -12
          LX5    -24
          BX5    -X0*X5 
          SB7    X5-SYOT
          NZ     B7,PRS3     IF NOT SYSTEM ORIGIN 
          SX3    KYCT 
          RJ     PRK         PRESET *K* DISPLAY 
          SX7    TFLA        SET FLAW INDEX 
          SA7    FLAI 
          CLEAR  ESTB,BUF-ESTB  CLEAR *ESTB*, *ESTF*, AND *PKL* 
          CLEAR  FLGS,FLGSL,X7     CLEAR FLAGS
          CLEAR  PARC+PMFN,OTBLL,X7 
          SA7    PREQ 
          SA7    CFEB        PREVENT SETTING FLAWS FOR SPECIFIED DEVICE 
          SA1    PRSA        READ EST POINTER WORD
          MX6    1
          BX7    X1 
          SA6    ESTB        SET LOW CORE READ
          SA7    LCRC 
          SYSTEM RSB,R,LCRC 
          SA2    ESTB        SET *COMCRSB* ENTRY CONDITIONS 
          MX3    -12
          SX1    A2          SET ADDRESS TO TRANSFER TO 
          AX2    12 
          BX7    -X3*X2 
          AX2    24          SET ADDRESS TO TRANSFER FROM 
          SA7    PRSB        SAVE LAST EST ORDINAL + 1
          R=     X6,ESTE
          IX3    X7*X6       SET WORD COUNT 
          SX4    B0          SET SUBSYSTEM (= *CMR*)
          MX6    1
          SA6    X1 
          RJ     RSB=        READ EST 
          GETSSID  SSID      GET SUBSYSTEM ID 
          GETSSM SSFL        GET SYSTEM SECURITY MODE 
          SA1    PRSC        READ MMFL WORD 
          MX6    1
          BX7    X1 
          SA6    SCRB 
          SA7    LCRC 
          SYSTEM RSB,R,LCRC 
          SA1    SCRB        SET LINK DEVICE
          MX6    -9 
          LX1    59-35
          BX6    -X6*X1 
          NZ     X6,PRS1     IF LINK DEVICE DEFINED 
          R=     X6,NEEQ
 PRS1     SA6    LINK 
          SX6    BUF         READ MST,S FOR ALL MASS STORAGE
          SA6    BUFI 
          SX6    NOPE        INITIALIZE EST ORDINAL FOR SEARCH
          SA6    TEMP 
 PRS2     SA5    TEMP 
          SX7    X5+B1
          SA7    A5 
          SA1    PRSB        CHECK ORDINAL
          IX6    X5-X1
          R=     X0,ESTE
          IX7    X5*X0
          SA1    ESTB+X7+EQDE  GET EST ENTRY
          ZR     X6,PRSX     IF END OF EST
          PL     X1,PRS2     IF NOT MASS STORAGE
          MX0    -12
          SX6    MSTL 
          SA2    BUFI 
          IX7    X2+X6       INCREMENT BUFFER POINTER 
          LX6    36 
          BX1    -X0*X1 
          SA7    A2 
          LX1    18+3        MST ADDRESS
          BX6    X6+X2
          IX6    X6+X1
          SA6    LCRC 
          BX7    X2 
          MX6    1
          SA7    ESTF+X5     SET MST ADDRESS IN ESTF
          SA6    X2          FLAG LOW CORE READ 
          SYSTEM RSB,R,LCRC  READ MST 
          EQ     PRS2        LOOP FOR NEXT DEVICE 
  
 PRS3     MESSAGE  MESK      * USER ACCESS NOT VALID.*
          ABORT 
  
 PRSA     VFD    24/1,18/ESTP,18/ESTB 
 PRSB     CON    **          LAST MASS STORAGE ORDINAL + 1
 PRSC     VFD    24/1,18/MMFL,18/SCRB 
          TITLE  K DISPLAY KEYBOARD MESSAGES
          SPACE  4
*         K-DISPLAY KEYBOARD ERROR MESSAGES.
  
 ERRF     BSS    1
 ERROR1   DATA   30HUN MUST BE SPECIFIED. 
 ERROR2   DATA   30HNC IS NOT A POWER OF 2. 
 ERROR3   DATA   30HFAMILY MASK NOT EQUAL TO 377. 
 ERROR5   DATA   30HEQ OR DN INCORRECT. 
 ERROR6   DATA   30HINCORRECT ENTRY.
 ERROR7   DATA   30HFM OR PN MUST BE SPECIFIED. 
 ERROR8   DATA   30HNP GREATER THAN 8.
 ERROR9   DATA   30HDUPLICATE PN. 
 ERROR10  DATA   30HNC EXCEEDS 200B.
 ERROR11  DATA   30HCANNOT ALLOCATE DEVICE. 
 ERROR12  DATA   30HNOT AUXILIARY PACK. 
 ERROR13  DATA   30HDUPLICATE DN. 
 ERROR15  DATA   30HDEVICE NOT REMOVABLE. 
 ERROR16  DATA   30HNP NOT ALLOWED. 
 ERROR17  DATA   30HDUPLICATE BITS IN MASK. 
 ERROR18  DATA   30HDEVICE NOT FIRST IN CHAIN.
 ERROR19  DATA   30HEQXXX, INITIALIZE BIT NOT SET.
 ERROR20  DATA   30HDN CANNOT BE ZERO.
 ERROR21  DATA   30HEQXXX, FORMAT PENDING.
 ERROR22  DATA   30HDEFINED DEVICE ALREADY EXISTS.
 ERROR23  DATA   30HEQXXX, NO FULL TRACK ACCESS.
 ERROR24  DATA   30HDEADSTART INITIALIZE REQUIRED.
 ERROR25  DATA   30HFULL INITIALIZE REQUIRED. 
 ERROR26  DATA   30HEQXXX, TRACK LIMIT. 
 ERROR27  DATA   30HUA NOT WITHIN LIMIT.
 ERROR28  DATA   30HLA NOT WITHIN LIMIT.
 ERROR29  DATA   30HLA GREATER THAN UA. 
 ERROR30  DATA   30HUNKNOWN ACCESS LEVEL NAME.
  
*         K-DISPLAY KEYBOARD INFORMATIVE MESSAGES.
  
 REQOP    DATA   30HENTER OPTION. 
 REQEQ    DATA   30HENTER EST ORDINAL.
 REQPM    DATA   30HENTER PARAMETERS. 
 ENOFN    DATA   30HENTER OLD FAMILY NAME.
 ENOPN    DATA   30HENTER OLD PACK NAME.
 ENOUN    DATA   30HENTER OLD USER NAME.
 ENODN    DATA   30HENTER OLD DEVICE NUMBER.
 ENNFN    DATA   30HENTER NEW FAMILY/PACK NAME. 
 ENFLS    DATA   30HENTER FLAWS.
 ENID     DATA   30HENTER IDENTITY OF EQXXX.
 EDRN     DATA   30HEND OF RUN. 
 ENCL     DATA   30HENTER CLEAR OR RERUN. 
  
*         DAYFILE MESSAGES. 
  
 MESA     DATA   C* EQXXX, ACTIVE FILES, CANNOT INITIALIZE.*
 MESB     DATA   C* MSI ABORTED INITIALIZE MAY NOT BE COMPLETE.*
 MESC     DATA   C* NO INITIALIZE REQUESTS SET FOR MSI.*
 MESD     DATA   C* INTERNAL ERROR IN MSI.* 
 MESE     DATA   C* EQXXX, UNABLE TO INITIALIZE IQFT.*
 MESF     DATA   C* IQFT FILE INTERLOCKED.* 
 MESG     DATA   C* NO IQFT FILE FOUND.*
 MESH     DATA   C* UNABLE TO READ IQFT FILE.*
 MESI     DATA   C* EQXXX, INACTIVE QUEUES INITIALIZED.*
 MESJ     DATA   C* LINK DEVICE CANNOT BE ALTERED.* 
 MESK     DATA   C* USER ACCESS NOT VALID.* 
 MESL     DATA   C* MSI HUNG.*
          TITLE  KEYBOARD INPUT PROCESSOR.
 PKI      SPACE  4,10 
**        PKI - PROCESS KEYBOARD INPUT. 
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 0, 1, 2, 4, 5, 6, 7. 
*                B - 2, 3, 4, 5, 7. 
* 
*         CALLS  ARG, CFE, DTY, DXB, RPT, SPT.
  
  
 PKI      SUBR               ENTRY/EXIT 
 PKI1     EQ     KIP         KEYBOARD INPUT PROCESSOR 
  
 PKI2     ZR     B6,PKI3     IF NO PARAMETERS ENTERED 
          KEYMES BLK         BLANK MESSAGE LINE 
          SB4    PAR
          RJ     CFE         CHECK FOR FLAW ENTRY 
          NZ     X4,PKI3     IF ERROR 
          ZR     X2,PKI1     IF FLAW ENTRY
          SA4    PAR
          SA2    ARGP 
          SB4    B6 
          SB5    X2 
          RJ     ARG
          ZR     X1,PKI4     IF NO ARGUMENT ERRORS
 PKI3     ERROR  6           *INCORRECT ENTRY.* 
          EQ     PKI1        LOOP FOR NEW DATA
  
 PKI4     BX6    X6-X6       CLEAR ERROR FLAG 
          SA6    ERRF 
          SB2    TENP        SET INITIAL REGISTERS
          SB4    PARC 
          SA0    DATB 
  
*         PROCESS NAMES.
  
          SB3    NNME        SET NUMBER OF NAMES TO PROCESS 
 PKI5     SA2    B2          GET NAME 
          ZR     X2,PKI7     IF NAME NOT ENTERED
          BX7    X2          SAVE CONVERTED PARAMETER 
          SA1    A0          DISPLAY ENTERED PARAMETER
          SA7    X1 
          SA1    =1L0 
          BX1    X7-X1
          NZ     X1,PKI6     IF NOT *0* 
          BX7    X7-X7
 PKI6     SA7    B4          STORE PARAMETER
 PKI7     SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+B1
          SA0    A0+B1
          NZ     B3,PKI5     IF MORE NAMES TO PROCESS 
  
*         PROCESS OCTAL PARAMETERS. 
  
          SB3    NOCT        SET NUMBER OF OCTAL PARAMETERS 
          SB7    B0 
 PKI8     SA5    B2          GET OCTAL PARAMETER
          ZR     X5,PKI10    IF PARAMETER NOT ENTERED 
          RJ     SPT         SAVE POINTERS
          RJ     DXB         CONVERT PARAMETER
          RJ     RPT         RESTORE POINTERS 
          ZR     X4,PKI9     IF NO ERROR IN CONVERSION
          SX6    B1          SET ERROR FLAG 
          SA6    ERRF 
          EQ     PKI10       INCREMENT POINTERS 
  
 PKI9     SA6    B4          SAVE CONVERTED VALUE 
          SA1    B2          DISPLAY ENTERED PARAMETER
          BX6    X1 
          SA1    A0 
          SA6    X1 
 PKI10    SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+B1
          SA0    A0+B1
          NZ     B3,PKI8     IF MORE OCTAL PARAMETERS TO PROCESS
  
*         CLEAR OUT ENTRY AREA. 
  
          SB3    OTBLL-1     SET PARAMETER AREA LENGTH
          SB2    PARE 
          BX6    X6-X6
 PKI11    SA6    B2+B3
          SB3    B3-B1
          PL     B3,PKI11    IF MORE TO CLEAR 
          RJ     DTY         GET FLAW PROCESSOR 
          AX3    18 
          SX6    X3 
          SA6    DFPR 
  
*         CHECK FOR ERROR CONDITION.
  
          SA1    ERRF        CHECK FOR ERROR IN CONVERSION
          SA2    CNT
          NZ     X1,PKI3     DISPLAY ERROR MESSAGE
          SX7    X2-1 
          SA7    CNT
          ZR     X7,PKIX     IF END OF EXPECTED PARAMETERS
          EQ     PKI1        GO FOR NEXT PARAMETER
 RPT      SPACE  4,10 
**        RPT - RESTORE POINTERS. 
* 
*         ENTRY  SPTA = ENTERED PARAMETER ADDRESS.
*                SPTA+1 = NUMBER OF PARAMETERS TO PROCESS.
*                SPTA+2 = CONVERTED PARAMETER ADDRESS.
* 
*         EXIT   (B2), (B3) AND (B4) RESTORED.
* 
*         USES   X - 1, 2.
*                A - 1, 2.
*                B - 2, 3, 4. 
  
  
 RPT      SUBR               ENTRY/EXIT 
          SA1    SPTA 
          SA2    A1+B1
          SB2    X1 
          SB3    X2 
          SA1    A2+B1
          SB4    X1 
          EQ     RPTX        EXIT 
 SPT      SPACE  4,10 
**        SPT - SAVE POINTERS.
* 
*         ENTRY  (B2) = ENTERED PARAMETER ADDRESS.
*                (B3) = NUMBER OF PARAMETERS LEFT TO PROCESS. 
*                (B4) = CONVERTED PARAMETER ADDRESS.
* 
*         EXIT   (SPTA - SPTA+1) = (B2), (B3) AND (B4). 
* 
*         USES   X - 6, 7.
*                A - 6, 7.
*                B - NONE.
  
  
 SPT      SUBR               ENTRY/EXIT 
          SX6    B2 
          SX7    B3 
          SA6    SPTA 
          SA7    A6+B1
          SX6    B4 
          SA6    A7+B1
          EQ     SPTX        EXIT 
  
  
 SPTA     BSS    1           ADDRESS OF ENTERED PARAMETER 
          BSS    1           NUMBER OF PARAMETERS LEFT TO PROCESS 
          BSS    1           ADDRESS OF CONVERTED PARAMETERS
          TITLE  PROCESS FLAW ENTRIES 
**        CFE - CHECK FOR FLAW ENTRY. 
* 
*         ENTRY  (B4) = ADDRESS OF PARAMETER. 
*                (B6) = PARAMETER COUNT.
* 
*         EXIT   (X2) = 0, IF FLAW ENTRY. 
*                (X4) = 0, IF NO ERROR. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 4, 6, 7. 
*                B - 2, 3, 4, 6.
* 
*         CALLS  COD, FMD, FRD, RPA, SFN. 
  
  
 CFE      SUBR               ENTRY/EXIT 
          SX7    B1          SELECT *SET FLAW* AS DEFAULT 
          SA7    CFEA 
          SA1    B4 
          MX0    18 
          SX3    1R=
          BX4    -X0*X1 
          SX2    B1 
          IX3    X3-X4
          BX4    X4-X4
          NZ     X3,CFEX     IF NOT EQUIVALENCED
          SA3    CFEB 
          ZR     X3,CFEX     IF FLAWS NOT ALLOWED YET 
          SA3    =0LCPF 
          BX6    X0*X1
          BX2    X6-X3
          ZR     X2,CFE2     IF CLEARING PHYSICAL FLAW
          SA3    =0LSPF 
          BX2    X6-X3
          ZR     X2,CFE2.1   IF SETTING PHYSICAL FLAW 
          SA3    =0LSLF 
          BX2    X6-X3
          ZR     X2,CFE1     IF SETTING LOGICAL FLAW
          SA3    =0LCLF 
          BX2    X6-X3
          NZ     X2,CFEX     IF NOT CLEARING LOGICAL FLAW 
  
*         PROCESS *CLF* ENTRY.
  
          SX7    B1+B1       SELECT *CLEAR FLAW* OPTION 
          SA7    CFEA 
  
*         PROCESS *SLF* ENTRY.
  
 CFE1     SX4    B1          PRESET RESPONSE
          SB6    B6-B1
          NE     B6,B1,CFEX  IF INCORRECT ENTRY 
          SB4    B4+B1
          SX1    B0 
          SX2    7777B       LIMIT
          RJ     RPA         RETRIEVE PARAMETER 
          NZ     X4,CFEX     IF ERROR 
          EQ     CFER        STORE ENTRY
  
*         PROCESS *CPF* ENTRY.
  
 CFE2     SX7    B1+B1       SELECT *CLEAR FLAW* OPTION 
          SA7    CFEA 
  
*         PROCESS *SPF* ENTRY.
  
 CFE2.1   SB4    B4+B1
          SB6    B6-B1
          SA1    DFPR 
          ZR     X1,FMD      IF LARGE MEMORY DEVICE 
          SA0    X1          SET PHYSICAL DESCRIPTOR ENTRY ADDRESS
          EQ     FRD         FLAW ROTATING MASS STORAGE DEVICE
  
 CFER     NZ     X4,CFEX     IF ERROR 
          SA1    FLAI 
          SX3    X1-TFLA-PNFE 
          SX4    B1          PRESET ERROR 
          SX7    X1+B1       INCREMENT POINTER
          PL     X3,CFEX     IF LIMIT EXCEEDED
          SA2    CFEA 
          SA7    A1 
          LX2    48 
          BX6    X6+X2
          SA6    X1 
          MX0    -12         FORM MASK FOR LOGICAL ENTRY
          BX1    -X0*X6      MASK OFF 
          BX5    X6          SAVE X6
          RJ     COD         CONVERT TO DISPLAY CODE
          SA1    DASM 
          SA0    X1          SAVE LAST ADDRESS
          SX7    X1+6 
          SA7    A1 
          SA6    X1 
          SA4    DAST        GET DISPLAY ADDRESS
          SX7    X4+6 
          SA1    I           DISPLAY ENTRY
          SA7    A4 
          BX0    X4          SAVE (X4)
          RJ     SFN
          SA6    X4 
          SA1    A1+B1
          RJ     SFN
          SA6    X0+B1
          SB3    A0          LAST ADDRESS OF LOGICAL TRACK
          SB2    LTDS+3 
          SA4    STAR        PRESET STAR
          BX6    X4 
 CFE3     EQ     B2,B3,CFE5  IF END OF LOOP - EXIT
          SA3    B3          MORE ENTRIES 
          SA2    B2 
          IX5    X3-X2
          NZ     X5,CFE4     IF NOT EQUAL GO TO NEXT ENTRY
          SA6    B3+2        WRITE STAR TO BOTH ENTRIES 
          SA6    B2+2 
 CFE4     SB2    B2+6        INCREMENT TO NEXT ENTRY
          EQ     CFE3        LOOP 
  
 CFE5     BX4    X4-X4       CLEAR X4 
          BX2    X2-X2
          EQ     CFEX        RETURN 
  
 CFEA     BSSZ   1           FLAW TYPE INDICATOR
 CFEB     CON    0           *FLAWS ALLOWED* FLAG 
 STAR     DIS    1,    *
  
 LRDS     VFD    24/I,18/R,18/L  FLAW K-DISPLAY CONTROL WORD
  
*         FLAW PROCESSOR TABLE. 
  
 DFPR     CON    0
 RPA      SPACE  4,10 
**        RPA - RETRIEVE PARAMETERS.
* 
*         ENTRY  (B4) = ADDRESS OF PARAMETER. 
*                (X1) = 0, IF NO PARAMETER CHECK REQUIRED.
*                (X1) = RIGHT JUSTIFIED CHARACTER TO CHECK FOR. 
*                (X2) = MAXIMUM VALUE.
* 
*         EXIT   (X4) = 0, IF NO ERROR. 
*                (X6) = PARAMETER.
*                (B4) = ADDRESS OF NEXT PARAMETER.
* 
*         USES   X - 0, 1, 2, 4, 5, 6.
*                A - 1, 5, 6. 
*                B - 4, 7.
* 
*         CALLS  DXB. 
  
  
 RPA      SUBR               ENTRY/EXIT 
          SB7    B0          SET OCTAL BASE 
          SX6    B1 
          LX1    54 
          IX6    X2-X6       ADJUST MAXIMUM COUNT 
          SA5    B4          GET PARAMETER
          SA6    RPAA        SAVE MAXIMUM VALUE 
          ZR     X1,RPA1     IF NO CHARACTER TO CHECK 
          MX0    6
          BX2    X0*X5
          BX4    X2-X1
          NZ     X4,RPAX     IF INCORRECT ENTRY 
          LX5    6
 RPA1     MX0    36          MASK OFF VALUE 
          BX5    X0*X5
          SX6    B4          SAVE PARAMETER ADDRESS 
          SA6    RPAB 
          RJ     DXB         CONVERT TO OCTAL 
          SA1    RPAB        RESTORE PARAMETER ADDRESS
          SB4    X1+B1
          NZ     X4,RPAX     RETURN - IF ERROR
          SA1    RPAA 
          IX4    X1-X6
          NG     X4,RPAX     IF MAXIMUM VALUE EXCEEDED
          BX4    X4-X4
          EQ     RPAX        RETURN 
  
 RPAA     BSSZ   1           HOLD FOR MAXIMUM VALUE 
 RPAB     BSSZ   1           HOLD FOR PARAMETER ADDRESS 
          SPACE  4
**        FLAW ROUTINES.
* 
*         ENTRY  (B4) = PARAMETER ADDRESS.
*                (B6) = PARAMETER COUNT.
* 
*         EXIT   (X4) = 0, IF NO ERROR. 
*                     = 1, IF ERROR.
*                (X6) = LOGICAL TRACK TO FLAW.
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 5, 6.
*                B - ALL. 
* 
*         CALLS  RPA. 
  
 FMD      SPACE  4,10 
**        FMD - FLAW LARGE MEMORY DEVICES.
  
  
 FMD      SX4    B6-B1
          R=     X1,1RA 
          NZ     X4,CFER     IF ERROR 
          SA2    =100000000 
          RJ     RPA         RETRIEVE ADDRESS 
          NZ     X4,CFER     IF ERROR 
          SX1    202B        CONVERT TRACK ADDRESS
          SA4    PARC+PMEQ   EXTRACT XM SHIFT 
          R=     X5,ESTE
          IX5    X4*X5
          SA5    ESTB+X5+EQAE 
          MX0    -2 
          LX5    -30
          BX5    -X0*X5 
          SB7    X5 
          LX1    B7 
          IX6    X6/X1
          NZ     X5,FMD1     IF NOT DEFAULT TRACK SIZE
          SX4    CETK-4000B 
          IX4    X6-X4
          NZ     X4,FMD1     IF NOT CETK
          SX4    B1 
          EQ     CFER 
  
 FMD1     BX4    X4-X4       SET NO ERROR RESPONSE
          EQ     CFER        RETURN 
 FRD      SPACE  4,10 
**        FRD - FLAW ROTATING MASS STORAGE DEVICES. 
  
  
*         GET AND VERIFY THE CYLINDER, TRACK AND SECTOR VALUES GIVEN
*         BY THE USER.  FOR BUFFERED MASS STORAGE DEVICES, THE SECTOR 
*         NUMBER VALUE ENTERED BY THE USER MUST BE CONVERTED TO THE 
*         MAPPING USED BY THE OPERATING SYSTEM. 
  
 FRD      SX4    B6-3 
          NZ     X4,CFER     IF TOO MANY PARAMETERS 
          SX1    1RC
          SA2    A0          GET CYLINDER LIMIT FOR THIS DEVICE 
          MX0    -12
          AX2    48 
          BX2    -X0*X2 
          RJ     RPA         GET CYLINDER SPECIFIED BY USER 
          NZ     X4,CFER     IF INCORRECT CYLINDER VALUE GIVEN
          SA6    FRDA        SAVE CYLINDER NUMBER 
          SX1    1RT
          SA2    A0          GET TRACK LIMIT FOR THIS DEVICE
          MX0    -6 
          AX2    42 
          BX2    -X0*X2 
          RJ     RPA         GET TRACK SPECIFIED BY USER
          NZ     X4,CFER     IF INCORRECT TRACK VALUE GIVEN 
          SA6    FRDB        SAVE TRACK NUMBER
          SX1    1RS
          SA2    A0          GET SECTOR LIMIT FOR THIS DEVICE 
          MX0    -6 
          AX2    36 
          BX2    -X0*X2 
          RJ     RPA         GET SECTOR SPECIFIED BY USER 
          NZ     X4,CFER     IF INCORRECT SECTOR VALUE GIVEN
          SA3    A0 
          MX0    -3 
          LX3    -33         POSITION CONVERSION FACTOR 
          BX2    -X0*X3 
          SB7    X2 
          LX6    B7          CONVERT PHYSICAL TO LOGICAL SECTOR 
  
*         MULTIPLY THE TRACK VALUE BY THE NUMBER OF LOGICAL 
*         SECTORS PER PHYSICAL TRACK. 
  
          MX0    -6          MASK FOR PHYSICAL SECTORS/PHYSICAL TRACK 
          LX3    33-36
          SA1    FRDB        FETCH TRACK VALUE
          BX2    -X0*X3 
          LX2    B7          CONVERT TO LOGICAL SECTORS/PHYSICAL TRACK
          IX1    X2*X1       CONVERT TRACK VALUE TO LOGICAL SECTORS 
          LX3    36-12
          IX6    X6+X1       ACCUMULATE LOGICAL SECTOR COUNT
  
*         MULTIPLY THE CYLINDER VALUE BY THE NUMBER OF LOGICAL
*         SECTORS PER CYLINDER. 
  
          SA1    FRDA        FETCH CYLINDER VALUE 
          MX0    -12
          BX2    -X0*X3      EXTRACT PHYSICAL SECTORS/CYLINDER
          LX2    B7          CONVERT TO LOGICAL SECTORS/CYLINDER
          IX1    X2*X1
          LX3    12 
          IX6    X6+X1       ACCUMULATE LOGICAL SECTOR COUNT
          BX3    -X0*X3 
  
*         DIVIDE THE ACCUMULATED LOGICAL SECTOR COUNT BY THE
*         SUM OF (LOGICAL + GAP) SECTORS PER LOGICAL TRACK. 
  
          PX3    X3 
          PX6    X6 
          NX3    X3 
          FX6    X6/X3       QUOTIENT = LOGICAL TRACK NUMBER
          UX6,B7 X6 
          LX6    B7 
          EQ     CFER        RETURN 
  
  
 FRDA     BSS    1           CYLINDER NUMBER
 FRDB     BSS    1           TRACK NUMBER 
 TDTY     SPACE  4,10 
**        TDTY - TABLE OF DEVICE TYPE PARAMETERS. 
* 
*T, TDTY  1/  PK,11/  MN,1/  TT,11/  SL,18/  FP,6/  AI,12/  CT
* 
*         PK =   PACK TYPE DEVICE FLAG. 
*         MN =   DEVICE MNEMONIC. 
*         TT =   TRACK TYPE, 0 = FULL TRACK, 1 = HALF TRACK.
*         SL =   SINGLE UNIT SECTOR LIMIT.
*         FP =   PHYSICAL DESCRIPTOR TABLE ENTRY. 
*         AI =   *LDAM* ALGORITHM INDEX.
*         CT =   DEFAULT NUMBER OF CATALOG TRACKS.
  
  
          PURGMAC  TBLM 
 TBLM     MACRO  EQ 
 .A       IFNE   CYUN_EQ,0
          VFD    1/1         SET ROTATING MASS STORAGE DEVICE 
 .A       ELSE
          VFD    1/0         SET LARGE MEMORY STORAGE DEVICE
 .A       ENDIF 
          VFD    11/2R_EQ,1/TT_EQ,11/SL_EQ
 .B       IFNE   CYUN_EQ,0
          VFD    18/PHY_EQ   PHYSICAL DESCRIPTOR TABLE ENTRY
 .B       ELSE
          VFD    18/0 
 .B       ENDIF 
          VFD    6/AI_EQ,12/CT_EQ 
          ENDM
  
          LIST   G
 TDTY     TBL    "MSEQ" 
          LIST   -G 
          CON    0           END OF TABLE 
 TPHY     SPACE  4,10 
**        TPHY - PHYSICAL DESCRIPTOR TABLE. 
* 
*T, TPHY  12/CYPN, 6/PTCY, 6/PSPT, 3/CF, 9/UNUSED, 12/PSCY, 12/LSLT 
* 
*         CYPN = CYLINDERS PER PARTITION. 
*         PTCY = PHYSICAL TRACKS PER CYLINDER.
*         PSPT = PHYSICAL SECTORS PER PHYSICAL TRACK. 
*         CF = CONVERSION FACTOR. 
*         PSCY = PHYSICAL SECTORS PER CYLINDER. 
*         LSLT = LOGICAL SECTORS PER LOGICAL TRACK, INCLUDING 
*                GAP SECTORS. 
  
  
          PURGMAC  TBLM 
 TBLM     MACRO  EQ 
          IFNE   CYUN_EQ,0
  
 PHY_EQ    VFD    12/CYPN_EQ
          VFD    6/PTCY_EQ
          VFD    6/PSPT_EQ
          VFD    3/CFS_EQ 
          VFD    9/0         UNUSED 
          VFD    12/PSPT_EQ*PTCY_EQ-SPSC_EQ 
          VFD    12/SL_EQ+GS_EQ 
          ENDIF 
          ENDM
  
          LIST   G
 TPHY     TBL    "MSEQ" 
          LIST   -G 
          TITLE  COMMON DECKS.
          SPACE  4
*         COMMON DECKS. 
  
*CALL     COMCARG 
*CALL     COMCDCP 
*CALL     COMCDXB 
*CALL     COMCMVE 
*CALL     COMCSFN 
*CALL     COMCUPC 
*CALL     COMCCOD 
*CALL     COMCVLC 
  
  
*         COMMON DECKS WHICH MAKE SYSTEM REQUESTS.
  
          QUAL   SYSREQ 
 QUAL$    EQU    1
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCLFM 
*CALL     COMCPFU 
*CALL     COMCQFM 
*CALL     COMCRSB 
*CALL     COMCSYS 
          QUAL   *
  
 CIO=     EQU    /SYSREQ/CIO= 
 CPM=     EQU    /SYSREQ/CPM= 
 LFM=     EQU    /SYSREQ/LFM= 
 PFU      EQU    /SYSREQ/PFU
 QFM      EQU    /SYSREQ/QFM
 MSG=     EQU    /SYSREQ/MSG= 
 RCL=     EQU    /SYSREQ/RCL= 
 RSB=     EQU    /SYSREQ/RSB= 
 WNB=     EQU    /SYSREQ/WNB= 
 SYS=     SPACE  4,15 
**        SYS= - PROCESS SYSTEM REQUEST.
* 
*         ENTRY  (X6) = SYSTEM REQUEST. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 7.
*                B - 2. 
* 
*         CALLS  /SYSREQ/SYS=.
  
  
 SYS=     SUBR               ENTRY/EXIT 
          RJ     /SYSREQ/SYS= 
          SA1    PREQ 
          ZR     X1,SYS=X    IF NO PP REQUEST 
          BX7    X7-X7       CLEAR REQUEST WORD 
          SX6    X1-TPPRL-1  VERIFY REQUEST 
          SA7    A1 
          PL     X6,SYS=X    IF INCORRECT REQUEST 
          SB2    X1+TPPR-1
          JP     B2          EXIT TO REQUEST PROCESSOR
  
  
*         TABLE OF PP REQUESTS. 
  
 TPPR     BSS    0
 +        EQ     CLEAR       CLEAR INITIALIZATION FLAGS 
 +        EQ     RERUN       PROCESS RERUN
 +        EQ     TKL         PROCESS TRACK LIMIT
          BSS    0
 TPPRL    EQU    *-TPPR 
          TITLE  KEYBOARD PROCESSOR.
 KIP      SPACE  4,10 
**        KIP - KEYBOARD PROCESSOR. 
*         *PKI* UNPACKS INPUT PARAMETERS FOR *MSI* FUNCTIONS. 
* 
*         EXIT   TO PKI2 IF NO INCORRECT FUNCTIONS ENCOUNTERED. 
*                TO PKIX IF *GO* ENTERED. 
*                TO PKI1 IF PAGING OCCURED. 
*                TO *CLEAR* OR *RERUN* IF APPROPRIATE COMMAND ENTERED.
*                (B6) = NUMBER OF ARGUMENTS ENTERED.
*                (X6) = 0 IF NO ERRORS IN UNPACKING OF ARGUMENTS. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6, 7.
*                B - 2, 3, 6, 7.
* 
*         CALLS  PGD, UPC.
* 
*         MACROS CONSOLE, MOVE, RECALL. 
  
  
 KIP      BX6    X6-X6       CLEAR PARAMETER AREA 
          SB3    PARAML-1 
 KIP1     SA6    PAR+B3 
          SB3    B3-B1       DECREMENT COUNT
          NZ     B3,KIP1     IF MORE WORDS TO CLEAR 
          SA6    I           CLEAR INPUT BUFFER 
          SA6    A6+B1
          CONSOLE  KDCW 
 KIP2     RECALL
          SA1    I
          ZR     X1,KIP2     IF INPUT NOT READY 
          MX0    6
          BX3    X1*X0       SET ENTRY CONDITIONS FOR *PGD* 
          SX2    PAGA 
          SA5    FLFG 
          ZR     X5,KIP2.1   IF INITIALIZE PROCESSING 
          SX2    PAGB 
 KIP2.1   BX4    X4-X4
          SX1    KDCW 
          RJ     PGD         PAGE DISPLAY 
          ZR     X4,PKI1     IF PAGING OCCURRED 
          MOVE   4,BLK,KBDS1+1
          MOVE   4,BLK,KBDS2+1
          SA1    I
          BX0    X1 
          LX0    18 
          SA3    FADD        FLAW KEYBOARD INPUT ADDRESS
          SA5    FLFG 
          NZ     X5,KIP3     IF FLAW PROCESSING 
          SA5    PAGA 
          LX5    30 
          SB2    X5 
          NE     B2,B1,KIP3  IF CURRENT LEFT SCREEN INDEX IS 2
          SA3    IADD 
 KIP3     SX5    X0-3RGO. 
          NZ     X5,KIP3.1   IF NOT *GO*
          SA1    BLK
 KIP3.1   MOVE   4,I,X3 
          ZR     X5,PKIX     IF *GO* ENTERED
          SA1    CLRM 
          LX0    -18
          BX2    X1-X0
          SA1    RERN 
          AX2    30 
          SX7    B1 
          ZR     X2,KIP4     IF *CLEAR* 
          BX2    X1-X0
          AX2    30 
          ZR     X2,RERUN    IF *RERUN* 
          SA5    CARD        PROCESS COMMAND
          SB7    PAR-1
          RJ     UPC         UNPACK COMMAND 
          SB6    B6-B1       SKIP FIRST ARGUMENT
          EQ     PKI2        GO PROCESS ENTRY 
  
 KIP4     SA7    CLF
          EQ     CLEAR       ENTER CLEAR ROUTINE
  
 CARD     DATA   H*MSI,*     COMMAND IMAGE
 I        BSSZ   8           KEYBOARD INPUT BUFFER
 KDCW     VFD    24/I,18/R,18/O  K DISPLAY CONTROL WORD 
 FADD     VFD    42/0,18/KBDS2+1  DISPLAY ADDRESS FOR FLAWING 
 IADD     VFD    42/0,18/KBDS1+1  DISPLAY ADDRESS FOR INITIALIZING
 BLK      DIS    4, 
 CLRM     DATA   5LCLEAR
 RERN     DATA   5LRERUN
          SPACE  4,10 
  
*         INITIALIZE PAGE TABLE.
  
 PAGA     PAGT   O,MSDS1,KBDS1  LEFT SCREEN PAGE 1
          PAGT   L,MSDS2,KBDS2  LEFT SCREEN PAGE 2
          PAGT
          PAGT   R           RIGHT SCREEN 
          PAGT   *
  
*         FLAW PAGE TABLE.
  
 PAGB     PAGT   L,MSDS2,KBDS2  LEFT SCREEN 
          PAGT
          PAGT   R           RIGHT SCREEN 
          PAGT   *
  
 PGD      HERE               REMOTE BLOCK FROM *COMCDCP*
 CDS      SPACE  4,10 
**        CDC - CLEAR K-DISPLAY ENTRIES.
* 
*         USES   X - 0, 1, 6, 7.
*                A - 1, 6, 7. 
*                B - 2, 3.
  
  
 CDS      SUBR               ENTRY/EXIT 
          SX7    LTDS+1      RESTORE *DAST* 
          SA7    DAST 
          SX7    LTDS+3      RESTORE *DASM* 
          SA7    DASM 
          SA1    BLK
          SX7    1R0-1R 
          SB2    20B
          LX7    -6 
          IX7    X1+X7
          BX6    X1 
          SA1    DATB 
 CDS1     SA7    X1          CLEAR DISPLAY AREA 
          SA1    A1+B1
          SB3    A1-DAST
          NZ     B3,CDS1     IF NOT END OF OPTIONS
          SB3    X1          SAVE ADDRESS OF FLAW DISPLAY 
          BX7    X6 
 CDS2     SA6    B3 
          SA7    A6+B1
          SB2    B2-B1
          SB3    B3+6 
          NZ     B2,CDS2     IF NOT END OF FLAW DISPLAY 
          SB2    20B
          SB3    LTDS+1      BLANK OUT LEFT SCREEN
 CDS3     SA6    B3 
          SA7    A6+B1
          SA7    A7+B1
          SA7    A7+B1
          SB2    B2-B1
          SB3    B3+6        INCREMENT TO NEXT LINE 
          NZ     B2,CDS3     IF NOT LAST LINE 
          EQ     CDSX        RETURN 
          TITLE  K-DISPLAY LINE NUMBERS.
          SPACE  4
          SPACE  4,10 
*         K-DISPLAY FOR THE LEFT SCREEN WHEN INITIALIZING DEVICES.
*         THERE IS NO RIGHT SCREEN. 
  
  
*         EST ORDINALS THAT ARE SITE DEPENDENT. 
  
 LVAL     OCTMIC NOPE        EST ORDINAL MINIMUM VALUE
 UVAL     OCTMIC ESMX-1      EST ORDINAL MAXIMUM VALUE
 FVAL     DECMIC PNFE        FLAW ENTRIES MAXIMUM VALUE 
  
 O        VFD    18/0,18/KDTB,24/0  DISPLAY CONTROL WORD
          KDL 1,T,(MASS STORAGE DEVICE INITIALIZATION ) 
          KDL 54,T,(PAGE 1 OF 2)
          KDL  1,K,(INITIALIZE EQUIPMENT) 
 OPDS     KDL  1,K,(                                              ) 
 INDSA    KDL  1,K,(                                              ) 
 TPDS     KDL 1,H,(INITIALIZE REQUEST                           ) 
          KDL 1,H,(    OPTION                       DESCRIPTION)
 EQDS     KDL 1,K,( EQ = 0         EST ORDINAL OF DEVICE ("LVAL"-"UVAL")
,.) 
 FNDS     KDL 1,K,( FM = 0         FAMILY NAME OR PACK NAME IF TY=X (1-7
, CHAR).) 
 DNDS     KDL 1,K,( DN = 0         DEVICE NUMBER (1-77).) 
 UNDS     KDL 1,K,( UN = 0         PRIVATE AUXILIARY DEVICE USER NAME (1
,-7 CHAR).) 
 TYDS     KDL 1,K,( TY = 0         ACCESS TYPE (F OR X).) 
 LADS     KDL 1,K,( LA = 0         LOWER ACCESS LEVEL (1-7 CHAR).)
 UADS     KDL 1,K,( UA = 0         UPPER ACCESS LEVEL (1-7 CHAR).)
 DMDS     KDL 1,K,( DM = 0         DEVICE MASK (0-377).)
 SMDS     KDL 1,K,( SM = 0         SECONDARY MASK (0-377).) 
 NCDS     KDL 1,K,( NC = 0         CATALOG TRACKS (0-200).) 
 NPDS     KDL 1,K,( NP = 0         NUMBER OF PACKS (1-7).)
 MSDS1    KDL 1,M,(                                             ) 
 KBDS1    KDL 1,I,(                                             ) 
          CON    0           END OF DISPLAY 
          SPACE  4,10 
*         K-DISPLAY FOR THE LEFT SCREEN WHEN FLAWING DEVICES. 
*         THERE IS A RIGHT SCREEN.
  
  
 L        VFD    18/0,18/KDTB,24/0  DISPLAY CONTROL WORD
 LNDS     KDL 1,T,(CURRENT FLAW ENTRIES ) 
          KDL 54,T,(PAGE 2 OF 2)
 INDS     KDL 1,K,( EQ = 0          EST ORDINAL OF DEVICE.           )
          KDL 1,H,( NUM  VALUES ENTERED   TRT OCTAL VALUES  * = DUPLICAT
,E) 
 LTDS     KDL 1,K,(   1                                              )
          KDL 1,K,(   2                                              )
          KDL 1,K,(   3                                              )
          KDL 1,K,(   4                                              )
          KDL 1,K,(   5                                              )
          KDL 1,K,(   6                                              )
          KDL 1,K,(   7                                              )
          KDL 1,K,(   8                                              )
          KDL 1,K,(   9                                              )
          KDL 1,K,(  10                                              )
          KDL 1,K,(  11                                              )
          KDL 1,K,(  12                                              )
          KDL 1,K,(  13                                              )
          KDL 1,K,(  14                                              )
          KDL 1,K,(                                                  )
 MSDS2    KDL 1,M,(                                                  )
 KBDS2    KDL 1,I,(                                                  )
          CON    0           END OF DISPLAY 
          SPACE  4,10 
*         K-DISPLAY FOR THE RIGHT SCREEN WHEN FLAWING DEVICES.
*         THERE IS A LEFT SCREEN. 
  
  
 R        VFD    18/0,18/KDTB,24/0  DISPLAY CONTROL WORD
          KDL 1,T,(MASS STORAGE DEVICE FLAWING) 
          KDL 1,H,(SLF, CLF, SPF AND CPF ENTRIES) 
 RTDS     KDL 1,K,(                                  )
          KDL 1,K,(    SLF = NNNN      SET LOGICAL TRACK FLAW.) 
          KDL 1,K,(    CLF = NNNN      CLEAR LOGICAL TRACK FLAW.) 
          KDL 1,K,(    SPF = XX        SET PHYSICAL TRACK FLAW.)
          KDL 1,H,(    CPF = XX        CLEAR PHYSICAL TRACK FLAW.)
          KDL 1,K,(    WHERE) 
          KDL 1,K,(        NNNN = VALID LOGICAL TRACK NUMBER.)
          KDL 1,K,(        XX   = C000,T00,S00  (CYLINDER,TRACK,SECTOR.)
          KDL 1,H,(             = A0000000  (ADDR/10B, FOR DE/DP ONLY.))
          KDL 1,K,(    NUMERIC VALUES ARE CONSIDERED OCTAL UNLESS THE)
          KDL 1,K,(    DIGITS 8 OR 9 APPEAR IN THE NUMBER, OR A *D* IS) 
          KDL 1,H,(    APPENDED TO THE NUMBER.) 
          KDL 1,K,(SEE LEFT SCREEN FOR CURRENT ENTRIES,)
          KDL 1,H,(UP TO "FVAL" ENTRIES ALLOWED.) 
          CON    0           END OF DISPLAY 
  
*         Y - COORDINATE TABLE. 
  
 KYCT     KDL    *
 PRK      HERE               ASSEMBLE REMOTE BLOCK FROM COMCDCP HERE
 KDTA     DATA   C*FLAW.*    K-DISPLAY TITLE
 KDTB     DATA   C*INITIALIZE.*  K-DISPLAY TITLE
          TITLE  BUFFERS AND FLAGS
          SPACE  4
**        TABLES AND BUFFERS. 
  
  
          USE    BUFFERS
 UTL=     BSS    0           SYSTEM UTILITY SPECIAL ENTRY POINT 
 SSJ=     BSSZ   SSJL 
 ESTB     EQU    *           EST TABLE
 ESTF     EQU    ESTB+ESMX*ESTE  EST MST LINK TABLE 
 PKL      EQU    ESTF+ESMX   PACK LINK TABLE
 BUF      EQU    PKL+PKLL    MST BUFFER 
 CATB     EQU    BUF+ESMX*MSTL  BUFFER FOR CATALOG READS
 SCRB     EQU    CATB+CATBL  SCRATCH BUFFER 
 RFL=     EQU    SCRB+SCRBL 
          SPACE  4
          END 
