MREC
          IDENT  MREC,ORIG
          ABS 
          SST    RECM 
          ENTRY  MREC 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          ENTRY  UTL= 
          SYSCOM B1 
*COMMENT  MREC - MACHINE RECOVERY UTILITY.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  MREC - MACHINE RECOVERY UTILITY. 
          SPACE  4
***       MREC - MACHINE RECOVERY UTILITY.
*         R. J. PRIEVE.      75/02/14.
*         J. M. MAREK.       84/09/25.
          SPACE  4
***       MREC CLEARS INTERLOCKS AND RELEASES MASS STORAGE
*         SPACE OF MACHINES THAT HAVE GONE DOWN IN A MULTI- 
*         MAINFRAME ENVIRONMENT.  THIS SPACE MAY THEN BE
*         UTILIZED BY REMAINING MACHINES SHARING THE DEVICE(S). 
* 
*         *MREC* INTERFACES WITH OPERATOR VIA THE K-DISPLAY.
*         IT WILL DISPLAY THE STATUS OF ALL DEVICES THIS MACHINE
*         IS SHARING AND THE MID(S) OF OTHER MACHINES WITH
*         WHICH IT IS SHARING THEM.  IT IS POSSIBLE TO BRING
*         UP THIS DISPLAY TO OBSERVE THE STATUS OF SHARED DEVICES 
*         AND NOT DO ANY PROCESSING.  TO DO THIS ENTER *MREC.* AND
*         BRING UP THE K-DISPLAY.  TYPE *STOP* TO END PROGRAM IF NO 
*         RECOVERY IS DESIRED.  IF RECOVERY OF A DOWNED MACHINE IS
*         DESIRED, ENTER PARAMETERS AND TYPE *GO*.
          SPACE  4
***       COMMAND.
* 
*         MREC. 
*         MREC(ID=MID,EQ=E1,E2,...,EN)
* 
*         ID - MACHINE ID OF DOWNED MACHINE TO PROCESS. 
*              THIS PARAMETER MUST BE ENTERED.
* 
*         EQ - EST ORDINALS OF DEVICES TO PROCESS.  IF *EQ=ALL* 
*              IS ENTERED, ALL DEVICES SHARED BETWEEN THIS MACHINE
*              AND DOWNED MACHINE WILL BE PROCESSED.  DEFAULT = *ALL*.
* 
*         OP=R AND OP=I ARE PARAMETERS WHICH CAN ONLY BE
*              ENTERED VIA THE K-DISPLAY, AND THEN ONLY IF A UNIT 
*              OR CONTROLLER RESERVE SITUATION OCCURS.
*                *OP=R* WILL DIRECT *1MR* TO RELEASE ALL UNIT 
*              RESERVATIONS (844-N) FOR DEVICE BEING RECOVERED. 
*              IS IT RECOMMENDED THAT MACHINES ACCESSING THE
*              DEVICE FROM THE OPPOSITE SIDE OF THE CONTROLLER THAN 
*              THIS MACHINE BE IDLED BEFORE ENTERING THIS PARAMETER.
*                *OP=I* WILL DIRECT *1MR* TO IGNORE THE DEVICE. 
*              THE MRT AND DAT WILL STILL BE PROCESSED, BUT NO
*              ATTEMPT WILL BE MADE TO CLEAN UP SYSTEM SECTORS
*              OF DIRECT ACCESS FILES ON THE DEVICE.
*              SEE THE DISCUSSION FOLLOWING *EQXXX, UNIT RESERVED.* 
*              ERROR MESSAGE FOR ADDITIONAL INFORMATION.
* 
* 
*         IF MREC. IS ENTERED FROM THE CONSOLE, PARAMETERS AND
*         COMMANDS MAY BE ENTERED VIA THE K-DISPLAY.
* 
*         K-DISPLAY COMMANDS. 
* 
*         *GO* - INITIATE PROCESSING OF MACHINE AND DEVICES SPECIFIED.
* 
*         *RERUN* - RE-INITIALIZE THE K-DISPLAY AND RERUN 
*                   THE PROGRAM.  PARAMETERS MUST BE REENTERED. 
* 
*         *STOP* - TERMINATE THE PROGRAM. 
* 
*         *+* - PAGE THE LEFT DISPLAY FORWARD OR FROM THE LAST PAGE 
*               TO THE FIRST ONE. 
* 
*         *-* - PAGE THE LEFT DISPLAY BACK TO THE FIRST PAGE. 
* 
*         *(* - PAGE THE RIGHT DISPLAY FORWARD. 
* 
*         *)* - PAGE THE RIGHT DISPLAY BACKWARD.
* 
*         IF PARAMETERS ARE SPECIFIED ON THE COMMAND, 
*         THE PROGRAM WILL AUTOMATICALLY *GO* IF ALL PARAMETERS 
*         ARE IN CORRECT FORMAT AND WILL *STOP* UPON SUCCESSFUL 
*         COMPLETION.  IF AN ERROR OCCURS, THE ERROR MESSAGE WILL 
*         APPEAR ON THE K-DISPLAY AND IT WILL THEN BE THE OPERATOR-S
*         RESPONSIBILITY TO REENTER PARAMETERS CORRECTLY AND TYPE 
*         *GO* AND *STOP*.
* 
* 
* 
*         TERMINOLOGY.
* 
*         *MID* - MACHINE ID. 
* 
*         *THIS MACHINE* - MACHINE WHICH *MREC* IS BEING RUN ON.
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         * NO SHARED DEVICES FOR THIS MACHINE.* - THIS 
*         MACHINE IS NOT SHARING ANY DEVICES AND THEREFORE
*         COULD NOT ACCESS ANY DEVICES FOR A DOWNED MACHINE.
* 
*         * INCORRECT ORIGIN TYPE.* - MUST BE SYSTEM ORIGIN 
*         TO RUN THIS PROGRAM.
* 
*         * MREC ABNORMAL TERMINATION.* - ERROR CONDITION OCCURRED WHICH
*         CAUSED *EREXIT* PROCESSING TO OCCUR.
* 
*         * PROCESSING COMPLETE.* - THIS MESSAGE IS INFORMATIVE 
*         AND ALSO GOES TO THE K-DISPLAY. 
          SPACE  4
***       OPERATOR ERROR MESSAGES. (K-DISPLAY ONLY) 
* 
*         *INCORRECT ENTRY.* - PARAMETER ENTERED IS INCORRECT.
*         REENTER CORRETLY. 
* 
*         *INCORRECT FORMAT FOR MID.* - MACHINE ID ENTERED
*         WAS NOT 2 CHARACHTERS OR WAS NOT ALPHANUMERIC.
*         CORRECT AND REENTER.
* 
*         *INCORRECT FORMAT FOR EQ ENTRY.* - ERROR IN ENTERING
*         OF *EQ* PARAMETER.  CORRECT AND REENTER.
* 
*         *MID SPECIFIED NOT DOWN.* - MACHINE ID WHICH WAS
*         SPECIFIED WAS NOT DETERMINED TO BE DOWN.  REENTER 
*         CORRECTLY OR TYPE *STOP*. 
* 
*         *MID SPECIFIED NOT FOUND.* - MACHINE IS WHICH WAS 
*         SPECIFIED IS NOT DEFINED IN THE COMPLEX.  REENTER 
*         CORRECTLY OR TYPE *STOP*. 
* 
*         *MID NOT SPECIFIED.* - MID OF MACHINE TO PROCESS MUST 
*         BE ENTERED.  THEN TYPE *GO*.
* 
*         * LINK DEVICE READ ERROR.* - UNRECOVERABLE ERROR OCCURRED 
*         WHEN ATTEMPTING TO READ LINK DEVICE.  ONLY ENTRIES
*         ACCEPTED AFTER THIS ERROR ARE *STOP* OR *RERUN*.
*         (MESSAGE ALSO GOES TO DAYFILE.) 
* 
*         * LINK DEVICE WRITE ERROR.* - UNRECOVERABLE ERROR OCCURRED
*         WHEN ATTEMPTING TO WRITE LINK DEVICE.  ONLY ENTRIES 
*         ACCEPTED AFTER THIS ERROR ARE *STOP* OR *RERUN*.
*         (MESSAGE ALSO GOES TO DAYFILE.) 
* 
*         * EQXXX, CHXX, CONTROLLER RESERVED.*
*         CONTROLLER RESERVES MAY BE CLEARED BY HITTING THE 
*         DEADSTART BUTTON ON THE DOWNED MACHINE.  ONCE THE 
*         CORRECTIVE ACTION HAS BEEN TAKEN, TYPE *GO* TO RESUME 
*         PROCESSING. 
* 
*         * EQXXX, UNXX, UNIT RESERVED.*
*         UNIT RESERVES MAY BE CLEARED ON 885 UNITS BY HITTING
*         THE DEADSTART BUTTON ON THE DOWNED MACHINE. 
*         UNIT RESERVES MAY BE CLEARED ON 844 AND 841 DEVICES BY
*         TOGGLING THE DEVICE OFF LINE AND BACK ON LINE VIA A SWITCH
*         IN BACK OF THE DRIVE.  IF THIS IS IMPOSSIBLE THE *OP=R* 
*         OPTION MAY BE SELECTED FOR 844 DEVICES.  THIS OPTION
*         MUST BE USED WITH DISCRETION SINCE IT AFFECTS THE 
*         OPERATION OF ALL DRIVES CONNECTED TO THE CONTROLLERS
*         ACCESSING THE DRIVE WITH THE UNIT RESERVED.  SPECIFICALLY 
*         THE USE OF *OP=R* MAY CAUSE UNRECOVERABLE DISK ERRORS 
*         ON ANY SUCH DRIVE.
* 
*         ONCE THE CORRECT ACTION HAS BEEN TAKEN, TYPE *GO* TO
*         RESUME PROCESSING.  IF THE RESERVE IS STILL NOT CLEARED,
*         THE OPERATOR WILL AGAIN BE NOTIFIED, IN WHICH CASE HE CAN 
*         REPEAT THE PROCEDURE TO CLEAR THE RESERVE.
* 
*         *INCORRECT OPTION.* - INCORRECT OPTION ENTERED ON THE 
*         *OP* PARAMETER. 
* 
*         *INCORRECT EQUIPMENT.* - *OP=R* MAY ONLY BE ENTERED FOR 
*         844-N DEVICES.
          SPACE  4,20 
***       K-DISPLAY FORMAT. 
* 
*               1         2         3         4         5         6 
*      1234567890123456789012345678901234567890123456789012345678901234 
*      MACHINE RECOVERY UTILITY                           PAGE 1  OF 99 
* 
*       EQ   TYPE   UN   DN    FM/PN          MIDS SHARING DEVICE 
*      ---   ----   --   --   -------   ------------------------------- 
*        6   DJ      0   40   PACK001     11   22*  33   44   55   66 
*        7   DJ-4    1   41   PACK002     22*  33 
*      111   DQ     40   40   FAMILY1     11   22*
* 
* 
*      ID OF DOWNED MACHINE = XX
*      EQ(S) TO RECOVER = ALL 
* 
*      MESSAGE LINE 
*      KEYBOARD INPUT LINE
          TITLE  COMMON DECKS, MACROS, AND MICROS.
  
  
*CALL     COMCMAC 
*CALL     COMCDCM 
          QUAL   MMF
*CALL     COMSMMF 
          QUAL   *
 MMPF     EQU    /MMF/MMPF   DEFINE TAG FOR *COMSMRT* 
 MXMF     EQU    /MMF/MXMF
          QUAL   MRT
*CALL     COMSMRT 
          QUAL   *
*CALL     COMSPRD 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          SPACE  4
***       MWORDS - MOVE N WORDS.
* 
*         MWORDS  FROM,TO,COUNT 
* 
*         FROM   ADDRESS TO GET DATA FROM.
*         TO     ADDRESS TO MOVE DATA TO. 
*         COUNT  NUMBER OF WORDS TO MOVE. (IF NOT SPECIFIED,
*                DEFAULT = 3.)
  
  
          PURGMAC  MWORDS 
  
 MWORDS  MACRO  F,T,C 
  
          SB2    F
          SB3    T
          IFC    EQ,$C$$
          SB4    3
          ELSE   1
          SB4    C
          RJ     MWD
          ENDM
          SPACE  4
***       BITCON - SET BIT CONSTANT.
* 
*         BITCON P
* 
*         WHERE P = (P1, P2, ..., PN) 
*         WITH P1 - PN = BIT NUMBER TO SET IN WORD. 
  
  
          PURGMAC  BITCON 
  
 BITCON   MACRO  P
  
          LOCAL  A,B
 A        MICRO  1,,
          IRP    P
 B        DECMIC P
 A        MICRO  1,, "A"+1S"B"
          IRP 
          CON    "A"
          ENDM
 MICROS   SPACE  4,10 
**        MICROS. 
  
  
 30BLANKS MICRO  1,30,$                              $
 40BLANKS MICRO  1,40,$"30BLANKS"          $
 50BLANKS MICRO  1,50,$"40BLANKS"          $
 60BLANKS MICRO  1,60,$"50BLANKS"          $
          TITLE  CONSTANTS, EQUIVALENCES, AND TEMPORARY STORAGE.
  
          ORG    106B 
 ORIG     BSS    0
 SSJ=     VFD    12/0,24/-0,12/MRCS,12/IRSI 
          BSSZ   SSJL-1 
  
  
*         ASSEMBLY CONSTANTS. 
  
  
 MSTBL    EQU    MSTXL       LENGTH OF MST BUFFER 
 PARML    EQU    62B         LENGTH OF PARAMETER AREA 
 PAGLN    EQU    12          NUMBER OF K-DISPLAY EQUIPMENT ENTRIES
 LLEN     EQU    7           NUMBER OF WORDS IN K-DISPLAY LINE
 UTL=     EQU    0           PERMIT ACCESS TO A SUSPECT DEVICE
  
  
*         LOW CORE READ STATUS WORDS. 
  
  
 RESP     VFD    12/0,12/1,18/ESTP,18/ESTF  EST POINTER 
 RMMF     VFD    12/0,12/1,18/MMFL,18/MMFP  *MMFL* WORD 
 RMST     VFD    12/0,12/MSTBL,18/0,18/MSTB  MST
 RDIT     VFD    12/0,12//MMF/MMPF,18/0,18/SCRB  DIT
  
  
*         *1MR* CONTROL.
  
  
 REQW     BSS    1           REQUEST WORD 
 RDIW     VFD    18/3R1MR,6/0,18//MRT/RDI,18/TSDV 
 PMTW     VFD    18/3R1MR,6/0,18//MRT/PMT,18/TRDV 
 PRBW     VFD    18/3R1MR,6/0,18//MRT/PRB,18/TRDV 
 UMTW     VFD    18/3R1MR,6/0,18//MRT/UMT,18/0
  
  
*         FLAGS AND TEMPORARY STORAGE.
* 
*         THE FOLLOWING WORDS ARE ZEROED OUT WHEN THE PROGRAM 
*         IS INITIALIZED AND IN THE EVENT OF *RERUN*. 
  
  
 CLER     EQU    *           FIRST WORD TO ZERO 
 AUTO     BSS    1           AUTOMATIC *GO*, *STOP* FLAG
 CVEM     BSS    1           CURRENT VALID ENTRY MASK 
 ESTF     BSS    1           EST POINTER
 LCSW     BSS    1           LOW CORE READ STATUS WORD
 MIDP     BSS    1           MACHINE ID OF DOWNED MACHINE 
 NSDV     BSS    1           NUMBER OF SHARED DEVICES (THIS MACHINE)
 PTPR     BSS    1           POINTER INTO PARAMETER TABLE 
 SORT     BSS    1           TABLE SORT FLAG (SEE ROUTINE *MRD*)
 CLERL    EQU    *           END OF WORDS TO ZERO 
  
 DBFA     VFD    30/SDD1,30/SDD2  DOUBLE BUFFERS FOR THE *K* DISPLAY
 FNDV     VFD    12/0,48/0   12/PAGE-1,24/CURRENT DEVICE,24/NEXT DEVICE 
 MMFP     BSS    1           *MMFL* WORD FOR THIS MACHINE 
 NKDP     BSS    1           NUMBER OF *K* DISPLAY PAGES
 NPAR     BSS    1           NUMBER OF PARAMETERS ON COMMAND
          SPACE  4
  
          ERRNG  /MRT/COM-*  OVERFLOW INTO COMMON STORAGE 
          EJECT 
  
  
*         THE FOLLOWING LOCATIONS ARE READ AND WRITTEN BY 
*         *1MR*. DO NOT ADD OR DELETE ANY LOCATIONS WITHOUT ALSO
*         CHANGING *COMSMRT*. 
* 
*         THESE LOCATIONS ARE ALSO ZEROED OUT AT INITIALIZATION 
*         AND IN EVENT OF *RERUN*.
  
  
          ORG    /MRT/COM 
  
 COM      BSS    0           BEGINNING OF COMMON STORAGE
 MASK     BSS    1           MACHINE INDEX OF DOWNED MACHINE
 RCLW     BSS    1           *1MR* RECALL CONTROL 
 ERRW     BSS    1           ERROR RETURN WORD (BYTE 4) 
          SPACE  4
**        TMID - TABLE OF MACHINE STATE ENTRIES.
* 
*T,       12/  MID,1/T,1/L,1/,9/  EQ,18/  0,18/  STA
* 
*         MID    MACHINE ID.
*         T      SET IF MACHINE HAS INDEPENDENT SHARED DEVICES. 
*         L      LOW SPEED PORT LINK ON THIS MACHINE. 
*         EQ     EST ORDINAL OF LINK DEVICE.
*         STA    STATE OF THIS MACHINE AS DEFINED IN *COMSMMF*. 
* 
*         NOTE - EQ AND STA = 0, IF NOT EM MMF. 
  
  
 TMID     BSS    0
          LOC    0
          BSSZ   /MMF/MXMF   EXTENDED MEMORY MMF MAINFRAMES 
 TMIDI    BSSZ   /MMF/MMPF   START OF MAINFRAMES WITH ISHARE DEVICES
 TMIDL    EQU    *           MAXIMUM NUMBER OF MAINFRAMES 
          LOC    *O 
  
  
 COML     EQU    *-COM       END OF COMMON STORAGE
  
          ERRNZ  /MRT/COML-COML  COMMON STORAGE OUT OF SYNC 
          TITLE  TABLES 
 TSDV     SPACE  4,10 
**        TSDV - TABLE OF SHARED DEVICES. (THIS MACHINE)
* 
*T, TSDV  12/  MASKS,24/,12/  TY,12/  EQ
*T,SRMS   18/ 0,18/ *TSMI* POINTER,12/ 1,12/ EQ 
* 
*         EQ     EST ORDINAL OF SHARED DEVICE.
*         MASKS  MACHINE MASKS OF OTHER MACHINES SHARING THE
*                DEVICE.  RETURNED BY 1MR FUNCTION *RDI*. 
  
  
 TSDV     BSS    0
          BSS    MSMX+1 
 TRDV     SPACE  4,10 
**        TRDV - TABLE OF DEVICES TO RECOVER. 
* 
*T,       12/ RC,24/,12/ TY,12/ EQ
* 
*         RC     RETURN CODE IF UNIT OR CONTROLLER RESERVED.  SEE 
*                COMSMRT FOR CODES.  THIS DEPENDS ON OPERATOR ACTION. 
*         EQ     EST ORDINAL OF DEVICE TO RECOVER.
*         TY     TYPE OF SHARED DEVICE. 
*                1 = ISHARE DEVICE. 
*                0 = EXTENDED MEMORY MMF DEVICE.
  
  
 TRDV     BSS    MSMX+1 
 TSEQ     SPACE  4,10 
**        TSEQ - TABLE OF SHARED EQUIPMENT TYPES. 
* 
*T,       24/ DEVICE TYPE,18/ 0,12/ UNIT NUMBER, 6/ 0 
* 
*         THE DEVICE TYPE AND UNIT NUMBER ARE IN DISPLAY CODE,
*         FORMATTED AS THEY WILL APPEAR IN THE DISPLAY. 
  
  
 TSEQ     BSS    MSMX+1 
 TSFM     SPACE  4,10 
**        TSFM - TABLE OF SHARED FAMILY NAMES.
* 
*T        12/ DEVICE NO.,6/ 0,42/ FAMILY NAME 
* 
*         THE DEVICE NUMBER AND FAMILY NAME ARE IN DISPLAY CODE, BUT
*         MUST BE REFORMATTED BEFORE THEY ARE PUT INTO THE DISPLAY. 
  
  
 TSFM     BSS    MSMX+1 
 TSMI     SPACE  4,10 
**        TSMI - TABLE OF SHARED MAINFRAME IDS. 
* 
*T        12/ MID1,12/ MID2,12/ MID3,12/ MID4,12/ MID5
* 
*         THE MIDS ARE FOR ISHARE DEVICES.  A POINTER IN *TSDV* POINTS
*         TO THE FIRST WORD OF THAT DEVICES MIDS.  THE LIST OF MIDS 
*         ENDS WITH A ZERO BYTE OR WITH *MMPF*-1 MIDS.
  
 .1       SET    MMPF-1+4 
 SMLX     EQU    .1/5        MAXIMUM WORDS PER MID LIST 
 TSMI     BSS    SMLX*MSMX+1
 PAMT     SPACE  4,10 
**        PAMT - PARAMETER TABLE. 
* 
*T        12/PARM,24/0,6/VOM,18/PROC
* 
*         PARM   PARAMETER KEYWORD. 
*         VOM    VALID OPTION MASK. 
*         PROC   PROCESSOR ADDRESS FOR PARAMETER. 
  
  
 PAMT     VFD    12/2LID,24/0,6/IDPR,18/IDP  *ID* 
          VFD    12/2LEQ,24/0,6/EQPR,18/EQP  *EQ* 
          VFD    12/2LOP,24/0,6/OPPR,18/OPP  *OP* 
          CON    0          END OF TABLE
 KDCT     SPACE  4,10 
**        KDCT - K-DISPLAY COMMAND TABLE. 
* 
*T,       36/COMM,6/VOM,18/PROC 
* 
*         COMM   COMMAND. 
*         VOM    VALID OPTION MASK. 
*         PROC   PROCESSOR ADDRESS FOR COMMAND. 
  
  
 KDCT     VFD    36/2LGO,6/GOCM,18/GO       *GO*
          VFD    36/5LRERUN,6/RECM,18/REP   *RERUN* 
          VFD    36/4LSTOP,6/STCM,18/STOP   *STOP*
          CON    0          END OF TABLE
 TVPC     SPACE  4,5
**        TVPC - VALID PARAMETER AND COMMAND TABLE. 
  
  
 TVPC     EQU    *
          LOC    0
 IDPR     BSS    1           *ID* PARAMETER 
 EQPR     BSS    1           *EQ* PARAMETER 
 OPPR     BSS    1           *OP* PARAMETER 
 GOCM     BSS    1           *GO* COMMAND 
 RECM     BSS    1           *RERUN* COMMAND
 STCM     BSS    1           *STOP* COMMAND 
          LOC    *O 
          ORG    TVPC 
          SPACE  4
**        VALID ENTRY MASKS.
  
  
 NORP     BITCON (IDPR,EQPR,GOCM,RECM,STCM)  NORMAL PROCESSING
 ERRP     BITCON (RECM,STCM) PROCESSING AFTER LINK DEVICE ERROR 
 RSVP     BITCON (OPPR,GOCM,RECM,STCM)  PROCESSING AFTER RESERVE
          TITLE  MAIN ROUTINE.
  
*         MAIN ROUTINE. 
  
  
 MREC     RJ     PRS         PRESET 
 RERUN    RJ     IBF         INITIALIZE BUFFERS 
          RJ     SSD         SEARCH FOR SHARED DEVICES
  
          SA1    NSDV        CHECK NUMBER OF SHARED DEVICES 
          NZ     X1,MRE1     IF SHARED DEVICES
          MESSAGE (=C* NO SHARED DEVICES FOR THIS MACHINE.*)
          EQ     ABT1 
  
 MRE1     BX6    X6-X6       TERMINATE TABLE
          SA6    TSDV+X1
          SA6    TRDV+X1
  
*         RETRIEVE ADDITIONAL DISPLAY INFORMATION FROM LINK DEVICE IF 
*         THIS MACHINE RUNNING EXTENDED MEMORY MMF. 
  
          SA1    MMFP 
          MX0    -9 
          AX1    36 
          BX1    -X0*X1 
          ZR     X1,MRE2     IF THIS MF NOT RUNNING EXTENDED MEMORY MMF 
          SA1    RDIW        SET FUNCTION *RDI* 
          RJ     IFN
  
*         GENERATE K-DISPLAY FOR SHARED DEVICES.
  
 MRE2     RJ     DSD         DISPLAY SHARED DEVICES 
          EQ     PPA         PROCESS PARAMETERS 
  
*         DETERMINE IF MACHINE SPECIFIED IS DOWN. 
  
 GO       SA1    MIDP 
          NZ     X1,MRE3     IF MID SPECIFIED 
          MWORDS ERR7,MSDS+1 *MID NOT SPECIFIED.* 
          EQ     PPA         PROCESS PARAMETERS 
  
 MRE3     BX0    X1 
          LX0    48 
          SA3    MMFP 
          MX6    12 
          BX3    X6*X3
          BX6    X3-X0
          SB6    B0 
          ZR     X6,MRE4     IF SPECIFIED MACHINE IS THIS MF
          RJ     DWN
          NG     B6,MRE5     IF MACHINE SPECIFIED IS DOWN 
 MRE4     MWORDS ERR4,MSDS+1 *MID SPECIFIED NOT DOWN.*
          ZR     B6,PPA      IF MACHINE FOUND BUT NOT DOWN
          MWORDS ERR5,MSDS+1 *MID SPECIFIED NOT FOUND.* 
          EQ     PPA         PROCESS PARAMETERS 
  
  
*         PROCESS RESERVES, BAT-S, DAT-S, FAT-S, AND MRT-S. 
  
 MRE5     BX6    X1          SET *MMFL* WORD FOR DOWNED MACHINE 
          SA6    MASK 
          MESSAGE (=C* *),2,R  CLEAR *REQUEST K DISPLAY*
          MESSAGE (=C* *),1,R 
          RJ     MRD         CALL *PRB* AND *PMT* FUNCTIONS 
          MESSAGE MES1       * PROCESSING COMPLETE.*
          MWORDS MES1,MSDS+1
          SA1    AUTO 
          NZ     X1,STOP     IF AUTOMATIC *STOP*
          EQ     PPA         REQUEST INFORMATION FROM K-DISPLAY 
          SPACE  4
**        TERMINATION PROCESSOR.
  
  
 ABT      SA1    B0          CHECK TYPE OF ERROR
          MX0    -6 
          LX1    12 
          BX2    -X0*X1 
          SX3    X2-ODET
          ZR     X3,ABT1     IF OPERATOR DROP 
          MESSAGE (=C* MREC ABNORMAL TERMINATION.*) 
 ABT1     ABORT 
  
 STOP     ENDRUN
          TITLE  COMMAND AND PARAMETER PROCESSORS.
 EQP      SPACE  4
**        EQP - PROCESS *EQ* PARAMETER. 
* 
*         EXIT   TO *PPTA* IF PROCESS NEXT PARAMETER. 
*                TO *PPA* IF ERROR IN EQUIPMENT FORMAT. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 6, 7.
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  DXB, GPR.
* 
*         MACROS MWORDS.
  
  
*         PROCESS FIRST ARGUMENT. 
  
 EQP      SB6    B0 
          SB7    B0          SET OCTAL BASE 
          SA3    ESTF        GET LAST MASS STORAGE ORDINAL + 1
          MX4    -12
          AX3    12 
          BX6    -X4*X3 
          SA6    EQPA 
          RJ     GPR         GET NEXT PARAMETER TABLE ENTRY 
          ZR     X2,EQP4     ERROR IF TERMINATOR
          NZ     B2,EQP4     ERROR IF SEPARATOR 
          MX0    36 
          SA3    =3LALL      CHECK IF *ALL* ENTERED 
          BX4    X3-X2
          ZR     X4,EQP5     IF *ALL* 
          EQ     EQP2        PROCESS FIRST ARGUMENT 
  
*         PROCESS REMAINDER OF ARGUMENTS. 
  
 EQP1     RJ     GPR         GET NEXT PARAMETER TABLE ENTRY 
          ZR     X2,EQP6     IF TERMINATOR
          NZ     B2,EQP6     IF SEPARATOR 
 EQP2     BX5    X2          CONVERT TO BINARY
          LX2    18 
          SA0    X2+
          RJ     DXB
          NZ     X4,EQP4     IF CONVERSION ERROR
          SA3    EQPA        GET LAST MASS STORAGE ORDINAL + 1
          SB2    X3 
          SB3    X6+
          SB2    B3-B2
          PL     B2,EQP4     IF EST ORDINAL .GT. MAXIMUM
          ZR     X6,EQP4     IF EST ORDINAL = 0 
          R=     X3,ESTE
          IX3    X6*X3
          SA3    ESTB+X3+EQDE  SET TYPE OF SHARED DEVICE
          LX3    59-52
          PL     X3,EQP3     IF NOT ISHARE DEVICE 
          MX4    -1 
          LX4    12 
          BX6    -X4+X6 
 EQP3     SA6    TRDV+B6     STORE ENTRY IN TABLE OF DEVICES TO RECOVER 
  
*         (A0) = EST ORDINAL IN DISPLAY CODE, LEFT-JUSTIFIED. 
  
          SX6    A0          STORE DISPLAY CODE FOR K-DISPLAY 
          MX3    -18
          BX6    -X3*X6 
          SX3    40404B      CALCULATE THE NUMBER OF DIGITS 
          IX4    X6-X3
          LX3    3
          BX4    X4*X3
          PX4    X4 
          ZX4,B2 X4          48 = 3 DIGITS, 42 = 2 DIGITS, 36 = 1 DIGIT 
          PX6    X6,B2
          SA6    SCRB+B6
          SB6    B6+B1       INCREMENT TABLE INDEX
          EQ     EQP1        LOOP 
  
 EQP4     MWORDS ERR3,MSDS+1 *INCORRECT FORMAT FOR EQ ENTRY.* 
          EQ     PPA         REQUEST INFORMATION FROM K-DISPLAY 
  
 EQP5     SA1    TSDV+B6     SET TO PROCESS ALL SHARED DEVICES
          BX6    -X0*X1 
          SB6    B6+B1
          SA6    TRDV-1+B6
          NZ     X1,EQP5     IF NOT END OF TABLE
          SA1    DFEQ        SET *ALL* IN K-DISPLAY 
          BX7    X1 
          SA7    EQDS 
          MWORDS BLKW+2,EQDS+1,4
          MWORDS BLKW,EQDS1+1,6 
          EQ     PPTA 
  
 EQP6     BX6    X6-X6       TERMINATE TABLES 
          SA6    SCRB+B6
          BX0    X0-X0
          SA6    TRDV+B6
          SA1    PTPR        SET TO RECHECK LAST PARAMETER
          SX6    X1-1 
          SA6    A1 
  
*         MOVE EQUIPMENT(S) TO RECOVER TO K-DISPLAY.
  
          MX6    24 
          SA1    EQDS        CLEAR CURRENT ENTRIES IN K-DISPLAY 
          BX6    X6*X1
          SA6    A1 
          MWORDS BLKW+2,EQDS+1,4
          MWORDS BLKW,EQDS1+1,6 
          SA1    EQDS-1 
          SA2    SCRB 
          SA3    A1+B1
          BX6    X1 
          SA6    A1 
          BX6    X3 
          SB2    6*6         UNUSED BITS IN THE FIRST WORD
          SB3    4           WORDS IN FIRST LINE OF K-DISPLAY 
          SB5    48 
          SB6    60 
 EQP7     ZR     X2,EQP10    IF END OF TABLE
          UX7,B7 X2 
          SA2    A2+B1
          SB4    B5-B7       TRAILING BITS OF ZEROS 
          SB7    B7-30       NUMBER OF BITS OF EQUIPMENT NUMBER 
          AX7    B4 
          ZR     X2,EQP8     IF END OF TABLE
          SX4    2R,         APPEND A *, *
          LX7    12 
          SB7    B7+12
          BX7    X7+X4
 EQP8     SB2    B2-B7       DECREMENT UNUSED BIT COUNT 
          LX4    X7,B2
          BX6    X6+X4
          MX4    30 
          GT     B2,B0,EQP7  IF THIS IS NOT THE END OF THE WORD 
          SA6    A6+B1       STORE THE CHARACTERS THAT FIT IN THE WORD
          SB2    B2+B6       GET THE CHARACTERS THAT DID NOT FIT
          LX7    B2 
          BX6    X4*X7
          SB3    B3-1 
          NZ     B3,EQP7     IF THIS IS NOT THE END OF THE LINE 
          ZR     X6,EQP9     IF ALL CHARACTERS FIT INTO THE LAST WORD 
          SA6    A6+1 
 EQP9     SA1    EQDS1       INITIALIZE THE SECOND LINE 
          SB2    10*6 
          SB3    6
          BX6    X1 
          SA6    A1 
          BX6    X6-X6
          EQ     EQP7        PROCESS NEXT LINE
  
 EQP10    ZR     X6,PPTA     IF THIS WORD IS EMPTY
          SA6    A6+1 
          EQ     PPTA        RETURN TO PROCESS NEXT PARAMETER 
  
  
 EQPA     CON    0           LAST MASS STORAGE ORDINAL + 1
 IDP      SPACE  4,15 
**        IDP - PROCESS *ID* PARAMETER. 
* 
*         EXIT   TO *PPTA* IF PROCESS NEXT PARAMETER. 
*                TO *PPA* IF ERROR IN MACHINE ID FORMAT.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 6.
*                B - 2. 
* 
*         CALLS  GPR. 
* 
*         MACROS MWORDS.
  
  
 IDP      RJ     GPR         GET NEXT TABLE ENTRY 
          NZ     B2,IDP2     ERROR IF SEPARATOR 
          ZR     X2,IDP2     ERROR IF TERMINATOR
          MX3    12 
          BX4    -X3*X2 
          NZ     X4,IDP2     ERROR IF MID MORE THAN 2 CHARACTERS
          BX6    X3*X2       SET MACHINE ID 
          LX6    12 
          MX4    -6 
          BX7    -X4*X6 
          ZR     X7,IDP1     IF 1 CHARACTER MID 
          SB2    X7-1RA 
          NG     B2,IDP2     IF INCORRECT MID 
          SB2    X7-1R9 
          GT     B2,IDP2     IF INCORRECT MID 
 IDP1     LX4    6
          BX7    -X4*X6 
          SB2    X7-1RA*100B
          NG     B2,IDP2     IF INCORRECT MID 
          SB2    X7-1R9*100B
          GT     B2,IDP2     IF INCORRECT MID 
          SA6    MIDP 
          SA1    IDDS+2      SET MID IN K-DISPLAY 
          MX3    42 
          LX6    6
          BX2    X3*X1
          BX6    X2+X6
          SA6    A1+
          EQ     PPTA        RETURN FOR NEXT PARAMETER
  
 IDP2     MWORDS ERR2,MSDS+1 *INCORRECT FORMAT FOR MID.*
          EQ     PPA         REQUEST INFORMATION FROM K-DISPLAY 
 OPP      SPACE  4
**        OPP - PROCESS *OP* PARAMETER. 
* 
*         ENTRY  (ERRW, 24-35) = INDEX OF EQUIPMENT IN *TRDV*.
*                (ERRW, 12-23) = EST ORDINAL OF DEVICE. 
* 
*         EXIT   BYTE 0 OF EQUIPMENT ENTRY IN *TRDV* = RETURN CODE. 
*                TO *PPTA* IF PROCESS NEXT PARAMETER. 
*                TO *PPA* IF FORMAT ERROR.
* 
*         USES   X - ALL. 
*                A - 1, 2, 5, 7.
* 
*         CALLS  GPR, STB.
* 
*         MACROS MWORDS.
  
  
 OPP      RJ     GPR         GET NEXT PARAMETER 
          NZ     B2,OPP2     ERROR IF SEPARATOR 
          ZR     X2,OPP2     ERROR IF TERMINATOR
          MX0    12          SEARCH OPTION TABLE
          SA5    OPPA 
          RJ     STB
          ZR     X5,OPP2     IF OPTION NOT FOUND
          SA1    ERRW        READ CORRECT ENTRY FROM *TRDV* 
          MX3    -12
          AX1    12 
          BX0    -X3*X1      EST ORDINAL OF DEVICE
          AX1    12 
          BX4    -X3*X1 
          SA1    TRDV+X4
          LX5    59-47
          PL     X5,OPP1     IF VALID OPTION FOR ALL DEVICE TYPES 
          R=     X2,ESTE
          IX2    X0*X2
          SA2    ESTB+X2+EQDE  CHECK IF *LDAM* EQUIPMENT
          LX2    59-55
          PL     X2,OPP3     IF NOT *LDAM* EQUIPMENT
 OPP1     LX5    36          SET RETURN CODE IN *TRDV* ENTRY
          LX3    48 
          BX6    X3*X1
          BX4    -X3*X5 
          BX7    X6+X4
          SA7    A1 
          EQ     PPTA        REQUEST INFORMATION FROM K-DISPLAY 
  
 OPP2     MWORDS ERR8,MSDS+1 *INCORRECT OPTION.*
          EQ     PPA
  
 OPP3     MWORDS ERR9,MSDS+1 *INCORRECT EQUIPMENT.* 
          EQ     PPA
  
  
**        OPPA - VALID OPTIONS. 
* 
*T, OPPA  12/OP,1/V,35/0,12/RC
* 
*         OP     OPTION 
*         RC     RETURN CODE TO *1MR* 
*         V      SET IF OPTION ONLY VALID ON 844,S. 
  
 OPPA     BSS    0
          VFD    12/1LI,1/0,35/0,12//MRT/IGN  *I* 
          VFD    12/1LR,1/1,35/0,12//MRT/REL  *R* 
          CON    0           END OF TABLE 
 REP      SPACE  4,10 
**        REP - *RERUN* PROCESSOR.
* 
*         EXIT   K-DISPLAY CLEARED. 
*                TO *RERUN* TO RESTART PROGRAM. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6, 7.
* 
*         MACROS MWORDS, SYSTEM.
  
  
 REP      MWORDS BLKW,MSDS+1,4  CLEAR MESSAGE LINE
          SA2    DFEQ        RESET EQ(S) TO RECOVER TO DEFAULT
          BX7    X2 
          SA7    EQDS 
          MWORDS BLKW+2,EQDS+1,4  CLEAR EQ(S) TO RECOVER
          MWORDS BLKW,EQDS1+1,6 
          SA1    IDDS+2      CLEAR MID TO PROCESS 
          MX6    42 
          BX6    X6*X1
          SA6    A1 
          SA1    RMMF        RE-READ *MMFL* WORD
          MX7    1
          BX6    X1 
          SA7    MMFP        SET LOW CORE READ
          SA6    LCSW 
          SYSTEM RSB,R,LCSW 
          EQ     RERUN       RERUN PROGRAM
          TITLE  PARAMETER TABLE MANAGEMENT.
 PPA      SPACE  4,10 
**        PPA - PROCESS PARAMETERS. 
* 
*         THE FOLLOWING ROUTINE IS THE COMMON ENTRY POINT FOR 
*         REQUESTING INFORMATION FROM THE K-DISPLAY AND 
*         PROCESSING PARAMETERS.  EXIT FROM THIS ROUTINE OCCURS 
*         WHEN *GO*, *RERUN*, OR *STOP* IS ENTERED. 
  
  
 PPA1     RJ     PPT         PROCESS PARAMETER TABLE
  
 PPA      RJ     PKE         PROCESS KEYBOARD ENTRY 
          NZ     B6,PPA1     IF PARAMETERS
          MWORDS ERR1,MSDS+1 *INCORRECT ENTRY.* 
          EQ     PPA
 GPR      SPACE  4
**        GPR - GET NEXT ENTRY FROM PARAMETER TABLE.
* 
*         ENTRY  (PTPR) = POINTER TO ENTRY TO BE RETURNED.
* 
*         EXIT   (PTPR) = UPDATED POINTER.
*                (X2) = TABLE ENTRY. (0 IF TERMINATOR)
*                (B2) = SEPARATOR.
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 6. 
*                B - 2. 
  
  
 GPR      SUBR               ENTRY/EXIT 
          SA1    PTPR        GET TABLE ENTRY
          SA2    PARM+X1
          SX6    X1+B1       UPDATE POINTER 
          SA6    A1 
          MX3    -6          SET SEPARATOR
          BX4    -X3*X2 
          SB2    X4 
          BX2    X3*X2
          EQ     GPRX        RETURN 
 PPT      SPACE  4,20 
**        PPT - PROCESS PARAMETER TABLE.
* 
*         EXIT   TO *PPTX* IF REQUEST FOR INFORMATION FROM K-DISPLAY. 
*                TO PROCESSOR IF LEGAL PARAMETER OR COMMAND.
*                TO *GO* IF END OF PARAMETERS AND (AUTO) .NE. 0.
* 
*         CALLS  GPR, STB.
* 
*         USES   X - 0, 1, 2, 3, 5, 6.
*                A - 1, 5, 6. 
*                B - 4, 5.
* 
*         MACROS MWORDS.
* 
*         NOTE   THIS ROUTINE IS ENTERED FROM THE PARAMETER 
*                PROCESSORS AT *PPTA* TO PROCESS THE NEXT 
*                PARAMETER. 
  
  
 PPT3     SA1    AUTO 
          ZR     X1,PPTX     IF MORE POSSIBLE PARAMETERS FROM K-DISPLAY 
          EQ     GO          *GO* IF PARAMETERS ENTERED BY COMMAND
  
 PPT      SUBR               ENTRY/EXIT 
          BX6    X6-X6       SET BEGINNING OF TABLE 
          MX0    36 
          SA6    PTPR 
 PPTA     SA5    PAMT        SET TABLE TO SEARCH
          RJ     GPR         GET TABLE ENTRY
          ZR     X2,PPT3     IF END OF PARAMETERS 
          RJ     STB         SEARCH PARAMETER TABLE 
          NZ     X5,PPT1     IF ENTRY FOUND 
          SA5    KDCT        SEARCH K-DISPLAY COMMAND TABLE 
          RJ     STB
          ZR     X5,PPT2     IF ENTRY NOT FOUND 
 PPT1     SB5    X5 
          AX5    18          CHECK IF VALID ENTRY 
          MX3    -6 
          BX1    -X3*X5 
          SX3    B1 
          SB4    X1 
          SA1    CVEM 
          LX2    B4,X3
          BX6    X1*X2
          ZR     X6,PPT2     IF NOT VALID ENTRY 
          JP     B5          JUMP TO PROCESSOR
  
 PPT2     MWORDS ERR1,MSDS+1 *INCORRECT ENTRY.* 
          EQ     PPTX        RETURN TO REQUEST K-DISPLAY ENTRY
 STB      SPACE  4,15 
**        STB - SEARCH TABLE. 
*         TABLE MUST BE TERMINATED BY 0 WORD. 
* 
*         ENTRY  (A5) = ADDRESS OF TABLE. 
*                (X5) = FIRST TABLE ENTRY.
*                (X0) = SEARCH MASK.
*                (X2) = ENTRY TO SEARCH FOR.
* 
*         EXIT   (X5) = ENTRY, IF FOUND.
*                     = 0, IF NOT FOUND.
* 
*         USES   X - 5, 6, 7. 
*                A - 5. 
  
  
 STB      SUBR               ENTRY/EXIT 
 STB1     ZR     X5,STBX     IF END OF TABLE
          BX6    X0*X5
          BX7    X6-X2
          ZR     X7,STBX     IF ENTRY FOUND 
          SA5    A5+B1       GET NEXT ENTRY 
          EQ     STB1        LOOP 
 CDM      SPACE  4,15 
**        CDM - CHECK DOWN MACHINES.
* 
*         ENTRY  (X6) = WORD TO MERGE MACHINE ID IN.
*                (X5) = MACHINE MASK TO CHECK.
*                (A1) = *TMID* ENTRY CORRESPONDING TO CURRENT BIT.
* 
*         EXIT   (X6) = 5R  ID* MERGED IN WORD. 
*                (X5) = MACHINE MASK, CURRENT BIT SHIFTED TO BIT 59.
*                (A1) = *TMID* ENTRY CORRESPONDING TO CURRENT BIT.
* 
*         USES   X - 1, 4, 5, 6, 7. 
*                A - 1. 
  
  
 CDM2     BX6    X6+X7
          SX7    1R 
          BX6    X6+X7
  
 CDM      SUBR               ENTRY/EXIT 
          SX7    2R 
          LX7    18 
          BX6    X6+X7
          LX7    -12
          MX4    12 
          ZR     X5,CDM2     IF END OF MACHINES SHARING DEVICE
 CDM1     LX5    -1 
          SA1    A1+B1
          PL     X5,CDM1     IF MACHINE NOT FOUND 
          SX5    X5          CLEAR BIT
          BX7    X4*X1       GET MID
          LX7    18 
          SX1    X1-/MMF/MFDN 
          NZ     X1,CDM2     IF MACHINE NOT DOWN
          BX6    X6+X7
          SX7    1R*
          BX6    X6+X7
          EQ     CDMX        RETURN 
          TITLE  SUBROUTINES. 
 DWN      SPACE  4,15 
**        DWN -  DETERMINE IF MACHINE IS DOWN.
* 
*         ENTRY  (X0) = MID OF MACHINE TO TEST. (LEFT JUSTIFIED)
* 
*         EXIT   (B6) = 0, IF MACHINE UP. 
*                (B6) .LT. 0 , IF MACHINE DOWN. 
*                (B6) .GT. 0 , IF MACHINE NOT FOUND.
*                (X0) = UNCHANGED.
*                (X1) = MMFL WORD FOR DOWNED MACHINE. 
* 
*         USES   X - 1, 3.
*                A - 1, 3.
*                B - 6. 
  
  
 DWN2     MX3    24 
          SB6    X1-/MMF/MFAC  (B6) = 0, IF MACHINE IS ACTIVE 
          BX1    X3*X1
          SX3    A1-TMID-TMIDI
          PL     X3,DWN3     IF IN ISHARE TABLE 
          SX3    A1-TMID+1
          BX1    X1+X3
 DWN3     ZR     B6,DWNX     IF MACHINE ACTIVE
          SB6    -B1         SET MACHINE DOWN 
  
 DWN      SUBR               ENTRY/EXIT 
          SA1    TMID-1      INITIALIZE *TMID* SEARCH 
          SB6    TMIDL+1
 DWN1     SA1    A1+1        GET NEXT ENTRY 
          SB6    B6-B1
          MX3    12 
          BX3    X3*X1
          BX3    X3-X0
          ZR     X3,DWN2     IF THIS ENTRY MATCHES
          GT     B6,B1,DWN1  IF NOT END OF TABLE
*         SB6    1           SET NOT FOUND FLAG 
          EQ     DWNX        RETURN 
 IBF      SPACE  4
*         IBF - INITIALIZE BUFFERS. 
* 
*         EXIT   TEMPORARY STORAGE LOCATIONS ZEROED OUT.
*                EST READ INTO LOCAL BUFFER.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3.
* 
*         CALLS  IFN, RSB=. 
* 
*         MACROS SYSTEM.
  
  
 IBF      SUBR               ENTRY/EXIT 
          SA1    MMFP 
          LX1    59-47
          PL     X1,IBF0     IF NO INDEPENDENT SHARED DEVICES 
          SA1    UMTW        UPDATE MST ENRIES IN CM
          RJ     IFN
 IBF0     SX6    B0+         CLEAR STORAGE LOCATIONS
          SB2    CLER 
          SB3    CLERL
          SA3    RESP 
 IBF1     SA6    B2 
          SB2    B2+B1
          NE     B2,B3,IBF1  IF MORE STORAGE TO CLEAR 
          SX6    B0+         RESET TO PAGE ONE OF THE DISPLAY 
          SA6    FNDV 
          SB2    COM         CLEAR COMMON STORAGE 
          SB3    COM+COML 
 IBF2     SA6    B2 
          SB2    B2+B1
          NE     B2,B3,IBF2  IF MORE STORAGE TO CLEAR 
          MX7    1           READ EST POINTER 
          BX6    X3 
          SA6    LCSW 
          SA7    ESTF        SET LOW CORE READ
          SYSTEM RSB,R,LCSW 
          SA2    ESTF        SET *COMCRSB* ENTRY CONDITIONS 
          MX3    -12
          SX1    ESTB        (X1) = ADDRESS TO TRANSFER TO
          AX2    12 
          BX3    -X3*X2 
          AX2    24          (X2) = ADDRESS TO TRANSFER FROM
          R=     X6,ESTE
          IX3    X3*X6       (X3) = WORD COUNT
          SX4    B0          (X4) = SUBSYSTEM (= *CMR*) 
          MX6    1
          SA6    X1 
          RJ     RSB=        READ EST 
          SA2    NORP        SET NORMAL PROCESSING VALID ENTRIES
          BX6    X2 
          SA6    CVEM 
          EQ     IBFX        RETURN 
 IFN      SPACE  4
**        IFN - ISSUE *1MR* FUNCTION AND CHECK FOR ERRORS.
* 
*         ENTRY  (X1) = REQUEST WORD. 
* 
*         EXIT   TO *PPA* IF LINK DEVICE ERROR OR RESERVE ERROR.
* 
*         USES   X - ALL. 
*                A - 1, 2, 5, 6, 7. 
* 
*         CALLS  COD. 
* 
*         MACROS MESSAGE, MWORDS, RECALL, SYSTEM. 
  
  
 IFN      SUBR               ENTRY/EXIT 
          SX7    B0          CLEAR ERROR RETURN WORD
          SA7    ERRW 
          BX6    X1          SAVE REQUEST WORD
          SA6    REQW 
 IFN1     SYSTEM SPC,R,REQW 
          SA1    REQW 
          NZ     X1,IFN1     IF NO PP AVAILABLE 
 IFN2     RECALL
          SA1    RCLW 
          ZR     X1,IFN2     IF *1MR* NOT COMPLETE
          SX6    B0+         CLEAR RECALL STATUS WORD 
          SA6    RCLW 
  
*         CHECK FOR ERROR RETURN. 
  
          SA5    ERRW 
          ZR     X5,IFNX     IF NO ERRORS 
          MX4    -12
          BX6    -X4*X5 
          SX2    X6-/MRT/URS
          PL     X2,IFN5     IF RESERVE ERROR 
          SX2    IFNA        ASSUME READ ERROR
          SX3    X6-/MRT/RER
          ZR     X3,IFN3     IF READ ERROR
          SX2    IFNB        SET WRITE ERROR
 IFN3     MESSAGE X2,,R 
          MWORDS X2,MSDS+1
          BX6    X6-X6       SET TO REQUEST K-DISPLAY 
          SA6    NPAR 
          SA2    ERRP        SET ERROR PROCESSING VALID ENTRY MASK
 IFN4     BX6    X2 
          SA6    CVEM 
          EQ     PPA         REQUEST INFORMATION FROM K-DISPLAY.
  
 IFN5     SX0    IFNC        ASSUME UNIT RESERVED 
          SX3    X6-/MRT/URS
          ZR     X3,IFN6     IF UNIT RESERVED 
          SX0    IFND        SET CONTROLLER RESERVED
 IFN6     AX5    12          CONVERT EST ORDINAL
          BX1    -X4*X5 
          RJ     COD
          LX6    24          SET EST ORDINAL IN MESSAGE 
          SA1    X0 
          MX4    -18
          LX4    24 
          BX3    X4*X1       CLEAR OLD ORDINAL
          BX6    -X4*X6 
          BX6    X6+X3       MERGE NEW ORDINAL IN MESSAGE 
          SA6    A1 
          AX5    24          CONVERT UNIT/CHANNEL TO DISPLAY CODE 
          MX4    -12
          BX1    -X4*X5 
          RJ     COD
          MX4    -12
          BX6    -X4*X6      UNIT/CHANNEL NUMBER
          LX6    48          SET UNIT/CHANNEL NUMBER IN MESSAGE 
          SA1    X0+B1
          LX4    48 
          BX3    X4*X1       CLEAR OLD CHANNEL/UNIT NUMBER
          BX6    -X4*X6 
          BX6    X6+X3       MERGE NEW CHANNEL/UNIT NUMBER IN MESSAGE 
          SA6    A1 
          MWORDS X0,MSDS+1,4 WRITE MESSAGE TO K-DISPLAY 
          SA2    RSVP        SET RESERVE PROCESSING VALID ENTRY MASK
          EQ     IFN4 
  
  
 IFNA     DATA   30H LINK DEVICE READ ERROR.
          BSSZ   1
 IFNB     DATA   30H LINK DEVICE WRITE ERROR. 
          BSSZ   1
 IFNC     DATA   40H EQ000, UN00, UNIT RESERVED.
 IFND     DATA   40H EQ000, CH00, CONTROLLER RESERVED.
 MRD      SPACE  4,10 
**        MRD - PROCESS RESERVES, BAT-S, DAT-S, FAT-S, AND MRT-S. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6. 
*                B - 2, 3, 4, 5.
* 
*         CALLS  IFN, STB.
  
  
 MRD      SUBR               ENTRY/EXIT 
          SA2    SORT 
          NZ     X2,MRD6     IF TABLE ALREADY SORTED
  
*         EDIT TABLE OF DEVICES TO RECOVER, DELETING ENTRIES NOT
*         SHARED BETWEEN DOWNED MACHINE AND THIS MACHINE. 
  
          SB2    B0 
          MX4    -12
          SA3    MIDP        MID OF MACHINE TO PROCESS
          SB5    B0 
          SX6    B1          SET TABLE SORTED 
          SA6    SORT 
 MRD1     SA2    TRDV+B2
          ZR     X2,MRD5     IF END OF TABLE
          MX0    24          SET TO SEARCH TABLE OF SHARED DEVICES
          LX0    24 
          SA5    TSDV 
          SB4    B0 
          RJ     STB         SEARCH TABLE 
          ZR     X5,MRD4     IF DEVICE NOT SHARED BY THIS MACHINE 
          LX5    59-12
          NG     X5,MRD3     IF ISHARE DEVICE 
          LX5    12+12-59 
          SA1    MASK        CHECK IF DOWNED MACHINE IS SHARING DEVICE
          SB4    X1 
          MX1    1
          LX1    B4 
          BX7    X5*X1
          ZR     X7,MRD4     IF DEVICE NOT SHARED WITH DOWNED MACHINE 
 MRD3     SX6    X2          RESTORE GOOD ENTRY 
          SA6    TRDV+B5
          SB5    B5+B1
 MRD4     SB2    B2+B1       PROCESS NEXT TABLE ENTRY 
          EQ     MRD1 
  
 MRD5     BX6    X6-X6       TERMINATE TABLE
          SA6    TRDV+B5
 MRD6     SA1    PRBW        SET FUNCTION *PRB* 
          RJ     IFN
          SA1    PMTW        SET FUNCTION *PMT* 
          RJ     IFN
          SA2    NORP        SET NORMAL PROCESSING VALID OPTIONS
          BX6    X2 
          SA6    CVEM 
          EQ     MRDX        RETURN 
 SSD      SPACE  4,15 
**        SSD - SEARCH FOR SHARED DEVICES AND FORMAT MST
*               K-DISPLAY DATA. 
* 
*         EXIT   (NSDV) = NUMBER OF SHARED DEVICES. 
* 
*         USES   X - ALL. 
*                A - ALL. 
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  CDD, COD.
* 
*         MACROS SYSTEM.
  
  
*         (B5) = NUMBER OF SHARED DEVICES.
  
 SSD14    SA1    NKDP        GET NUMBER OF *K* DISPLAY PAGES
          SX6    B5          SAVE NUMBER OF SHARED DEVICES
          SX1    X1 
          SA6    NSDV 
          RJ     CDD         CONVERT TO DECIMAL DISPLAY CODE
          SA1    PGDS        INSERT IN HEADER 
          LX4    12 
          MX6    -12
          BX4    -X6*X4 
          BX6    X6*X1
          BX6    X6+X4
          SA6    A1 
  
 SSD      SUBR               ENTRY/EXIT 
          SA3    ESTF 
          MX4    -12
          AX3    12 
          BX2    -X4*X3      LAST MASS STORAGE ORDINAL + 1
          SA0    TSMI        INITIALIZE COUNTERS
          SX7    B1 
          PX7    X7 
          SA7    NKDP        NUMBER OF *K* DISPLAY PAGES = 1
          SB5    B0          NUMBER OF SHARED DEVICES 
          SB6    X2+
          SB7    NOPE 
  
*         SEARCH FOR SHARED DEVICES.
  
 SSD1     EQ     B6,B7,SSD14 IF END OF MASS STORAGE DEVICES 
          R=     X5,ESTE
          SX6    B7          CURRENT EST ORDINAL
          IX5    X6*X5
          BX7    X6 
          SA5    ESTB+X5+EQDE  READ EST ENTRY 
          SB7    B7+B1       INCREMENT EST INDEX
          PL     X5,SSD1     IF NOT MASS STORAGE DEVICE 
          LX5    59-57
          PL     X5,SSD1     IF NOT SHARED DEVICE 
  
*         ENTER SHARED DEVICE INTO TABLE. 
  
          SX1    X6 
          LX5    59-52-59+57
          PL     X5,SSD2     IF EXTENDED MEMORY MMF DEVICE
          SX0    B1          SET ISHARE DEVICE STATUS 
          LX0    12 
          BX7    X6+X0
          SX0    A0          SET POINTER TO *TSMI* IN *TSDV* ENTRY
          LX0    24 
          BX6    X7+X0
 SSD2     SA6    TSDV+B5
          SA7    TRDV+B5
  
*         READ MST FOR SHARED DEVICE. 
  
          LX5    52-59
          MX6    -12         READ MST FOR DEVICE
          BX3    -X6*X5 
          SA1    RMST 
          SA6    MSTB        SET LOW CORE READ
          SA6    SCRB 
          LX3    18+3        MST ADDRESS
          BX6    X3+X1
          SA6    LCSW 
          SYSTEM RSB,R,LCSW 
  
*         FORMAT UNIT NUMBER, DEVICE TYPE, AND NUMBER OF UNITS. 
  
          SA2    MSTB+DDLL   GET UNIT COUNT AND LIST
          SA1    A5 
          AX5    12          OBTAIN DEVICE TYPE 
          MX4    -11
          BX0    -X4*X5      DEVICE TYPE
          AX5    12          SET UNIT NUMBER
          MX4    -3 
          LX1    59-55
          LX0    48 
          PL     X1,SSD3     IF NOT *LDAM* DEVICE 
          BX5    X2 
          MX4    -6          SET FOR MAXIMUM OF 6 BIT UNIT NUMBER 
 SSD3     BX1    -X4*X5 
          LX2    12          POSITION UNIT COUNT
          BX5    X2 
          RJ     COD         CONVERT UNIT NUMBER TO DISPLAY 
          MX4    -12         MERGE UNIT NUMBER WITH DEVICE TYPE 
          BX3    -X4*X6 
          LX3    6
          BX0    X0+X3
          MX4    -3          SET NUMBER OF UNITS
          BX3    -X4*X5 
          ZR     X3,SSD4     IF ONLY 1 UNIT 
          SX1    X3+B1
          RJ     CDD         CONVERT NUMBER OF UNITS
          MX4    -6 
          BX2    -X4*X6 
          SX1    1R-
          LX1    6
          BX3    X1+X2
          LX3    36 
          BX0    X0+X3
 SSD4     BX6    X0          SAVE DEVICE TYPE AND UNIT NUMBER 
          SA6    TSEQ+B5
  
*         FORMAT DEVICE NUMBER AND FAMILY NAME. 
  
          MX0    -6 
          SA2    MSTB+PFGL   OBTAIN DEVICE NUMBER AND FAMILY NAME 
          AX2    12 
          BX1    -X0*X2 
          AX2    6
          MX3    -42
          BX0    -X3*X2      FAMILY NAME
          BX6    X6-X6       INITIALIZE DEVICE NUMBER AND FAMILY NAME 
          ZR     X0,SSD5     IF NO DEVICE PRESENT 
          RJ     COD         CONVERT DEVICE NUMBER TO DISPLAY 
          MX3    12 
          LX6    48 
          BX6    X3*X6
          BX6    X6+X0
 SSD5     SA6    TSFM+B5     STORE DEVICE NUMBER AND FAMILY NAME
          SB5    B5+B1       INCREMENT NUMBER OF SHARED DEVICES 
  
*         PUT MID-S ACCESSING DEVICE IN *TSMI*. 
  
          SA4    A5          READ EST ENTRY 
          SB3    B1 
          LX4    59-52
          PL     X4,SSD12    IF EXTENDED MEMORY MMF DEVICE
          LX4    59-54-59+52
          BX7    X7-X7
          NG     X4,SSD11    IF DEVICE NOT AVAILABLE
          SA1    MSTB+TRLL   READ FWA OF TRT
          MX0    -18
          BX1    -X0*X1 
          SA3    MSTB+TDGL   READ TRT LENGTH
          AX3    24 
          MX0    -12
          BX2    -X0*X3      TRT LENGTH 
          IX1    X1+X2       BEGINNING OF MRT 
          SX2    X2+7 
          AX2    3           MRT LENGTH 
          IX1    X1+X2       ADDRESS OF DIT 
          SA3    RDIT        SET DIT ADDRESS IN *RSB* CONTROL WORD
          LX1    18 
          BX6    X1+X3
          SA6    LCSW 
          SYSTEM  RSB,R,LCSW READ DIT 
          SA5    MMFP        MAINFRAME ID 
          SB4    MMPF-1      MAXIMUM SHARED MAINFRAMES
          SB2    48 
          BX7    X7-X7
          SB3    B0          NUMBER OF MIDS FOR THIS MAINFRAME
          LX5    12 
          BX5    -X0*X5      MID OF THIS MAINFRAME
 SSD6     SA3    B4+SCRB
          ZR     X3,SSD10    IF NO ENTRY
          BX3    -X0*X3      MID ACCESSING DEVICE 
          BX4    X3-X5       COMPARE MID
          BX6    X3 
          SA2    TMID+TMIDI-1 
 SSD7     SA2    A2+B1       SET TABLE OF MACHINE ID-S
          ZR     X2,SSD8     IF END OF KNOWN MID-S
          LX2    12 
          BX2    X2-X3       COMPARE ENTRY
          BX2    -X0*X2 
          NZ     X2,SSD7     IF NO MATCH
          EQ     SSD9        MID ALREADY IN TABLE 
  
 SSD8     LX6    48 
          ZR     X4,SSD10    IF THIS MF 
          SX2    B1          SET MF RUNNING ISHARE MODE 
          LX2    47 
          BX6    X6+X2
          SA6    A2+         SET MID IN TABLE 
 SSD9     LX3    B2,X3
          BX7    X7+X3       ADD MID TO LIST WORD 
          SB2    B2-12
          SB3    B3+B1
          PL     B2,SSD10    IF THIS MID LIST WORD IS NOT FULL
          SA7    A0 
          SA0    A0+B1
          SB2    48 
          BX7    X7-X7
 SSD10    SB4    B4-1        DECREMENT MF ORDINAL 
          PL     B4,SSD6     IF MORE MACHINES TO CHECK
 SSD11    NZ     X7,SSD12    IF LIST WORD IS NOT EMPTY
          SX7    B1+
 SSD12    SA7    A0 
          SA0    A0+B1
          SA5    NKDP        INCREMENT THE NUMBER OF LINES USED 
          SX6    1S18/6+1    DIVIDE NUMBER OF MIDS - 1 BY 6 
          SX7    B3-B1
          IX7    X7*X6
          AX7    18 
          SX7    X7+B1       INSURE AT LEAST ONE LINE 
          UX6,B3 X5 
          SB3    B3+X7
          SX5    B3-PAGLN-1 
          NG     X5,SSD13    IF THIS DEVICE WILL NOT REQUIRE A NEW PAGE 
          SX6    X6+1        INCREMENT THE NUMBER OF PAGES USED 
          SB3    X7+         SET THE NUMBER OF LINES USED ON NEW PAGE 
 SSD13    PX7    X6,B3
          SA7    A5 
          EQ     SSD1        LOOP FOR NEXT EQUIPMENT
 MWD      SPACE  4,10 
**        MWD - MOVE N WORDS. 
* 
*         ENTRY  (B2) = ADDRESS TO GET DATA FROM. 
*                (B3) = ADDRESS TO MOVE DATA TO.
*                (B4) = NUMBER OF WORDS TO MOVE.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
*                B - 2, 3, 5. 
  
  
 MWD1     SA1    B2 
          BX6    X1 
          SA6    B3 
          SB5    B5+B1       INCREMENT COUNTERS 
          SB2    B2+B1
          SB3    B3+B1
          NE     B4,B5,MWD1  IF MORE WORDS TO MOVE
  
 MWD      SUBR               ENTRY/EXIT 
          SB5    B0          INITIALIZE COUNTER 
          EQ     MWD1 
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDCP 
*CALL     COMCDXB 
*CALL     COMCRSB 
*CALL     COMCSYS 
*CALL     COMCUPC 
          TITLE  K-DISPLAY CONTROL. 
 DSD      SPACE  4,15 
**        DSD - DISPLAY MACHINES SHARING DEVICE.
* 
*         ENTRY  (DBFA) = 30/ BUFFER A,30/ BUFFER B.
*                (FNDV) = 12/PAGE NUMBER,24/ INDEX OF FIRST DEVICE,24/. 
* 
*         EXIT   K-DISPLAY COMPLETED. 
*                (DBFA) IS TOGGLED. 
*                (FNDV) = 36/ UNCHANGED, 24/ FIRST INDEX FOR NEXT PAGE. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 5, 6, 7.
*                B - 5, 6, 7. 
* 
*         CALLS  CDD, CDM, COD, DWN, PGD. 
  
  
 DSD11    SA1    B5          CLEAR EST ORDINAL FROM NEXT UNUSED LINE
          MX4    24 
          BX6    X4*X1
          SA6    B5 
          SA1    FNDV        SET NEXT DEVICE INDEX
          SA2    DBFA        TOGGLE BUFFER ADDRESSES
          SX6    HDDS        TERMINATE THE BUFFER 
          MX4    12 
          BX6    X4+X6
          SA6    B5+B1
          MX0    36 
          BX6    X0*X1
          BX6    X6+X5
          SA6    A1 
          BX6    X2 
          LX6    30 
          SA6    A2 
          SX1    KDCW        TOGGLE TO NEW BUFFER 
          SX2    KPAG 
          SX3    1R+
          LX3    -6 
          BX4    X4-X4
          RJ     PGD         PAGE DISPLAY 
  
 DSD      SUBR               ENTRY/EXIT 
          SA5    DBFA        CLEAR DISPLAY BUFFER 
          SB7    X5+LLEN*PAGLN
          SB6    X5+
 DSD1     MWORDS BLKW,B6+B1,LLEN-1
          SB6    B6+LLEN
          LT     B6,B7,DSD1  IF MORE LINES TO CLEAR 
          SA1    FNDV        SET FIRST DEVICE INDEX 
          AX1    24 
          SA0    X1 
          AX1    24          GET CURRENT PAGE NUMBER
          SX1    X1+B1
          RJ     CDD         CONVERT TO DECIMAL DISPLAY CODE
          SA5    DBFA        SET BUFFER FWA 
          BX7    X4 
          SB5    X5 
          SB7    B5+PAGLN*LLEN
          SA7    B5-1 
          ERRNZ  SDD1-1-PGN1 CODE DEPENDS ON VALUE
          ERRNZ  SDD2-1-PGN2 CODE DEPENDS ON VALUE
 DSD2     SA5    TSDV+A0     GET NEXT SHARED DEVICE 
          ZR     X5,DSD11    IF NO MORE DEVICES 
          MX4    -12         GET EST ORDINAL
          BX1    -X4*X5 
          RJ     COD         CONVERT EST ORDINAL TO DISPLAY CODE
          LX6    18          STORE EST ORDINAL IN K-DISPLAY 
          SA1    B5 
          MX4    24 
          BX3    X4*X1
          SA1    TSEQ+A0     GET DEVICE TYPE AND UNIT NUMBER
          BX6    -X4*X6 
          BX6    X6+X3
          SA6    B5 
          BX6    X1 
          SA1    TSFM+A0     GET DEVICE NUMBER AND PACK NAME
          SA6    A6+B1
          SX7    2R 
          MX2    12 
          MX3    -24
          BX2    X2*X1       GET DEVICE NUMBER
          BX3    -X3*X1      GET LOWER 4 CHARACTERS OF PACK NAME
          BX1    X1-X2       GET UPPER 3 CHARACTERS OF PACK NAME
          AX1    24 
          BX6    X7+X2
          LX6    48 
          BX6    X6+X1
          SA6    A6+B1
          SX1    B1          BLANK FILL PACK NAME 
          LX7    48 
          IX1    X3-X1       UPPER BITS = 1 IF FILLING NECESSARY
          LX3    36 
          BX7    X1*X7
          BX3    -X1*X3 
          BX7    X7+X3
          SX2    6000B+10B*35  SET COORDINATE OF FIRST MID
          BX7    X7+X2
          SA7    A6+B1
          BX0    X5 
          LX0    59-12
          SB5    B5+LLEN     SET BEGINING OF NEXT LINE
          NG     X0,DSD3     IF ISHARE DEVICE 
          SA1    TMID-1      INITIALIZE MACHINE INDEX 
          AX5    48 
          BX6    X6-X6       PROCESS FIRST TWO SHARED MACHINES
          RJ     CDM
          LX6    30 
          RJ     CDM
          SA6    A7+B1
          BX6    X6-X6       PROCESS SECOND TWO SHARED MACHINES 
          RJ     CDM
          LX6    30 
          RJ     CDM
          SA6    A6+B1
          BX6    X6-X6       PROCESS LAST TWO SHARED MACHINES 
          RJ     CDM
          LX6    30 
          RJ     CDM
          SA6    A6+B1
          ERRNG  7-MXMF      CODE CAN HANDLE UP TO 7 MAINFRAMES 
          EQ     DSD9        ADVANCE TO NEXT DEVICE 
  
 DSD3     LX0    -24+12-59+60 
          SA5    X0          SET MID LIST ADDRESS 
          BX7    X7-X7       CLEAR MID ACCUMULATOR
          MX4    12 
 DSD4     NZ     X5,DSD5     IF MID LIST WORD IS NOT EXHAUSTED
          SA1    TSDV+A0
          AX1    24          GET FWA OF LIST
          SB6    X1+SMLX-1
          SB6    A5-B6
          PL     B6,DSD7     IF BEYOND MAXIMUM NUMBER OF MIDS 
          SA5    A5+1        GET NEXT LIST WORD 
 DSD5     BX0    X4*X5       GET NEXT MID 
          BX6    X7          SAVE THE CURRENT STATE OF THE ACCUMULATOR
          ZR     X0,DSD7     IF END OF MID LIST 
          SX2    1R*         CHECK IF MACHINE DOWN
          RJ     DWN
          LX1    59-47       CHECK FOR ISHARE DEVICE
          LX0    18 
          NG     X1,DSD6     IF ISHARE DEVICE 
          ZR     B6,DSD6     IF MACHINE NOT DOWN
          BX0    X2+X0
 DSD6     LX0    42          POSITION MID 
          BX5    X4+X5
          LX7    30 
          LX5    12 
          BX7    X7+X0       MERGE MIDS 
          ZR     X6,DSD4     IF THIS IS FIRST MID IN THE ACCUMULATOR
          LX7    30          REORDER THE MIDS 
 DSD7     ZR     X7,DSD9     IF THE ACCUMULATOR IS EMPTY
          SB6    A7+1 
          GE     B6,B5,DSD8  IF A NEW LINE IS NECESSARY 
          SA7    A7+B1
          BX7    X7-X7
          EQ     DSD4        GET NEXT MID 
  
 DSD8     SA1    B5          GET FIRST WORD OF NEXT LINE
          SX2    2R 
          MX0    24 
          LX2    -12
          BX6    X0*X1
          SX0    6000B+10B*35 
          SA6    A1          CLEAR EST ORDINAL AREA 
          BX6    X0+X2
          SA6    A6+3        CLEAR PACK NAME AREA 
          SA7    A6+B1       STORE MID(S) 
          BX7    X7-X7
          SB5    B5+LLEN
          EQ     DSD4        GET NEXT MID 
  
 DSD9     SA0    A0+B1       INCREMENT DEVICE INDEX 
          LT     B5,B7,DSD2  IF NOT END OF PAGE 
          SX5    A0 
          EQ     B5,B7,DSD11 IF THE PAGE DID NOT OVERFLOW 
          SX5    A0-1        IGNORE LAST ENTRY
 DSD10    SB5    B5-LLEN
          SA1    B5 
          SX1    X1 
          ZR     X1,DSD10    IF NOT THE BEGINNING OF A LINE 
          EQ     DSD11       EXIT 
 PAG      SPACE  4,15 
**        PAG - PAGE LEFT DISPLAY.
* 
*         ENTRY  (B7) = FORWARD/BACKWARD FLAG.
*                     = 0 = PAGE FORWARD. 
*                     = 1 = PAGE BACKWARD.
*                (FNDV) = CURRENT PAGE AND NEXT PAGE FIRST DEVICE.
* 
*         EXIT   (FNDV) IS UPDATED TO REFLECT PAGE COMMAND. 
* 
*         USES   X - 4, 6.
*                A - 4, 6.
* 
*         CALLS  DSD. 
  
  
 PAG      SUBR               ENTRY/EXIT 
          SA4    FNDV 
          SX6    B7-1 
          ZR     X6,PAG1     IF PAGING BACKWARD 
          SX6    X4          GET NEXT INDEX 
          AX4    48          GET CURRENT PAGE NUMBER
          ZR     X6,PAG1     IF NO MORE DEVICES 
          SX4    X4+1        INCREMENT THE PAGE NUMBER
          LX4    24 
          BX6    X6+X4
          LX6    24 
 PAG1     SA6    A4 
          RJ     DSD         DISPLAY SHARED DEVICES 
          EQ     PAGX        RETURN 
  
  
 PGD      HERE               ASSEMBLE PAGING SUBROUTINE HERE
  
 KPAG     PAGT   LPG1        PAGING TABLE 
          PAGT   LPG2 
          PAGT
          PAGT   RPG1 
          PAGT   RPG2 
          PAGT   *
 PKE      SPACE  4,20 
**        PKE - PROCESS KEYBOARD ENTRY. 
* 
*         ENTRY  (NPAR) = NUMBER OF PARAMETERS ON COMMAND.
* 
*         EXIT   (B6) = NUMBER OF PARAMETERS. 
*                (NPAR) = 0.
*                COMMAND OR KEYBOARD ENTRY UNPACKED AND 
*                IN PARAMETER BUFFER. 
* 
*         USES   X - ALL. 
*                A - 2, 5, 6, 7.
*                B - 3, 6, 7. 
* 
*         CALLS  PAG, PGD, UPC. 
* 
*         MACROS CONSOLE, MWORDS, RECALL. 
  
  
 PKE6     MWORDS ARGR,PARM,62B  MOVE PARAMETERS TO *PARM* 
          BX6    X6-X6
          SB6    X2          NUMBER OF PARAMETERS 
          SA6    NPAR        SET TO REQUEST K-DISPLAY ON ERROR
          SX6    B1+         SET AUTOMATIC *GO*, *STOP* 
          SA6    AUTO 
  
 PKE      SUBR               ENTRY/EXIT 
          SX6    B0+         CLEAR PARAMETER AREA 
          SB3    PARML-1
 PKE1     SA6    PARM+B3
          SB3    B3-1 
          GE     B3,PKE1     IF MORE WORDS TO CLEAR 
          SA6    I           CLEAR INPUT BUFFER 
  
*         CHECK FOR INPUT IF NO PARAMETERS ON COMMAND.
  
          SA2    NPAR 
          NZ     X2,PKE6     IF PARAMETERS ON COMMAND 
          BX6    X2          DISABLE AUTOMATIC *GO*, *STOP* 
          SA6    AUTO 
 PKE2     SX7    B0+         CLEAR THE INPUT BUFFER 
          SA7    I
          CONSOLE  KDCW 
 PKE3     RECALL
          SA2    I
          ZR     X2,PKE3     IF INPUT NOT READY 
  
          MWORDS I,KBDS+1,5  MOVE INPUT TO DISPLAY LINE 
          MWORDS BLKW,MSDS+1,4  CLEAR MESSAGE LINE
  
*         CHECK FOR PAGING COMMAND. 
  
          MX0    6
          BX3    X0*X2
          LX3    6
          SB7    X3-1R+ 
          NG     B7,PKE5     IF NOT A PAGING COMMAND
          GT     B7,B1,PKE4  IF NOT A LEFT SCREEN COMMAND 
          RJ     PAG         PAGE THE LEFT SCREEN DISPLAY 
          EQ     PKE2        GET THE NEXT COMMAND 
  
 PKE4     SX1    KDCW 
          SX2    KPAG 
          LX3    -6 
          BX4    X4-X4
          RJ     PGD         PAGE DISPLAY 
          ZR     X4,PKE2     IF THE COMMAND WAS A PAGING COMMAND
  
*         UNPACK COMMAND. 
  
 PKE5     SA5    CCARD
          SB7    PARM-1 
          RJ     UPC         UNPACK COMMAND 
          ZR     B6,PKEX     IF NO ARGUMENTS
          SB6    B6-B1       SKIP FIRST ARGUMENT
          EQ     PKEX        RETURN 
  
  
 CCARD    DIS    1,MREC,     COMMAND IMAGE
 I        BSSZ   8           INPUT BUFFER 
 KDCW     VFD    24/I,18/RPG1,18/LPG1  K-DISPLAY CONTROL WORD 
 BLKW     DATA   58L
          EJECT 
  
**        K-DISPLAY ERROR MESSAGES. 
  
  
 ERR1     DIS    3,INCORRECT ENTRY. 
 ERR2     DIS    3,INCORRECT FORMAT FOR MID.
 ERR3     DIS    3,INCORRECT FORMAT FOR EQ ENTRY. 
 ERR4     DIS    3,MID SPECIFIED NOT DOWN.
 ERR5     DIS    3,MID SPECIFIED NOT FOUND. 
 ERR7     DIS    3,MID NOT SPECIFIED. 
 ERR8     DIS    3,INCORRECT OPTION.
 ERR9     DIS    3,INCORRECT EQUIPMENT. 
          SPACE  4
**        K-DISPLAY INFORMATIVE MESSAGE. MESSAGE ALSO GOES
*         TO THE DAYFILE. 
  
  
 MES1     DIS    3, PROCESSING COMPLETE.
          BSSZ   1
          SPACE  4
**        PARAMETER AREA. 
  
  
          BSS    1           COMMAND NAME (FOR *UPC*) 
 PARM     BSS    PARML
          EJECT 
**        COMMON LEFT SCREEN LINES FOR K-DISPLAY. 
  
  
 HDDS     KDL    1,M,(..)    DETERMINE MESSAGE LINE 
 M        EQU    K-1
          ORG    HDDS 
  
  
 HDDS     KDL    1,T,(MACHINE RECOVERY UTILITY) 
 PGDS     KDL    59,T,( OF 99)
          KDL    2,,(EQ   TYPE   UN   DN    FM/PN)
          KDL    40,K,(MIDS SHARING DEVICE) 
          KDL    1,K,(---   ----   --   --   -------   -----------------
,--------------)
 IDDS     KDL    1,M-3,(ID OF DOWNED MACHINE =   )
          KDL    1,M-2,(EQ(S) TO RECOVER =) 
 EQDS     KDL    20,M-2,(ALL  "40BLANKS") 
 EQDS1    KDL    1,M-1,("60BLANKS") 
 MSDS     KDL    1,M,("40BLANKS") 
 KBDS     KDL    1,I,("50BLANKS") 
          CON    0           END OF BUFFER
  
 DFEQ     KDL    20,M-2,(ALL) 
          SPACE  4
**        GENERATE EQUIPMENT DISPLAY BUFFERS FOR K-DISPLAY. 
  
  
 LPG1     VFD    12/0,36/0,12/0  K-DISPLAY CONTROL WORD 
          KDL    52,T,( PAGE XX)
 PGN1     EQU    *-1
 K        SET    K+2
 SDD1     BSS    0
 .A       DUP    PAGLN+2
          KDL    1,K,("60BLANKS") 
 .A       ENDD
          KDL    1,K,()      LAST LINE
          VFD    12/7777B,48/HDDS 
  
  
 LPG2     VFD    12/0,36/0,12/0  K-DISPLAY CONTROL WORD 
          KDL    52,T,( PAGE XX)
 PGN2     EQU    *-1
 K        SET    K+2
 SDD2     BSS    0
 .A       DUP    PAGLN+2
          KDL    1,K,("60BLANKS") 
 .A       ENDD
          KDL    1,K,()      LAST LINE
          VFD    12/7777B,48/HDDS 
          EJECT 
**        RIGHT SCREEN FOR K-DISPLAY. 
  
  
 RPG1     VFD    12/0,36/0,12/0  K-DISPLAY CONTROL WORD 
  
          KDL    1,T,(MREC) 
          KDL    54,T,(PAGE 1 OF 2) 
          KDL    2,H,(PARAMETER DESCRIPTIONS) 
          KDL    2,K,(ID     MID OF DOWNED MACHINE TO PROCESS.) 
          KDL    2,K,(EQ     EST ORDINALS OF DEVICES SHARED BETWEEN THIS
, MACHINE)
          KDL    9,K,(AND DOWNED MACHINE TO PROCESS.  ENTER AS) 
          KDL    9,K,(EQ=XXX,XXX,...,XXX.  THE DEFAULT IS EQ=ALL.)
          KDL    2,K,(OP     MAY BE ENTERED IF 844 RESERVE SITUATIONS OC
,CUR.)
          KDL    9,K,(THE RESPONSE APPLIES ONLY TO THE CURRENT SITUATION
,.) 
          KDL    13,K,(OP=I    IGNORE CURRENT DEVICE.)
          KDL    13,H,(OP=R    CLEAR ALL UNIT RESERVES ON THAT CONTROLLE
,R.)
          KDL    2,H,(K DISPLAY COMMANDS) 
          KDL    2,K,(GO      INITIATE PROCESSING OF DEVICES SPECIFIED.)
          KDL    2,K,(RERUN   REINITIALIZE K-DISPLAY AND RERUN PROGRAM.)
          KDL    2,K,(STOP    TERMINATE PROGRAM.) 
          KDL    2,K,(+       PAGE LEFT DISPLAY FORWARD.) 
          KDL    2,K,(-       PAGE LEFT DISPLAY BACKWARD.)
  
          CHAR   1R[,1R(     REPLACE *[* WITH *(* 
          CHAR   1R],1R)     REPLACE *]* WITH *)* 
          CODE   OTHER
  
          KDL    2,K,([       PAGE RIGHT DISPLAY FORWARD.)
          KDL    2,K,(]       PAGE RIGHT DISPLAY BACKWARD.) 
          CODE   *
          CON    0           END OF BUFFER
          EJECT 
**        PAGE TWO OF RIGHT SCREEN. 
  
  
 RPG2     VFD    12/0,36/0,12/0  K-DISPLAY CONTROL WORD 
  
          KDL    1,T,(MREC) 
          KDL    54,T,(PAGE 2 OF 2) 
          KDL    1,H,(DESCRIPTION OF TABLE ENTRIES.)
          KDL    1,,(EQ)
          KDL    24,K,(EST ORDINAL OF EQUIPMENT.) 
          KDL    1,,(UN)
          KDL    24,K,(UNIT NUMBER.)
          KDL    1,,(DN)
          KDL    24,K,(DEVICE NUMBER.)
          KDL    1,,(FM/PN) 
          KDL    24,K,(FAMILY OR PACK NAME.)
          KDL    1,,(MIDS SHARING DEVICE) 
          KDL    24,K,(MACHINE ID-S OF OTHER MACHINES)
          KDL    24,K,(CURRENTLY SHARING THE DEVICE.) 
          KDL    1,,(* (BESIDE MID))
          KDL    24,K,(THE MACHINE IS DOWN. IT CANNOT BE) 
          KDL    24,K,(DETERMINED IF MACHINES RUNNING IN) 
          KDL    24,K,(SHARED RMS MODE ARE DOWN.) 
          CON    0           END OF BUFFER
          EJECT 
  
          USE    BUFFERS
  
  
**        BUFFERS.
  
  
 ESTB     EQU    *           EST BUFFER 
 MSTB     EQU    ESTB+ESMX*ESTE  MST BUFFER 
 SCRB     EQU    MSTB+MSTBL  SCRATCH BUFFER 
 RFL=     EQU    SCRB+ESMX+1
          TITLE  PRESET.
  
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   (NPAR) = NUMBER OF PARAMETERS. 
*                (MMFP) = *MMFL* WORD FOR THIS MACHINE. 
* 
*         USES   X - 1, 3, 4, 6, 7. 
*                A - 1, 6, 7. 
*                B - 1. 
* 
*         CALLS  PRK. 
* 
*         MACROS EREXIT, MESSAGE, SYSTEM. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1           INITIALIZE B1
          EREXIT ABT         SET ABORT PROCESSOR
          SA1    JOPR        CHECK ORIGIN TYPE
          MX3    -12
          AX1    24 
          BX6    -X3*X1 
          SX4    X6-SYOT
          ZR     X4,PRS1     IF SYSTEM ORIGIN 
          MESSAGE PRSA       * INCORRECT ORIGIN TYPE.*
          EQ     ABT1 
  
 PRS1     SA1    ACTR        SET NUMBER OF PARAMETERS 
          SX6    X1 
          SA6    NPAR 
          SA1    RMMF        READ *MMFL* WORD FROM LOW CORE 
          MX7    1
          BX6    X1 
          SA6    LCSW 
          SA7    MMFP        SET LOW CORE READ
          SYSTEM RSB,R,LCSW 
          SX3    PRSB 
          RJ     PRK         PRESET *K* DISPLAY COORDINATES 
          EQ     PRSX        RETURN 
  
  
 PRSA     DATA   C* INCORRECT ORIGIN TYPE.* 
 PRSB     KDL    *           Y-COORDINATE TABLE 
  
 PRK      HERE               ASSEMBLE Y-COORDINATE PRESET CODE HERE 
          END 
