SUBSYST 
          IDENT  SUBSYST,SUB
          ABS 
          SST 
          ENTRY  SUBSYST
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1 
          TITLE SUBSYST - SUBSYSTEM DISPLAY.
*COMMENT  SUBSYST - SUBSYSTEM DISPLAY.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       SUBSYST - SUBSYSTEM DISPLAY.
* 
*         B. J. OLIPHANT     81/04/18.
*         R. C. SCHMITTER    83/09/15.
*         J. M. MAREK        84/05/16.
          SPACE  4,10 
***       *SUBSYST* IS A CPU UTILITY USED BY THE OPERATOR TO DISPLAY
*         THE STATUS OF THE SUBSYSTEMS SUPPORTED BY THE OPERATING 
*         SYSTEM.  THIS INFORMATION CAN BE DISPLAYED ON A PRINTER 
*         LISTING OR THE *L* DISPLAY.  THE STATUS OF A SUBSYSTEM
*         CAN BE CHANGED BY OPERATOR *L* DISPLAY COMMANDS.
          SPACE  4,15 
***       COMMAND FORMAT. 
* 
* 
*         SUBSYST(LFN,OP)    ORDER DEPENDENT PARAMETERS.
*          OR 
*         SUBSYST(L=LFN,LO=OP)  ORDER INDEPENDENT (KEYWORD = PARAMETER) 
* 
*          WHERE
* 
*         OP = *L*           FORMAT DATA FOR A LINE PRINTER.
* 
*         OP = *D*           FORMAT DATA FOR THE *L* DISPLAY (DEFAULT). 
* 
*         OP = *DL* OR *LD*  FORMAT DATA FOR THE *L* DISPLAY AND FORMAT 
*                            IT FOR A LINE PRINTER WHEN *L.END* IS
*                            ENTERED. 
* 
*         LFN                LIST OUTPUT FILE NAME (DEFAULT = OUTPUT).
*                            THIS PARAMETER VALID ONLY WITH (LO=L). 
* 
*         NOTES  SPECIAL PRIVILEGES REQUIRED. 
*                1. USER MUST BE *SYOT* TO USE *L* DISPLAY (LO=D).
*                2. USER MUST BE *SYOT* OR HAVE SYSTEM ORIGIN 
*                   PRIVILEGES TO GENERATE A LISTING (LO=L).
          SPACE  4,15 
***       DAYFILE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED TO THE JOB AND SYSTEM DAYFILES. 
* 
*         *ARGUMENT ERROR.* 
*                AN INCORRECT PARAMETER WAS ENTERED. (FATAL ERROR)
* 
*         *USER ACCESS NOT VALID.*
*                CALLING JOB WAS NOT SYSTEM ORIGIN. (FATAL ERROR) 
* 
*         *SUBSYST UTILITY COMPLETE.* 
*                INDICATES NORMAL COMPLETION OF PROGRAM.
          SPACE  4,10 
***       *L* DISPLAY MESSAGES. 
* 
*         *COMMAND PROCESSED.*
*                INDICATES COMMAND IS VALID AND CHANGE HAS BEEN MADE. 
* 
*         *CONTROL POINT NOT ALLOWED.*
*                THE SPECIFIED SUBSYSTEM DOES NOT ALLOW THE CONTROL 
*                POINT FOR ITS EXECUTION TO BE CHANGED. 
* 
*         *INCORRECT COMMAND.*
*                THE ENTERED COMMAND IS NOT ONE OF THE DEFINED
*                *SUBSYST* COMMANDS - (ENABLE, DISABLE, OUT, END).
* 
*         *INCORRECT COMMAND FORMAT.* 
*                AN ILLEGAL SEPARATOR OR EXTRA PARAMETERS WERE
*                ENTERED FOR THE COMMAND. 
* 
*         *INCORRECT CONTROL POINT.*
*                THE ENTERED CONTROL POINT NUMBER IS NOT VALID.  IT 
*                MUST BE AN OCTAL NUMBER LESS THAN THE NUMBER OF
*                CONTROL POINTS DEFINED IN THE SYSTEM.
* 
*         *SECURITY UNLOCK REQUIRED.* 
*                IN A SECURED SYSTEM, SECURITY UNLOCK STATUS IS 
*                REQUIRED TO ENABLE RDF.
* 
*         *UNKNOWN SUBSYSTEM.*
*                THE ENTERED SUBSYSTEM NAME IS NOT ONE DEFINED IN 
*                *COMSSSD*. 
* 
*         *UTILITY COMPLETE.* 
*                INFORMATIVE MESSAGE ISSUED AFTER *END*.
          SPACE  4,25 
***       AVAILABLE *L* DISPLAY COMMANDS. 
* 
*         L.END              TERMINATES THE UTILITY.  IF *OP=L* WAS 
*                            SPECIFIED, A LISTING WILL BE ROUTED TO 
*                            A PRINTER. 
* 
*         L.OUT              ROUTES A LISTING OF THE DISPLAY TO A 
*                            PRINTER. 
* 
*         L.ENABLE,SUB.      SETS STATUS OF SUBSYSTEM *SUB* TO ENABLED. 
*         L.ENABLE,SUB,CP.   ADDITIONALLY SETS THE CONTROL POINT WHERE
*                            THE SUBSYSTEM MUST EXECUTE.
* 
*         L.DISABLE,SUB.     SETS STATUS OF SUBSYSTEM *SUB* TO DISABLED 
*         L.DISABLE,SUB,CP.  ADDITONALLY SETS THE CONTROL POINT WHERE 
*                            THE SUBSYSTEM MUST EXECUTE.
* 
*         L.+                DISPLAY THE NEXT PAGE OF SUBSYSTEMS.  WHEN 
*                            THE CURRENT PAGE IS THE LAST PAGE, THE 
*                            NEXT PAGE IS THE FIRST PAGE. 
* 
*         L.-                DISPLAY THE FIRST PAGE OF SUBSYSTEMS.
          SPACE  4,15 
***       OUTPUT FORMAT.
* 
*          SUBSYST - SUBSYSTEM STATUS.   84/05/16. 15.04.37.
* 
*                         SUBSYSTEMS
* 
*                     REQUIRED       EJT
*           NAME   CONTROL POINT   ORDINAL   STATUS 
* 
*           IAF          1            10    ENABLED 
*           RHF                             DISABLED
* 
* 
*         NOTE - THE FIRST TWO LINES ONLY APPEAR WHEN THE DATA IS 
*         FORMATTED FOR A LISTING.
          SPACE  4,10 
***       DEFINITION COMMON DECKS.
* 
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMSDSP 
*CALL     COMSEVT 
*CALL     COMSSFM 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          SPACE  4,10 
*         MACROS. 
 SUBSYST  SPACE  4,10 
**        SUBSYST - GENERATE SUBSYSTEM TABLE. 
* 
*         SUBSYST  NAME,ID,PR,PP,AUTO,DEF,DCP,CP,PROC,ABT 
* 
*         ENTRY  *NAME* = THREE CHARACTER SUBSYSTEM NAME. 
*                *ID* = SUBSYSTEM ID. 
*                *CP* = *YES* IF CONTROL POINT ALLOWED ON *ENABLE*
*                       AND *DISABLE*.
* 
*T        42/ NAME (LEFT JUSTIFIED), 18/ FLAG 
* 
*         FLAG = 1, IF CONTROL POINT ALLOWED ON *ENABLE/DISABLE*. 
*              = 0, IF CONTROL POINT NOT ALLOWED. 
  
  
          PURGMAC  SUBSYST
  
 SUBSYST  MACRO  NM,ID,PT,PP,AU,DF,DC,CP,PR,AB
 .SUB     RMT 
 .1       SET    TSSN 
          ORG    .1+MXSI-ID 
          LOC    MXSI-ID
          VFD    42/3L_NM 
 .A       IFC    EQ,$CP$YES$
          VFD    18/1 
 .A       ELSE
          VFD    18/0 
 .A       ENDIF 
 .SUB     RMT 
 SUBSYST  ENDM
          TITLE  ASSEMBLY CONSTANTS.
****      ASSEMBLY CONSTANTS. 
  
 CBUFL    EQU    5           COMMAND BUFFER LENGTH
 HLIN     EQU    5           NUMBER OF LINES IN HEADER
 INPC     EQU    0           *L* DISPLAY INPUT COMPLETE STATUS
 LBIL     EQU    LCOM/2      *L* DISPLAY INPUT BUFFER LENGTH
 LBUFL    EQU    LDSY        *L* DISPLAY OUTPUT BUFFER LENGTH 
 LLIN     EQU    22D         NUMBER OF LINES ON *L* DISPLAY 
 LDAT     EQU    LLIN-HLIN-3 NUMBER OF DATA LINES ON THE *L* DISPLAY
 MBUFL    EQU    3           MESSAGE BUFFER LENGTH
.NSS      SET    MXSI-LSSI   MAXIMUM NUMBER OF SUBSYSTEMS SUPPORTED 
 OBUFL    EQU    101B        OUTPUT BUFFER LENGTH 
 XCDT     EQU    9           X - COORDINATE FOR *L* DISPLAY 
 YCDT     EQU    2           Y - COORDINATE FOR *L* DISPLAY 
  
****
          TITLE  TABLES AND BUFFER DEFINITIONS. 
          ORG    111B 
 SUB      BSS    0
          SPACE  4,10 
*         DAYFILE MESSAGES. 
  
 DASC     DATA   C* SUBSYST UTILITY COMPLETE.*
 ERAR     DATA   C* ARGUMENT ERROR.*
 ERIU     DATA   C* USER ACCESS NOT VALID.* 
          SPACE  4,10 
*         *L* DISPLAY MESSAGES. 
  
 MESA     DATA   28CINCORRECT COMMAND.
 MESB     DATA   28CUNKNOWN SUBSYSTEM.
 MESC     DATA   28CINCORRECT CONTROL POINT.
 MESD     DATA   28CINCORRECT COMMAND FORMAT. 
 MESE     DATA   28CCONTROL POINT NOT ALLOWED.
 MESF     DATA   28CCOMMAND PROCESSED.
 MESG     DATA   28CUTILITY COMPLETE. 
 MESH     DATA   28C
 MESI     DATA   28CSECURITY UNLOCK REQUIRED. 
          SPACE  4,10 
*         FLAG DEFINITIONS. 
  
 LFLG     CON    0           *L* DISPLAY FLAG 
 OSSM     CON    0           OPERATING SYSTEM SECURITY MODE 
 PFLG     CON    0           PRINTER OUTPUT FLAG
 SYOF     CON    0           SYSTEM ORIGIN FLAG 
          SPACE  4,10 
*         *L* DISPLAY BUFFER FIRST WORD.
* 
*         T,     12/ N ,1/ S ,1/ F ,46/ 
* 
*         N      SIZE OF DISPLAY BUFFER.
*         S      CHARACTER SIZE.
*         F      DATA FORMAT BIT. 
  
  
 LDIW     VFD    12/LBIL,48/0   INPUT BUFFER FIRST WORD 
 LDSW     VFD    12/LBUFL,48/0  OUTPUT BUFFER FIRST WORD
 ROLL     SPACE  4,10 
*         ROLLOUT PARAMETER BLOCK.
  
 ROLL     VFD    30/0,18/LINE,12/10 
 ROTB     SPACE  4,10 
*         ROUTE PARAMETER BLOCK.
  
 ROTB     DATA   6LOUTPUT 
          BSSZ   DPBL-1 
          SPACE  4,10 
*         *SFM* PARAMETER BLOCK.
  
  
 SFMB     VFD    12/RSSF,12/0,12/.NSS,6/0,18/WBUFA
          CON    0           END OF *SFM* PARAMETER BLOCK 
          SPACE  4,5
*         SSJ= PARAMETER BLOCK. 
  
  
 SSJ=     BSS    0           SSJ= ENTRY POINT 
          BSSZ   SSJL        SSJ= PARAMETER BLOCK 
 FETS     SPACE  4,10 
*         FET DEFINITIONS.
  
 O        BSS    0           PRINTER OUTPUT FILE BUFFER 
 OUTPUT   FILEB  OBUF,OBUFL,(FET=6) 
          SPACE  4,10 
 SUB$     EQU    1           ASSEMBLE *SUBSYST* MACRO CALLS 
*CALL     COMSSSD 
 SUBSYST  TITLE  MAIN PROGRAM.
**        SUBSYST - MAIN PROGRAM. 
* 
*         USES   X - 1, 5.
*                A - 1. 
*                B - 7. 
* 
*         CALLS  FDB, PKB, PRS, RSD.
* 
*         MACROS DSDINP, ENDRUN, MESSAGE, ROUTE, WRITER.
  
  
 SUBSYST  BSS    0           ENTRY
          RJ     PRS         PRESET ROUTINE 
          RJ     RSD         READ SUBSYSTEM DATA
          SA1    LFLG 
          ZR     X1,SUB1     IF ONLY PRINTER OUTPUT SELECTED
          SX5    B0+
          SX6    MESH        BLANK MESSAGE
          RJ     FDB         FORMAT DISPLAY 
          RJ     PKB         PROCESS KEYBOARD 
          DSDINP LBFI,C      DROP *L* DISPLAY 
          EQ     SUB2        COMPLETE 
  
 SUB1     SX5    O
          RJ     FDB         FORMAT LISTING 
          WRITER O,R
          ROUTE  ROTB,R 
 SUB2     MESSAGE  DASC,0,R  * SUBSYST UTILITY COMPLETE.* 
          ENDRUN
          TITLE  SUBROUTINES. 
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         ENTRY  (X2) = ADDRESS OF ERROR MESSAGE. 
* 
*         EXIT   MESSAGE ISSUED IN SYSTEM AND USER DAYFILE. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ERR      BSS    0           ENTRY
          MESSAGE X2,0,R
          ABORT 
 FDB      SPACE  4,10 
**        FDB - FORMAT DISPLAY BUFFER.
* 
*         ENTRY  (X5) = 0, IF FORMATTING FOR *L* DISPLAY. 
*                      .EQ. FET ADDRESS OF OUTPUT FILE IF FOR PRINTER.
*                (X6) = ADDRESS OF DISPLAY MESSAGE. 
*                (HBUF) = FWA OF FORMATTED SUBSYSTEM DATA.
* 
*         USES   X - 1, 2, 3, 4, 6, 7.
*                A - 4, 7.
*                B - 2, 3, 4, 6.
* 
*         CALLS  FLB, WSB.
* 
*         MACROS DSDOUT.
  
  
 FDB      SUBR               ENTRY/EXIT 
          RJ     WSB         WRITE SUBSYSTEM INFORMATION BUFFER 
  
*         SET UP PARAMETERS FOR *FLD*.
  
          SB2    LBUF+1      FWA OF BUFFER TO RECEIVE CONVERTED DATA
          SB6    LBUF+LBUFL  LWA+1 OF BUFFER TO RECEIVE CONVERTED DATA
          SX1    HBUF        FWA OF UNCONVERTED DATA FOR PRINTER
          SX6    A0-1        LWA OF UNCONVERTED DATA
          NZ     X5,FDB1     IF FORMATTING FOR PRINTER
          SA4    LDSW        INITIALIZE *L* DISPLAY BUFFER
          SX1    HBUF1       FWA OF BUFFER FOR *L* DISPLAY
          BX7    X4 
          SA7    B2-B1
          SB3    XCDT        SET X-COORDINATE FOR *L* DISPLAY 
          SB4    YCDT        SET Y-COORDINATE FOR *L* DISPLAY 
 FDB1     SX3    B1          *C* DISPLAY FORMAT 
          BX2    X5 
          RJ     FLB         FORMAT DATA FOR *L* DISPLAY
          NZ     X5,FDBX     IF FORMATTING FOR PRINTER
          DSDOUT LBUF        DISPLAY *L* DISPLAY BUFFER 
          EQ     FDBX        RETURN 
 PKB      SPACE  4,10 
**        PKB - PROCESS KEYBOARD. 
* 
*         PROCESSES INPUT FROM OPERATOR UNTIL *L.END* IS ENTERED. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 7. 
* 
*         CALLS  DXB, FDB, POP, RSD, USB. 
* 
*         MACROS DSDINP, ROLLOUT, ROUTE, SYSTEM, WRITER.
  
  
 PKB      SUBR               ENTRY/EXIT 
          SA1    LDIW        INITIALIZE THE INPUT BUFFER CONTROL WORD 
          MX6    0           ENSURE AN END OF LINE IN COMMAND BUFFER
          SA6    LBFI+LBIL+1
          BX6    X1 
          SA6    LBFI 
          SB7    B0          CLEAR REFRESH REQUIRED 
 PKB1     DSDINP LBFI        REQUEST *L* DISPLAY INPUT
          SA2    LBFI        CHECK FOR INPUT
          MX0    -12
          BX6    -X0*X2 
          AX6    1           IGNORE COMPLETION BIT
          ZR     X6,PKB3     IF INPUT 
          ERRNZ  INPC        CODE DEPENDS ON VALUE
          ZR     B7,PKB2     IF REFRESH IS NOT REQUIRED 
          RJ     RSD         READ SUBSYSTEM DATA
          SA1    WSBE        GET LAST ERROR MESSAGE 
          SX6    X1+
          RJ     FDB         FORMAT DISPLAY BUFFER
 PKB2     ROLLOUT  ROLL      WAIT FOR INPUT 
          SB7    B1          SET REFRESH REQUIRED 
          EQ     PKB1        INPUT COMMAND
  
 PKB3     SX6    B0+         CLEAR STRING BUFFER
          SB2    80 
 PKB4     SA6    USBB+B2
          SB2    B2-1 
          PL     B2,PKB4     IF MORE TO CLEAR 
  
*         DETERMINE COMMAND.
  
          SB2    LBFI+1      UNPACK COMMAND 
          RJ     USB
          RJ     POP         GET FIRST PARAMETER
          ZR     X6,PKB19    IF NO COMMAND VERB 
          SB2    B0          INITIALIZE TABLE INDEX 
          MX0    42 
 PKB5     SA3    TLDC+B2
          ZR     X3,PKB24    IF END OF TABLE
          BX2    X3-X6
          BX2    X0*X2
          SB2    B2+1        ADVANCE INDEX
          NZ     X2,PKB5     IF NO MATCH
          SB3    X3+
          JP     B3          PROCESS COMMAND
  
*         PROCESS *ENABLE*. 
  
 PKB6     SX7    B0+         SET ENABLE STATUS
          EQ     PKB8        CONTINUE 
  
*         PROCESS *DISABLE*.
  
 PKB7     SX7    1           SET DISABLE STATUS 
 PKB8     SA7    PKBB 
          SX2    X1-1R, 
          NZ     X2,PKB21    IF SEPARATOR NOT *,* 
  
*         DETERMINE SUBSYSTEM.
  
          RJ     POP         GET SUBSYSTEM NAME 
          SB2    MXSI-LSSI-1 INITIALIZE TABLE INDEX 
          MX0    18 
 PKB9     NG     B2,PKB22    IF END OF TABLE
          SA3    TSSN+B2
          BX4    X0*X3
          BX2    X4-X6
          SB2    B2-B1
          NZ     X2,PKB9     IF NO MATCH
          SX7    MXSI-1      SAVE SUBSYSTEM ID
          SX2    B2 
          IX7    X7-X2
          SA7    PKBA 
          SX6    B0+
          SX4    X1-1R, 
          ZR     X4,PKB10    IF SEPARATOR IS A *,*
          SX4    X1-1R. 
          ZR     X4,PKB13    IF END OF COMMAND
          ZR     X1,PKB13    IF END OF COMMAND
          EQ     PKB21       PROCESS ERROR
  
*         PROCESS CONTROL POINT.
  
 PKB10    BX2    -X0*X3 
          ZR     X2,PKB25    IF CONTROL POINT NOT ALLOWED 
          RJ     POP         GET CONTROL POINT NUMBER 
          SX4    X1-1R. 
          MX0    6
          ZR     X4,PKB11    IF END OF COMMAND
          NZ     X1,PKB21    IF ERROR 
 PKB11    SX3    1RB         APPEND *B* TO CONTROL POINT
          LX3    -12
          LX0    -12
          BX7    X0*X6
          NZ     X7,PKB23    IF THREE DIGIT CONTROL POINT 
          LX0    6
          BX7    X0*X6
          ZR     X7,PKB12    IF ONE DIGIT CONTROL POINT 
          LX3    -6 
 PKB12    BX5    X6+X3
          SB7    B0          SET OCTAL CONVERSION 
          RJ     DXB         CONVERT TO OCTAL 
          NZ     X4,PKB23    IF ERROR 
          SA2    NCPT        CHECK FOR VALID CONTROL POINT NUMBER 
          IX3    X6-X2
          PL     X3,PKB23    IF CONTROL POINT TOO LARGE 
          SX6    X6+40B 
          LX6    12          POSITION CONTROL POINT NUMBER
  
*         CALL *SFM* TO CHANGE SUBSYSTEM STATUS.
  
 PKB13    SA1    PKBA        ADD SUBSYSTEM ID 
          BX6    X1+X6
          SA1    PKBB        ADD ENABLE/DISABLE FLAG
          LX1    18 
          BX6    X1+X6
          SA6    PKBC        SAVE *SFM* PARAMETER WORD
          SX1    RDSI 
          BX1    X1-X6
          NZ     X1,PKB13.1  IF NOT *ENABLE,RDF.* 
          SA1    OSSM 
          ZR     X1,PKB13.1  IF SYSTEM NOT SECURED
          MX6    1
          SA6    PKBE 
          SYSTEM RSB,R,PKBD  DETERMINE SECURITY UNLOCK STATUS 
          SA1    PKBE 
          LX1    59-57
          PL     X1,PKB26    IF NOT SECURITY UNLOCK 
 PKB13.1  SYSTEM SFM,R,PKBC,SUSF*100B 
          RJ     RSD         READ SUBSYSTEM DATA
          SX6    MESF        *COMMAND PROCESSED.* 
          EQ     PKB20       WAIT FOR NEXT INPUT
  
*         PROCESS *OUT*.
  
 PKB14    SX3    X1-1R. 
          ZR     X3,PKB15    IF END OF COMMAND
          NZ     X1,PKB21    IF ERROR 
 PKB15    SX5    O           FORMAT LISTING 
          RJ     FDB
          WRITER O,R
          SA1    ROTB        CLEAR COMPLETE BIT 
          MX0    42 
          BX6    X0*X1
          SA6    A1 
          ROUTE  ROTB,R 
          SX6    MESF        *COMMAND PROCESSED.* 
          EQ     PKB20       WAIT FOR NEXT INPUT
  
*         PROCESS *END*.
  
 PKB16    SX3    X1-1R. 
          ZR     X3,PKB17    IF END OF COMMAND
          NZ     X1,PKB21    IF ERROR 
 PKB17    SA1    PFLG 
          ZR     X1,PKB18    IF NO PRINTER OUTPUT REQUESTED 
          SX5    O
          RJ     FDB         FORMAT LISTING 
          WRITER O,R
          SA1    ROTB        CLEAR COMPLETE BIT 
          MX0    42 
          BX6    X0*X1
          SA6    A1 
          ROUTE  ROTB,R 
 PKB18    SX5    B0+
          SX6    MESG        *UTILITY COMPLETE.*
          RJ     FDB
          EQ     PKBX        RETURN 
  
*         PROCESS PAGING COMMANDS.
  
 PKB19    SB3    X1-1R+ 
          NG     B3,PKB24    IF NEITHER *+* NOR *-* 
          GT     B3,B1,PKB24 IF NEITHER *+* NOR *-* 
          SA2    WSBC        ALTER PAGING CONTROL WORD
          LX1    59          FORM MASK TO USE OR IGNORE *NEXT* ORDINAL
          AX1    29 
          UX2,B3 X2          SAVE MAXIMUM LINE COUNT
          BX2    X2*X1
          AX2    30 
          PX6    X2,B3       RESTORE MAXIMUM LINE COUNT 
          SA6    A2+
          SX6    MESH        CLEAR MESSAGE LINE 
*         EQ     PKB20       WAIT FOR NEXT INPUT
  
*         ROLLOUT UNTIL NEXT *L* DISPLAY INPUT. 
  
 PKB20    SX5    B0          FORMAT DISPLAY 
          RJ     FDB
          SB7    B0          CLEAR REFRESH REQUIRED 
          EQ     PKB1        CHECK FOR INPUT
  
 PKB21    SX6    MESD        *INCORRECT COMMAND FORMAT.*
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
 PKB22    SX6    MESB        *UNKNOWN SUBSYSTEM.* 
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
 PKB23    SX6    MESC        *INCORRECT CONTROL POINT.* 
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
 PKB24    SX6    MESA        *INCORRECT COMMAND.* 
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
 PKB25    SX6    MESE        *CONTROL POINT NOT ALLOWED.* 
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
 PKB26    SX6    MESI        *SECURITY UNLOCK REQUIRED.*
          EQ     PKB20       DISPLAY ERROR AND WAIT FOR INPUT 
  
  
 PKBA     CON    0           SUBSYSTEM ID 
 PKBB     CON    0           ENABLE/DISABLE FLAG
 PKBC     CON    0           *SFM* PARAMETER WORD 
 PKBD     VFD    12/,12/1,18/SSTL,18/PKBE 
 PKBE     VFD    1/1,59/0    SECURITY UNLOCK STATUS 
 NCPT     VFD    1/1,59/0    NUMBER OF CONTROL POINTS 
 TLDC     SPACE  4,10 
**        TABLE OF *L* DISPLAY COMMANDS.
* 
*T        42/ COMMAND, 18/ ADDRESS
  
 TLDC     BSS    0
          VFD    42/6LENABLE,18/PKB6
          VFD    42/7LDISABLE,18/PKB7 
          VFD    42/3LOUT,18/PKB14
          VFD    42/3LEND,18/PKB16
          CON    0           END OF TABLE 
 TSSN     SPACE  4,10 
**        TABLE OF SUBSYSTEM NAMES. 
* 
*T        42/ NAME (LEFT JUSTIFIED), 18/ FLAG 
* 
*         FLAG = 1, IF CONTROL POINT ALLOWED ON *ENABLE/DISABLE*. 
*              = 0, IF CONTROL POINT NOT ALLOWED. 
  
  
 TSSN     BSS    0           TABLE OF SUBSYSTEM NAMES 
          LIST   D
 .SUB     HERE
          LIST   *
          ORG    TSSN+MXSI-LSSI 
 RSD      SPACE  4,15 
**        RSD - RETURN SUBSYSTEM DATA.
* 
*         ENTRY  (SFMB) = *SFM* PARAMETER BLOCK SET UP
*                         FOR *RSSF* SUBFUNCTION. 
* 
*         EXIT   (HTIM) = THE TIME AT WHICH THE DATA WAS READ.
*                (WBUFA - WBUFA+.NSS-1) = SUBSYSTEM INFORMATION.
* 
*         MACROS CLOCK, DATE, SYSTEM. 
  
  
 RSD      SUBR               ENTRY/EXIT 
          SYSTEM SFM,R,SFMB,RSDF*100B  RETURN SYSTEM DATA 
          DATE   HDAT 
          CLOCK  HTIM        SET TIME IN BUFFER FOR PRINTER OUTPUT
          EQ     RSDX        RETURN 
 WSB      SPACE  4,15 
**        WSB - WRITE SUBSYSTEM INFORMATION BUFFER. 
* 
*         ENTRY  (X5) = PRINTER/*L* DISPLAY FLAG. 
*                       0 = *L* DISPLAY FORMAT. 
*                (X6) = ADDRESS OF DISPLAY MESSAGE. 
*                (SFMB) = 24/, 12/NUMBER OF SUBSYSTEMS, 24/.
*                (WBUFA - WBUFA+.NSS-1) = SUBSYSTEM DATA FROM *SFM*.
* 
*         EXIT   (A0) = LWA+1 OF DATA IN *WBUF*.
*                (WBUF - (A0)-1) = FORMATTED SUBSYSTEM DATA.
* 
*         USES   X - 0, 1, 2, 4, 6. 
*                A - 0, 1, 2, 4, 6. 
*                B - 5, 6, 7. 
* 
*         CALLS  COD, SFN.
* 
*         MACROS MOVE.
  
  
 WSB      SUBR               ENTRY/EXIT 
          SA4    WSBC        GET *L* DISPLAY PAGING CONTROL WORD
          SA1    SFMB        GET NUMBER OF WORDS RETURNED 
          ZR     X5,WSB1     IF *L* DISPLAY FORMAT
          SA4    A4+1        GET PRINTER PAGING CONTROL WORD
 WSB1     SA6    WSBE        SAVE ERROR MESSAGE ADDRESS 
          SA0    WBUF        FWA TO RETURN REFORMATTED BUFFER 
          MX0    -12
          LX1    11-35
          UX4,B7 X4          SET MAXIMUM NUMBER OF LINES - 1 TO FORMAT
          BX1    -X0*X1 
          SB6    X4+         SUBSYSTEM DATA BUFFER INDEX
          SB5    X1+         NUMBER OF SUBSYSTEMS 
 WSB2     SA2    TSSN+B6     GET SUBSYSTEM NAME 
          MX0    18 
          BX1    X0*X2
          ZR     X1,WSB6     IF NO SUBSYSTEM NAME 
          NG     B7,WSB7     IF NO ROOM TO DISPLAY SUBSYSTEM DATA 
          RJ     SFN
          LX6    -12
          SA6    A0+
          SA0    A0+B1       INCREMENT RETURN BUFFER
          SA4    WBUFA+B6    GET REQUIRED CONTROL POINT 
          SA2    WSBA        PRESET CONTROL POINT TO BLANKS 
          MX0    -6 
          LX4    -12
          BX6    X2 
          BX1    -X0*X4      CONTROL POINT
          ZR     X1,WSB3     IF NO CONTROL POINT
          RJ     COD
 WSB3     SA4    WBUFA+B6    GET EJTO 
          SA2    WSBA        PRESET EJTO TO BLANKS
          LX6    24 
          SA6    A0          STORE REQUIRED CONTROL POINT 
          SA0    A0+B1       INCREMENT RETURN BUFFER
          MX0    -12
          BX1    -X0*X4      EJT ORDINAL
          BX6    X2 
          ZR     X1,WSB4     IF NO EJT ORDINAL
          RJ     COD
 WSB4     SA4    WBUFA+B6    GET ENABLE/DISABLE STATUS
          SA6    A0          STORE EJTO 
          SA0    A0+B1
          SA1    WSBB        PRESET STATUS TO *DISABLED*
          LX4    59-18
          SA2    A1+B1
          NG     X4,WSB5     IF SUBSYSTEM DISABLED
          SA1    A2+B1       SET STATUS TO *ENABLED*
          SA2    A1+B1
 WSB5     BX6    X1 
          SA6    A0 
          SA0    A0+B1       INCREMENT RETURN BUFFER
          BX6    X2 
          SA6    A0 
          SA0    A0+B1       INCREMENT RETURN BUFFER
          SB7    B7-1        DECREMENT LINE LIMIT 
 WSB6     SB6    B6+B1       INCREMENT BUFFER INDEX 
          LT     B6,B5,WSB2  IF MORE SUBSYSTEMS TO PROCESS
          SB6    B0          FIRST SUBSYSTEM FOR NEXT PAGE
 WSB7     NZ     X5,WSBX     IF FORMATTING FOR PRINTER
          SB4    B7+1        CLEAR UNUSED LINES AND *MORE* LINE 
 WSB8     MOVE   5,WSBD,A0
          SB4    B4-1        DECREMENT LINE COUNT 
          SA0    A0+5        INCREMENT RETURN BUFFER
          PL     B4,WSB8     IF ALL DISPLAY LINES ARE NOT FILLED
          SA2    WSBC        GET *L* DISPLAY PAGING CONTROL WORD
          SA1    =4AMORE
          SX6    B6 
          MX0    42 
          LX2    -30
          BX2    X0*X2
          BX6    X2+X6       SET *NEXT* ORDINAL 
          LX6    30 
          SA6    A2 
          BX6    X1 
          ZR     B6,WSB9     IF LAST PAGE 
          SA6    A0-5        SET *MORE* IN BUFFER 
 WSB9     SA2    WSBE        SET ERROR MESSAGE IN BUFFER
          MOVE   MBUFL,X2,A0
          SA1    LBFI+1      SET COMMAND IN BUFFER
          SA0    A0+MBUFL 
 WSB10    MX2    -12
          BX6    X1 
          BX2    -X2*X1 
          SA1    A1+B1
          SA6    A0 
          SA0    A0+B1       LWA+1 OF BUFFER FOR *L* DISPLAY
          NZ     X2,WSB10    IF NOT END OF COMMAND
          EQ     WSBX        RETURN 
  
  
 WSBA     CON    10H
 WSBB     DATA   C*    DISABLED*
          DATA   C*    ENABLED* 
 WSBC     SPACE  4,10 
**        WSBC - PAGING CONTROL WORDS.
* 
*T        VFD    12/   LC   ,18/  NEXT ORDINAL,30/    CURRENT ORDINAL 
* 
*                LC = LINE COUNT - 1 + 2000B. 
  
  
 WSBC     VFD    12/1777B+LDAT,18/0,30/0   *L* DISPLAY PAGING WORD
          VFD    12/1777B+2000B,18/0,30/0  PRINTER PAGING WORD
  
  
 WSBD     DATA   48C
 WSBE     CON    MESH        TEMPORARY FOR ERROR MESSAGE ADDRESS
          SPACE  4,5
*         COMMON DECKS. 
  
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
          LIST   X
*CALL     COMCFLD 
          LIST   *
*CALL     COMCLFM 
*CALL     COMCMVE 
*CALL     COMCPOP 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCWOD 
*CALL     COMCWTC 
*CALL     COMCWTO 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  BUFFER AREA. 
          USE    BUFFERS
  
*         BUFFER AREA.
  
 HBUF     BSS    0           HEADER FOR *SUBSYST* DISPLAY 
  
          DATA   40H SUBSYST - SUBSYSTEM STATUS.
 HDAT     BSSZ   1
 HTIM     BSSZ   1
          CON    0
          DATA   C* * 
 HBUF1    DATA   C*                SUBSYSTEMS*
          DATA   C* * 
          DATA   C*            REQUIRED       EJT*
          DATA   C*  NAME   CONTROL POINT   ORDINAL   STATUS* 
          DATA   C* * 
  
 WBUF     BSS    .NSS*5      WORKING BUFFER 
 .1       MAX    *,WBUF+LDAT*5+5+MBUFL+CBUFL
 WBUFA    EQU    .1          *SFM* RETURNS DATA HERE
 LBUF     EQU    WBUFA+.NSS  *L* DISPLAY OUTPUT BUFFER
 LBFI     EQU    LBUF+LBUFL  *L* DISPLAY INPUT BUFFER 
 OBUF     EQU    LBFI+LBIL+2 OUTPUT FILE BUFFER 
 PRS      TITLE  PRESET.
**        PRS - PRESET ROUTINE. 
* 
*         ENTRY  COMMAND ARGUMENT LIST AT RA+2 (ARGR) 
*                IN OPERATING SYSTEM FORMAT.
* 
*         EXIT   (B1) = 1.
*                (PFLG) = 1, IF PRINT FILE REQUESTED. 
*                (LFLG) = 1, IF *L* DISPLAY REQUESTED.
* 
*         ERROR  TO *ERR*, IF ARGUMENT ERROR OR USER ACCESS NOT VALID.
*                (X2) = FWA ERROR MESSAGE.
  
  
 PRS9     SYSTEM RSB,R,PRSC  SET NUMBER OF CONTROL POINTS 
          SA1    NCPT 
          MX0    -12
          LX1    -36
          BX6    -X0*X1 
          SX6    X6+B1
          SA6    A1 
          GETSSM OSSM        GET SYSTEM SECURITY MODE 
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1           B1 = 1.
          GETSPS SYOF        CHECK FOR SYSTEM ORIGIN PRIVILEGES 
          SA1    SYOF 
          ZR     X1,PRS1     IF SYSTEM ORIGIN PRIVILEGES
          SX2    ERIU        *USER ACCESS NOT VALID.* 
          EQ     ERR         ABORT
  
*         PROCESS ARGUMENT LIST.
  
 PRS1     SB2    CCDR        UNPACK COMMAND 
          RJ     USB
          SA1    A6          ASSURE TERMINATOR CHARACTER
          SX6    1R.
          SA6    X1+B1
          SA2    PRSB        SET SEPARATOR MASK 
          SB2    60          SET MAXIMUM NON-DELIMITER DISPLAY CODE 
          SB7    PRS8        SET EXIT FOR TERMINATOR CHARACTER
          RJ     FNB         FIND NON-BLANK CHARACTER 
  
*         SKIP PROGRAM NAME.
  
          SB7    PRS6        SET EXIT FOR TERMINATOR CHARACTER
 PRS4     RJ     FNB         FIND NON-BLANK CHARACTER 
          SB4    B5-B2
          LX4    X2,B5
          PL     B4,PRS5     IF SEPARATOR CHARACTER 
          PL     X4,PRS4     IF NOT SEPARATOR CHARACTER 
 PRS5     SB3    TARG        FWA ARGUMENT EQUIVALENCE TABLE 
          SB2    TARGL       LENGTH ARGUMENT TABLE
          SB4    PRSA        ADDRESS TO PLACE DATA
          RJ     CPA         CONVERT POSITIONAL ARGUMENTS 
          NG     B5,PRS8     IF ARGUMENT ERROR
          PL     X1,PRS6     IF NO ARGUMENTS PROCESSED
          SX6    B5          SET LWA OF ARGUMENTS 
          SA6    USBC 
          SB6    PRSA        FWA OF ARGUMENTS 
          RJ     ARM         PROCESS ARGUMENTS
          NZ     X1,PRS8     IF ERROR 
          SA1    O           SET FILE NAME IN ROUTE BLOCK 
          MX0    42 
          BX6    X0*X1
          SA6    ROTB 
  
*         DETERMINE LIST OPTIONS. 
  
 PRS6     SA1    LO          GET LIST OPTION
          SA2    TLOP-1 
          MX0    6
          SB4    A2+         SAVE ADDRESS OF ARGUMENT TABLE 
 PRS7     BX3    X0*X1       PROCESS NEXT CHARACTER FROM LIST OPTION
          ZR     X3,PRS9     IF ALL OPTIONS PROCESSED 
 PRS7.1   SA2    A2+B1       SEARCH ARGUMENT TABLE
          ZR     X2,PRS8     IF LIST OPTION NOT DEFINED IN TABLE
          BX4    X0*X2
          BX4    X4-X3
          NZ     X4,PRS7.1   IF MATCH NOT FOUND 
          SX6    B1          SET FLAG FOR THIS OPTION 
          SA6    X2 
          SX3    A2-TLOP
          LX1    6
          SA2    B4          INITIALIZE TABLE ADDRESS 
          NZ     X3,PRS7     IF NOT LO=D
          MX4    -12
          SA3    JOPR        CHECK FOR SYSTEM ORIGIN
          LX3    0-24 
          BX3    -X4*X3 
          SX3    X3-SYOT
          ZR     X3,PRS7     IF SYSTEM ORIGIN JOB 
          SX2    ERIU        *USER ACCESS NOT VALID.* 
          EQ     ERR         ABORT
  
 PRS8     SX2    ERAR        *ARGUMENT ERROR.*
          EQ     ERR         ABORT
  
 PRSA     BSS    100
  
 PRSB     CON    40000000000033127777B  SEPARATOR MASK
 PRSC     VFD    12/,12/1,18/NCPL,18/NCPT 
  
  
**        ASSUMED VALUES FOR LIST OPTIONS.
  
  
 LO       CON    0LD         SELECTED LIST OPTION (DEFAULT = *D*) 
          SPACE  4,10 
**        ARGUMENT EQUIVALENCE TABLE. 
* 
*         THIS TABLE IS REQUIRED BY ARGUMENT PROCESSOR *COMCARM*. 
  
  
 TARG     BSS    0
 L        ARG    O,O,0,0     OUTPUT FILE NAME 
 LO       ARG    LO,LO,0,0   LIST OPTIONS 
          ARG                END OF ARGUMENT TABLE
 TARGL    EQU    *-TARG-1    LENGTH OF ARGUMENT TABLE 
 TLOP     SPACE  4,15 
**        TLOP - TABLE OF LIST OPTIONS. 
* 
*T,       42/ OPTION,18/ ADDR 
* 
*         (ADDR) WILL BE SET NON-ZERO BY PRS IF OPTION IS SELECTED. 
  
  
 TLOP     BSS    0
          VFD    42/0LD,18/LFLG  SELECT *L* DISPLAY 
          VFD    42/0LL,18/PFLG  SELECT LINE PRINTER
          CON    0           END OF TABLE 
 FNB      SPACE  4,15 
**        FNB - FIND NON-BLANK CHARACTER. 
* 
*         ENTRY  (B6) = NEXT CHARACTER ADDRESS. 
*                (B7) = EXIT ADDRESS, IF TERMINATOR ENCOUNTERED.
* 
*         EXIT   (X1) = (B5) = NEXT NON-BLANK CHARACTER.
*                (B6) = NEXT CHARACTER ADDRESS (UPDATED). 
*                EXIT IS MADE TO (B7), IF TERMINATOR ENCOUNTERED. 
* 
*         USES   X - 1, 4.
*                A - 1. 
*                B - 5, 6.
  
  
 FNB      SUBR               ENTRY/EXIT 
 FNB1     SA1    B6          GET NEXT CHARACTER 
          SB6    B6+B1
          SX4    X1-1R
          ZR     X4,FNB1     IF BLANK CHARACTER 
          SB5    X1+
          SX4    X1-1R. 
          ZR     X4,FNB2     IF TERMINATOR CHARACTER
          SX4    X1-1R) 
          NZ     X4,FNBX     IF NOT TERMINATOR CHARACTER, RETURN
 FNB2     JP     B7          TERMINATOR CHARACTER 
          TITLE  PRESET COMMON DECKS. 
*CALL     COMCARM 
*CALL     COMCCPA 
          SPACE  4,5
 SUBSYE   EQU    *           END OF PROGRAM 
 .RFL=    MAX    SUBSYE,OBUF+OBUFL
 RFL=     EQU    .RFL=
          SPACE  4,5
          END 
