QDSPLAY 
          IDENT  QDSPLAY,FWA,QDSPLAY
          ABS 
          ENTRY  QDSPLAY
          ENTRY  RFL= 
          ENTRY  SSJ= 
          SYSCOM B1          DEFINE (B1) = 1
          SST 
          TITLE  QDSPLAY - QUEUED FILE DISPLAY. 
          SPACE  4,10 
*COMMENT  QDSPLAY - QUEUED FILE DISPLAY.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
*****     QDSPLAY - DISPLAY QUEUED FILE.
* 
*         C. P. GERR.        81/12/01.
          SPACE  4,10 
***              *QDSPLAY* IS AN *L* DISPLAY UTILITY INITIATED
*         BY A CONSOLE OPERATOR (VIA *DSD*) WHICH DISPLAYS
*         PORTIONS OF A QUEUED FILE.
          SPACE  4,10 
***       COMMAND FORMAT. 
* 
* 
*         QDSPLAY(JSN)
* 
*                JSN = JOB SEQUENCE NUMBER OF QUEUED FILE.
* 
*         ONLY INPUT, PRINT, TERMINAL WAIT, PUNCH AND PLOT TYPE FILES 
*         ARE DISPLAYED.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED TO THE JOB AND SYSTEM DAYFILES. 
* 
*         * USER ACCESS NOT VALID.* 
*                CALLING JOB WAS NOT SYSTEM ORIGIN. 
* 
*         * INCORRECT JSN.* 
*                JSN WAS GREATER THAN 4 CHARACTERS OR LESS THAN 3 
*                CHARACTERS.
* 
*         * ARGUMENT ERROR.*
*                JSN WAS NOT ENTERED IN THE COMMAND CALL OR 
*                MORE THAN ONE PARAMETER WAS ENTERED. 
* 
*         * JSN XXXX NOT FOUND.*
*                JSN XXXX WAS NOT FOUND IN INPUT, PRINT, PLOT, TERMINAL 
*                WAIT OR PUNCH QUEUE.  *XXXX* IS REPLACED BY JSN. 
* 
*         * CANNOT ACCESS L-DISPLAY.* 
*                *DSD* DETECTED AN ERROR CONDITION WHEN INPUT WAS 
*                ENTERED VIA THE *L* DISPLAY. 
* 
          SPACE  4,10 
***       *L* DISPLAY ERROR MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED THROUGH THE *L* DISPLAY.
* 
*         *NO DAYFILE FOUND.* 
*                DAYFILE FOR JOB DOES NOT EXIST.
* 
*         *UNRECOGNIZABLE DIRECTIVE.* 
*                INCORRECT COMMAND WAS ENTERED VIA *L* DISPLAY. 
* 
*         *DIRECTIVE NOT ALLOWED.*
*                A SKIP COMMAND WAS ENTERED WHEN *SS* OR *HELP* DATA
*                WAS DISPLAYED OR *L* DISPLAY FORMAT WAS IN OCTAL 
*                MODE.
* 
*         *INCORRECT SKIP COUNT.* 
*                AN ASTERISK WAS PRESENT ON A SKIP LINE, SKIP PAGE, OR
*                SKIP RECORD BACKWARD COMMAND OR THE SKIP COUNT WAS 
*                GREATER THAN 377777B OR THE SKIP COUNT WAS NOT 
*                NUMERIC. 
* 
*         *EXCESS PARAMETERS.*
*                A SECOND PARAMETER WAS SPECIFIED ON A COMMAND WHICH
*                WAS NOT A SKIP COMMAND.
* 
*         *SYSTEM ABORT.* 
*                A SYSTEM ERROR WAS ENCOUNTERED.
          SPACE  4,10 
***       *L* DISPLAY INFORMATIVE MESSAGES. 
* 
*         THESE MESSAGES ARE ISSUED THROUGH THE *L* DISPLAY.
* 
*         *DROP PROCESSED.* 
*                A DROP COMMAND WAS ENTERED VIA *L* DISPLAY.
*                THE FILE HAS BEEN REMOVED FROM THE QUEUE AND THE 
*                UTILITY HAS TERMINATED.
* 
*         *END PROCESSED.*
*                AN END COMMAND WAS ENTERED VIA *L* DISPLAY.
*                THE FILE HAS BEEN RETURNED TO THE QUEUE AND THE
*                UTILITY HAS TERMINATED.
          SPACE  4,10 
***       *L* DISPLAY COMMANDS. 
* 
*         THE FOLLOWING ARE LEGAL COMMANDS TO BE ENTERED BY THE 
*         OPERATOR THROUGH THE *L* DISPLAY. 
* 
*         L.HELP.            LIST *L* DISPLAY DIRECTIVES FOR *QDSPLAY*
*                            UTILITY. 
* 
*         L.DROP.            DROP THE FILE FROM THE QUEUE AND TERMINATE 
*                            UTILITY. 
* 
*         L.END.             RETURN THE FILE TO THE QUEUE AND TERMINATE 
*                            UTILITY. 
* 
*         L.LINE.            SET FILE DISPLAY MODE TO LINE FORMAT.
*                            (MODE DOES NOT APPLY TO SYSTEM SECTOR
*                            DISPLAY WHICH IS ALWAYS IN OCTAL DISPLAY 
*                            FORMAT.) 
* 
*         L.OCTAL.           SET FILE DISPLAY MODE TO OCTAL FORMAT. 
* 
*         L.SS.              DISPLAY FROM BEGINNING OF SYSTEM SECTOR
*                            IN OCTAL FORMAT. 
* 
*         L.*.               RETURN FROM *HELP* OR *SS* DISPLAY TO
*                            DISPLAY FILE AT PREVIOUS POSITION
*                            (IGNORED IF ALREADY DISPLAYING FILE).
* 
*         L.BACK.            RETURN FROM *HELP* OR *SS* DISPLAY TO
*                            DISPLAY FILE AT PREVIOUS POSITION
*                            (IGNORED IF ALREADY DISPLAYING FILE).
* 
*         L.+.               ADVANCE DISPLAY FORWARD TO NEXT SCREEN 
*                            OF DATA.  CIRCULAR ADVANCE IS DONE FOR 
*                            SYSTEM SECTOR DISPLAY. 
* 
*         L.-.               PAGE BACKWARD TO PREVIOUS SCREEN OF DATA.
*                            COMMAND IS VALID ONLY FOR HELP DISPLAY.
* 
*         L.BOI.             POSITION FILE TO BEGINNING OF INFORMATION
*                            AND DISPLAY DATA.
* 
*         L.DAY.             POSITION FILE TO DAYFILE RECORD AND
*                            DISPLAY DATA (MEANINGFUL FOR SOME PRINT
*                            FILES).
* 
*         L.SL.              SKIP 1 OR N LINES FORWARD IN FILE AND
*         L.SL,N.            DISPLAY DATA.  A LINE IS BASED ON 14D WORD 
*                            MAXIMUM PRINT LINE SIZE.  SKIP PREMATURELY 
*                            STOPS ON EOR/EOF/EOI.  COMMAND IS ALLOWED
*                            ONLY WHEN DISPLAYING DATA IN LINE FORMAT.
*                            COMMAND IS NOT ALLOWED UNDER *HELP* OR 
*                            *SS* DISPLAY.
* 
*         L.SP.              SKIP 1 OR N PAGES FORWARD IN FILE AND
*         L.SP,N.            DISPLAY DATA.  A PAGE IS BASED ON
*                            CARRIAGE CONTROL 1 AS FIRST CHARACTER
*                            OF LINE.  SKIP PREMATURELY STOPS ON
*                            EOR/EOF/EOI.  COMMAND IS ALLOWED ONLY
*                            WHEN DISPLAYING DATA IN LINE FORMAT. 
*                            COMMAND IS NOT ALLOWED UNDER *HELP* OR 
*                            *SS* DISPLAY.
* 
*         L.SR.              SKIP 1 OR N RECORDS OR TO END OF 
*         L.SR,N.            INFORMATION (N=* OPTION) IN FILE AND 
*         L.SR,*.            DISPLAY DATA.  SKIP PREMATURELY STOPS AT 
*                            EOI.  COMMAND IS NOT ALLOWED UNDER *HELP*
*                            OR *SS* DISPLAY. 
* 
*         L.BR.              SKIP 1 OR N RECORDS BACKWARD IN FILE AND 
*         L.BR,N.            DISPLAY DATA.  SKIP PREMATURELY STOPS
*                            AT BOI.  COMMAND IS NOT ALLOWED UNDER
*                            *HELP* OR *SS* DISPLAY.
* 
*         SKIP LINE/PAGE/RECORD COUNTS ARE ASSUMED DECIMAL BUT
*         POST-RADIX B OR D CAN BE SPECIFIED.  MAXIMUM SKIP COUNT 
*         ACCEPTED IS 377777B.
          TITLE  ASSEMBLY CONSTANTS.
          SPACE  4,10 
****      ASSEMBLY CONSTANTS. 
  
 CNCI     EQU    4           NO COMMAND INPUT (*DSD* RETURN STATUS) 
 DLSZ     EQU    6           NUMBER OF WORDS PER LINE ON *L* DISPLAY
 ERML     EQU    3           ERROR MESSAGE LENGTH 
 MLLD     EQU    18          MAXIMUM NUMBER OF LINES ON *L* DISPLAY 
 PLSZ     EQU    14          PRINTER LINE SIZE
 LBHRL    EQU    6           *L* DISPLAY HEADER LENGTH
 LBUFL    EQU    LDSY-LBHRL  LENGTH OF *L* DISPLAY BUFFER 
 QBUFL    EQU    701B        QUEUED BUFFER SIZE 
          ERRNG  1000B-QBUFL PREVENT BUFFER AHEAD 
 SBUFL    EQU    100B        LENGTH OF SYSTEM SECTOR BUFFER 
 WBUFL    EQU    LBUFL       LENGTH OF WORKING BUFFER 
 XCDT     EQU    1           X - COORDINATE FOR *L* DISPLAY 
 YCDT     EQU    2           Y - COORDINATE FOR *L* DISPLAY 
 LCOMU    SET    LCOM/2+1    INPUT BUFFER PACKED
 LLBF     EQU    LBUFL/5     *L* DISPLAY BUFFER FOR OCTAL MODE
 MLLB     MIN    LLBF,MLLD   *L* DISPLAY BUFFER FOR OCTAL MODE
****
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMCDCP 
*CALL     COMSDSP 
*CALL     COMSEVT 
*CALL     COMSIOQ 
*CALL     COMSJIO 
*CALL     COMSQAC 
*CALL     COMSSSD 
*CALL     COMSSSE 
 IOSS.    EQU    IOSS-BFMS-2
*CALL     COMSSSJ 
          TITLE  DATA STORAGE.
          ORG    111B 
 FWA      BSS    0
          SPACE  4,10 
**        DATA STORAGE. 
  
  
 BLNS     DATA   8C          BLANK LINES
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
          DATA   8C 
 CLDF     CON    HLPA        CURRENT *L* DISPLAY FWA
 DFLG     CON    0           RANDOM ADDRESS OF DAYFILE
 ERIB     CON    0           ENTIRE RECORD IN BUFFER FLAG 
 FETA     CON    0           FET ADDRESS
 SCNT     CON    0           SKIP COUNT 
 STAT     CON    SHLP        FILE STATUS
 PSTT     CON    SBOI        PREVIOUS FILE STATUS 
 MODE     CON    0           FILE DISPLAY MODE (O=LINE, 1=OCTAL)
          SPACE  4,10 
**        TMLD - TABLE OF MESSAGES TO *L* DISPLAY.
  
  
 TMLD     BSS    0
          LOC    0
          DATA   C*                           * 
 DRPM     DATA   C*DROP PROCESSED.            * 
 EABT     DATA   C*SYSTEM ABORT.              * 
 EDNA     DATA   C*DIRECTIVE NOT ALLOWED.     * 
 EEPS     DATA   C*EXCESS PARAMETERS.         * 
 EISC     DATA   C*INCORRECT SKIP COUNT.      * 
 ENDF     DATA   C*NO DAYFILE FOUND.          * 
 ENDM     DATA   C*END PROCESSED.             * 
 EUND     DATA   C*UNRECOGNIZABLE DIRECTIVE.  * 
 EVOH     DATA   C*VALID ONLY FOR HELP DISPLAY.*
          LOC    *O 
 TVST     SPACE  4,10 
**        TVST - TABLE OF VALID STATUSES. 
* 
*         THIS TABLE CONSISTS OF A VALUE TO BE DISPLAYED
*         IN THE HEADER FOR FILE STATUS.
*         DUE TO CODE REQUIREMENTS, THIS TABLE MUST BE MAINTAINED 
*         IN THE FOLLOWING ORDER AND LOCATION POSITIONS.
  
  
 TVST     BSS    0
          LOC    0
 SHLP     DATA   L* =    .*  *HELP* STATUS
          ERRNZ  SHLP        CODE DEPENDS UPON VALUE BEING 0
 SSYS     DATA   L* = SS. *  SYSTEM SECTOR STATUS 
          ERRNZ  SSYS-1      CODE DEPENDS UPON VALUE BEING 1
 SBOI     DATA   L* = BOI.*  BEGINNING OF INFORMATION STATUS
 SBOR     DATA   L* = BOR.*  BEGINNING OF RECORD STATUS 
 SMID     DATA   L* =    .*  MIDDLE OF RECORD STATUS
 SEOI     DATA   L* = EOI.*  END OF INFORMATION STATUS
 SEOF     DATA   L* = EOF.*  END OF FILE STATUS 
 SEOR     DATA   L* = EOR.*  END OF RECORD STATUS 
          LOC    *O 
          SPACE  4,10 
**        *QAC* PARAMETER BLOCK.
  
  
 QACPB    BSS    0
 QACR     VFD    50/0,9/GTFC,1/0  REQUEST PREFIX PORTION
          VFD    36/0,6/GTLB-5,18/0 
          VFD    60/0 
          VFD    60/0 
          VFD    60/0 
 QACS     VFD    60/0        SELECTION CRITERIA PORTION 
          VFD    60/0 
          VFD    36/0,12/DLSF,12/JSSF+ZPSF
          VFD    12/INQQ,48/0 
          VFD    18/0,18/3H***,24/0 
          VFD    60/0 
          VFD    60/0 
 QACF     VFD    60/0        *GET* FUNCTION PORTION 
          VFD    60/0 
          VFD    60/0 
          VFD    60/0 
          SPACE  4,10 
**        *ROUTE* PARAMETER BLOCK.
  
  
 ROPB     BSSZ   EPBL 
 .R       BSS    0
          ORG    ROPB+1 
          VFD    42/0,18/FREB          EXTENDED BLOCK PRESENT 
          ORG    ROPB+7 
          VFD    42/0,18/EFRQ          SPECIAL REQUEUE OPERATION FLAG 
          ORG    .R 
          SPACE  4,10 
**        *ROLLOUT* PARAMETER BLOCK.
  
  
 ROLB     VFD    30/0,18/LINE,12/0
          SPACE  4,10 
**        *REPRIEVE* PARAMETER BLOCK. 
  
  
 RPB      BSS    0
          VFD    36/0,12/RPBL,12/0
          VFD    30/0,30/RPV
          BSSZ   27B
 RPBL     EQU    *-RPB
          SPACE  4,10 
**        *SSJ=* PARAMETER BLOCK. 
  
  
 SSJ=     BSS    0
          VFD    48/0,12/IRSI 
          BSSZ   SSJL-1 
          SPACE  4,5
**        *L* DISPLAY BUFFER HEADER.
  
  
 LBHR     DATA   C*  QDSPLAY. JSN = $$$$. QFT = ++++. IC = --. STATUS = 
,   .*
 .LBHRL   EQU    *-LBHR      *L* DISPLAY HEADER LENGTH
          ERRNZ  .LBHRL-LBHRL  *LBHRL* NEEDS TO BE REDEFINED
          SPACE  4,10 
**        FET DEFINITIONS.
  
  
          CON    0           SAVE PREVIOUS *IN* FOR QUEUED FILE 
          CON    0           SAVE PREVIOUS *OUT* FOR QUEUED FILE
 Q        RFILEB QBUF,QBUFL,(FET=9)  QUEUED FILE FET
  
  
          CON    0           SAVE PREVIOUS *IN* FOR SYSTEM SECTOR FILE
          CON    0           SAVE PREVIOUS *OUT* FOR SYSTEM SECTOR FILE 
 S        FILEB  SBUF,SBUFL+1,(FET=7)  SYSTEM SECTOR FET
          TITLE  MAIN PROGRAM.
 QDSPLAY  SPACE  4,10 
**        QDSPLAY - MAIN PROGRAM LOOP.
* 
*         CALLS  BLD, CMP, EFP, ILD, OLD, PRS, SEM. 
  
  
 QDSPLAY  BSS    0           ENTRY
          RJ     PRS         EXECUTE PRESET 
  
*         EXECUTE LOOP TO PROCESS COMMAND.
  
 QDS1     RJ     EFP         EXECUTE FUNCTION PROCESSOR 
          ZR     X2,QDS2     IF DISPLAY NOT TO BE REBUILT 
          RJ     BLD         BUILD *L* DISPLAY
 QDS2     RJ     OLD         OUTPUT *L* DISPLAY DATA. 
          RJ     ILD         INPUT *L* DISPLAY DATA.
          RJ     CMP         COMMAND PROCESSOR
          ZR     B2,QDS1     IF NO ERROR IN COMMAND 
          RJ     SEM         PROCESS ERROR
          EQ     QDS2        UPDATE *L* DISPLAY 
          TITLE  FUNCTION PROCESSORS. 
 ADV      SPACE  4,20 
**        ADV - ADVANCE DISPLAY FORWARD.
* 
*         *ADV* ADVANCES THE *L* DISPLAY TO DISPLAY NEXT PORTION OF 
*         DATA.  ADVANCE IS CIRCULAR FOR SYSTEM SECTOR. 
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE IF FILE STATUS IS
*                NOT *SS*.
*                (X2) = FET ADDRESS OF SYSTEM SECTOR IF FILE STATUS 
*                IS *SS*. 
*                (B2) = 0 (NO ERROR), IF *HELP* DISPLAY STATUS. 
* 
*         USES   X - 2, 3, 4, 6, 7. 
*                A - 2, 3, 4, 6, 7. 
*                B - 2, 3, 5. 
* 
*         CALLS  RNR. 
  
  
 ADV2     SB5    SEOI 
          LT     B3,B5,ADVX  IF NOT EOR/EOF/EOI 
          SX6    SBOR        BEGINNING OF RECORD STATUS 
          RJ     RNR         READ NEW RECORD
  
 ADV      SUBR               ENTRY/EXIT 
          SA2    STAT        GET FILE STATUS
          SB2    B0          NO ERROR 
          SB3    X2 
          SX2    S           SET SYSTEM SECTOR FET
          EQ     B3,B1,ADV1  IF *SS* STATUS PRESENT 
          SX2    Q           SET QUEUED FILE FET
          SX6    SMID        SET FILE STATUS
          SA6    STAT 
 ADV1     SA3    X2-2        GET PREVIOUS *IN*
          SA4    A3+B1       GET PREVIOUS *OUT* 
          BX6    X3 
          LX7    X4 
          SA6    X2+2        RESET TO ADVANCED FET POINTERS 
          IX3    X3-X4       COMPARE *IN* AND *OUT* 
          SA7    A6+1 
          NZ     X3,ADVX     IF *IN* .NE. *OUT* 
          NE     B3,B1,ADV2  IF NOT *SS* DISPLAY
          SX7    SBUF        SET *OUT*
          SA7    A7 
          SX6    SBUF+77B    SET *IN* 
          SA6    A6 
          EQ     ADVX        RETURN 
 BOI      SPACE  4,15 
**        BOI - BEGINNING OF FILE FUNCTION PROCESSOR. 
* 
*         *BOI* DISPLAYS THE BEGINNING OF THE QUEUED FILE ON THE *L*
*         DISPLAY.
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 7.
* 
*         CALLS  RNR. 
  
  
 BOI      SUBR               ENTRY/EXIT 
          SA1    STAT        GET FILE STATUS
          SX2    Q
          SX6    SBOI        SET BEGINNING OF INFORMATION STATUS
          SX7    B1          SET RANDOM READ IN FET TO BOI
          BX1    X1-X6
          ZR     X1,BOIX     IF AT BOI
          SA7    Q+6
          RJ     RNR         READ NEXT RECORD 
          EQ     BOIX        RETURN 
 DAY      SPACE  4,15 
**        DAY - *DAYFILE* FUNCTION PROCESSOR. 
* 
*         *DAY* DISPLAYS THE DAYFILE PORTION OF THE FILE IF THE 
*         DAYFILE EXISTS. 
* 
*         EXIT   (X2) = 0, IF DAYFILE NOT FOUND AND HELP STATUS.
*                (X2) = FET ADDRESS OF QUEUED FILE OR SYSTEM SECTOR,
*                IF DAYFILE NOT FOUND AND NOT HELP STATUS.
*                (X2) = FET ADDRESS OF QUEUED FILE IF DAYFILE FOUND.
*                (B2) = ERROR MESSAGE ADDRESS, IF NO DAYFILE FOUND. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 7. 
*                B - 2. 
* 
*         CALLS  HLP, RNR.
  
  
 DAY      SUBR               ENTRY/EXIT 
          SA2    DFLG        GET DAYFILE ADDRESS
          SB2    ENDF        *NO DAYFILE FOUND.*
          ZR     X2,DAY1     IF NO DAYFILE FOUND
          BX7    X2          SET RANDOM ADDRESS OF DAYFILE IN FET 
          SA7    Q+6
          SX6    SBOR        SET BEGINNING OF RECORD STATUS 
          RJ     RNR         READ NEW RECORD
          SB2    B0+         INDICATE NO ERROR
          EQ     DAYX        RETURN 
  
*         REBUILD PROPER DISPLAY WITH ERROR MESSAGE.
  
 DAY1     SA1    STAT        GET FILE STATUS
          SX6    SHLP        CHECK IF HELP STATUS 
          BX6    X1-X6
          NZ     X6,DAY2     IF NOT HELP STATUS 
          RJ     HLP         FORMAT HELP DISPLAY
          EQ     DAYX        RETURN 
  
 DAY2     SX6    SSYS        CHECK IF SYSTEM SECTOR STATUS
          SX2    S           SET SYSTEM SECTOR FET
          BX6    X1-X6
          ZR     X6,DAYX     IF SYSTEM SECTOR STATUS
          SX2    Q           SET QUEUED FILE STATUS 
          EQ     DAYX        RETURN 
 DRP      SPACE  4,10 
**        DRP - *DROP* FUNCTION PROCESSOR.
* 
*         *DRP* DROPS THE FILE FROM THE QUEUE AND TERMINATES UTILITY. 
* 
*         USES   B - 2. 
* 
*         CALLS  DLD. 
* 
*         MACROS ENDRUN, RETURN.
  
  
 DRP      SUBR               ENTRY/EXIT 
          SB2    DRPM        DISPLAY *DROP PROCESSED.* MESSAGE
          RJ     DLD         DROP *L* DISPLAY 
          RETURN Q,R
          ENDRUN
 END      SPACE  4,10 
**        END - *END* FUNCTION PROCESSOR. 
* 
*         *END* RETURNS THE FILE TO THE QUEUE AND TERMINATES THE
*         UTILITY.
* 
*         USES   B - 2. 
* 
*         CALLS  DLD. 
* 
*         MACROS ENDRUN, ROUTE. 
  
  
 END      SUBR               ENTRY/EXIT 
          SB2    ENDM        DISPLAY *END PROCESSED.* MESSAGE 
          RJ     DLD         DROP *L* DISPLAY 
          ROUTE  ROPB,R      RETURN FILE TO QUEUE 
          ENDRUN
 HLP      SPACE  4,15 
**        HLP - *HELP* FUNCTION PROCESSOR.
* 
*         *HLP* MOVES *HELP* DISPLAY DATA TO *L* DISPLAY. 
* 
*         ENTRY  (CMPB) = FWA OF PAGE TO DISPLAY. 
*                (B2) = MESSAGE ORDINAL FOR TABLE OF MESSAGES.
* 
*         EXIT   (B2) = 0 (NO ERR0R). 
*                (X2) = 0 (*L* DISPLAY DATA NEED NOT BE REBUILT). 
* 
*         USES   X - 1, 2, 3, 5, 6, 7.
*                A - 1, 5, 6, 7.
*                B - 2, 3, 4, 6.
* 
*         CALLS  COI, FLB.
* 
*         MACROS MOVE.
  
  
 HLP      SUBR               ENTRY/EXIT 
          SA5    CLDF        GET CURRENT SCREEN FWA 
          SX2    TMLD+B2     SET MESSAGE
          MOVE   ERML,X2,X5+HLMA-HLPA 
          RJ     COI         CONVERT OPERATOR INPUT 
          SX2    IBUF        SET INPUT LINE 
          MOVE   LCOMU,X2,X5+HLIA-HLPA  SET INPUT LINE
          SX1    X5          FWA DATA TO FORMAT 
          SX6    X1+HLPAL-1  LWA DATA TO FORMAT 
          MX2    0           INDICATE *L* DISPLAY 
          SX3    B1+         INDICATE LINE MODE 
          SB2    LBUF        FWA *L* DISPLAY BUFFER 
          SB3    XCDT        X - COORDINATE OF DISPLAY
          SB4    YCDT        Y - COORDINATE OF DISPLAY
          SB6    LBUF+LBUFL  LWA *L* DISPLAY BUFFER 
          RJ     FLB         FORMAT DATA FOR *L* DISPLAY
          SA1    STAT        GET FILE STATUS
          SX6    SHLP        SET *HELP* STATUS
          SA6    A1 
          SB3    X1 
          SX2    B0          PREVENT *L* DISPLAY BUILD FROM FILE
          SB2    B0          SET NO ERROR 
          LE     B3,B1,HLPX  IF *SS* OR *HELP* STATUS 
          SX7    X1+         SAVE PREVIOUS FILE STATUS
          SA7    PSTT 
          EQ     HLPX        RETURN 
  
  
 HLPA     BSS    0           *L* DISPLAY HELP PAGE 1
          DATA   50HQDSPLAY COMMANDS                              PAGE
          DATA   10H 1 OF 2 
          DATA   C* * 
          DATA   34C COMMAND               DESCRIPTION
          DATA   C* * 
          DATA   50H  BACK     RETURN FROM HELP/SS TO PREVIOUS FILE DI
          DATA   10HSPLAY.
          DATA   49C  BOI      POSITION FILE TO BOI AND DISPLAY DATA. 
          DATA   50H  DAY      POSITION PRINT FILE TO DAYFILE AND DISP
          DATA   10HLAY DATA. 
          DATA   46C  DROP     DROP FILE FROM QUEUE AND TERMINATE.
          DATA   C* * 
          DATA   46C  END      RETURN FILE TO QUEUE AND TERMINATE.
          DATA   50H  HELP     LIST L DISPLAY COMMANDS FOR QDSPLAY UTI
          DATA   10HLITY. 
          DATA   48C  LINE     SET FILE DISPLAY MODE TO LINE FORMAT.
          DATA   49C  OCTAL    SET FILE DISPLAY MODE TO OCTAL FORMAT. 
          DATA   C* * 
          DATA   50H  SS       DISPLAY IN OCTAL FROM BEGINNING OF SYST
          DATA   10HEM SECTOR.
          DATA   50C  +        PAGE DISPLAY FORWARD (CIRCULAR FOR SS).
          DATA   48C  -        PAGE DISPLAY BACKWARD. 
          DATA   C* * 
 HLMA     DATA   C*                           * 
 HLIA     DATA   C*                                        *
          CON    0           END OF HELP PAGE 1 DISPLAY 
 HLPAL    EQU    *-HLPA      LENGTH OF PAGE 1 DISPLAY 
 HLPB     BSS    0           *L* DISPLAY HELP PAGE 2
          DATA   50HQDSPLAY COMMANDS                              PAGE
          DATA   10H 2 OF 2 
          DATA   C* * 
          DATA   34C COMMAND               DESCRIPTION
          DATA   C* * 
          DATA   50H  SL       SKIP 1 LINE FORWARD IN FILE AND DISPLAY
          DATA   10H DATA.
          DATA   50H  SL,N     SKIP N LINES FORWARD IN FILE AND DISPLA
          DATA   10HY DATA. 
          DATA   50H  SP       SKIP 1 PAGE FORWARD IN FILE AND DISPLAY
          DATA   10H DATA.
          DATA   50H  SP,N     SKIP N PAGES FORWARD IN FILE AND DISPLA
          DATA   10HY DATA. 
          DATA   50H  SR       SKIP 1 RECORD FORWARD IN FILE AND DISPL
          DATA   10HAY DATA.
          DATA   C* * 
          DATA   50H  SR,N     SKIP N RECORDS FORWARD IN FILE AND DISP
          DATA   10HLAY DATA. 
          DATA   31C  SR,*     SKIP TO EOI IN FILE. 
          DATA   50H  BR       SKIP 1 RECORD BACKWARD IN FILE AND DISP
          DATA   10HLAY DATA. 
          DATA   50H  BR,N     SKIP N RECORDS BACKWARD IN FILE AND DIS
          DATA   10HPLAY DATA.
          DATA   20C
          DATA   20C
          DATA   20C
          DATA   20C
 HLMB     DATA   C*                           * 
 HLIB     DATA   C*                                        *
          CON    0           END OF HELP PAGE 2 DISPLAY 
 HLPBL    EQU    *-HLPB      LENGTH OF PAGE 2 DISPLAY 
          ERRNZ  HLPAL-HLPBL PAGE LENGTHS MUST BE EQUAL 
          ERRNZ  HLMA-HLPA-HLMB+HLPB  MESSAGE OFFSETS MUST BE THE SAME
          ERRNZ  HLIA-HLPA-HLIB+HLPB  INPUT OFFSETS MUST BE THE SAME
 LNE      SPACE  4,15 
**        LNE - SET *L* DISPLAY FORMAT TO LINE MODE.
* 
*         *LNE* SETS LINE MODE FORMAT FOR THE *L* DISPLAY.
* 
*         EXIT   (B2) = 0 (NO ERROR). 
*                (X2) = 0, IF *HELP* STATUS.
*                (X2) = SYSTEM SECTOR FET, IF *SS* STATUS.
*                (X2) = QUEUED FET, IF NOT *HELP* OR *SS* STATUS. 
* 
*         USES   X - 2, 6.
*                A - 2, 6.
*                B - 2, 3.
* 
*         CALLS  HLP. 
  
  
 LNE      SUBR               ENTRY/EXIT 
          SA2    STAT        GET FILE STATUS
          SB2    B0          NO ERROR 
          SX6    B0          SET *L* DISPLAY FORMAT TO LINE MODE
          SA6    MODE 
          SB3    X2 
          SX2    B0          DO NOT REBUILD *L* DISPLAY 
          NE     B3,B0,LNE1  IF NOT HELP STATUS 
          RJ     HLP         REBUILD HELP DISPLAY WITH *LINE* ECHOED
          EQ     LNEX        RETURN 
  
 LNE1     NE     B3,B1,LNE2  IF NOT *SS* STATUS 
          SX2    S           SET SYSTEM SECTOR FET
          EQ     LNEX        RETURN 
  
 LNE2     SX2    Q           SET QUEUED FILE FET
          EQ     LNEX        RETURN 
 OCT      SPACE  4,15 
**        OCT - SETS THE *L* DISPLAY FORMAT TO OCTAL MODE.
* 
*         *OCT* SETS OCTAL MODE FORMAT FOR THE *L* DISPLAY. 
* 
*         EXIT   (B2) = 0 (NO ERROR). 
*                (X2) = 0, IF *HELP* STATUS.
*                (X2) = SYSTEM SECTOR FET, IF *SS* STATUS.
*                (X2) = QUEUED FET, IF NOT *HELP* OR *SS* STATUS. 
* 
*         USES   X - 2, 6.
*                A - 2, 6.
*                B - 2, 3.
* 
*         CALLS  HLP. 
  
  
 OCT      SUBR               ENTRY/EXIT 
          SX6    B1          SET *L* DISPLAY FORMAT TO OCTAL MODE 
          SA6    MODE 
          SB2    B0          NO ERROR 
          SA2    STAT        GET FILE STATUS
          SB3    X2 
          SX2    B0          DO NOT REBUILD *L* DISPLAY 
          NE     B3,B0,OCT1  IF NOT HELP STATUS 
          RJ     HLP         REBUILD HELP DISPLAY WITH *OCTAL* ECHOED 
          EQ     OCTX        RETURN 
  
 OCT1     NE     B3,B1,OCT2  IF NOT *SS* STATUS 
          SX2    S           SET SYSTEM SECTOR FET
          EQ     OCTX        RETURN 
  
 OCT2     SX2    Q           SET QUEUED FILE FET
          EQ     OCTX        RETURN 
 SLF      SPACE  4,10 
**        SLF - SKIP LINES FORWARD. 
* 
*         *SLF* SKIPS LINES FORWARD.
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE. 
*                (B2) = 0 (NO ERROR). 
* 
*         USES   X - 1, 5, 6. 
*                A - 5, 6.
*                B - 2. 
* 
*         MACROS READC. 
  
  
 SLF      SUBR               ENTRY/EXIT 
          SA5    SCNT        GET SKIP COUNT 
          SX6    SMID        SET FILE STATUS TO MIDDLE OF RECORD
          SA6    STAT 
 SLF1     READC  Q,WBUF,PLSZ
          SB2    B0+         INDICATE NO ERROR
          NG     X1,SLFX     IF EOF/EOI 
          SX1    X1-WBUF
          ZR     X1,SLFX     IF EOR (NO DATA) 
          SX5    X5-1        DECREMENT SKIP COUNT 
          NZ     X5,SLF1     IF MORE LINES TO SKIP
          EQ     SLFX        RETURN 
 SPF      SPACE  4,10 
**        SPF - SKIP PAGES FORWARD. 
* 
*         *SPF* SKIPS PAGES FORWARD.
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE. 
*                (B2) = 0 (NO ERROR). 
* 
*         USES   X - 0, 1, 3, 4, 5, 6, 7. 
*                A - 1, 3, 4, 5, 6, 7.
*                B - 2. 
* 
*         MACROS READC. 
  
  
 SPF      SUBR               ENTRY/EXIT 
          SA5    SCNT        GET SKIP COUNT 
          SX6    SMID        SET MIDDLE OF RECORD FILE STATUS 
          SA6    STAT 
          SX0    B1+         INDICATE TOP OF FIRST PAGE 
 SPF1     SA3    Q+2         GET *IN* 
          BX6    X3 
          SA4    A3+B1       GET *OUT*
          BX7    X4 
          SA6    Q-2         SAVE PREVIOUS *IN* 
          SA7    A6+B1       SAVE PREVIOUS *OUT*
          READC  Q,WBUF,PLSZ
          SB2    B0+         INDICATE NO ERROR
          NG     X1,SPFX     IF EOF/EOI 
          SX1    X1-WBUF
          ZR     X1,SPFX     IF EOR (WITH NO DATA)
          MX3    6           CHECK LINE FOR CARRIAGE CONTROL
          SA1    WBUF 
          BX1    X3*X1
          LX1    6
          SX1    X1-1R1 
          BX1    X1+X0
          SX0    B0+         INDICATE NOT TOP OF FIRST PAGE 
          NZ     X1,SPF1     IF TOP OF FIRST PAGE OR NOT PAGE EJECT 1 
          SX5    X5-1        DECREMENT SKIP COUNT 
          NZ     X5,SPF1     IF MORE PAGES TO SKIP
          SA1    Q-2         GET PREVIOUS *IN*
          SA3    A1+B1       GET PREVIOUS *OUT* 
          BX6    X1 
          SA6    Q+2         SET *IN* AND *OUT* IN FET
          BX7    X3 
          SA7    A6+B1
          EQ     SPFX        RETURN 
 SRB      SPACE  4,15 
**        SRB - SKIP RECORDS BACKWARD.
* 
*         *SRB* SKIP RECORDS BACKWARD.
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE, IF FILE STATUS IS 
*                NOT BOI. 
*                (X2) = 0, IF FILE STATUS IS BOI. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6.
*                A - 1, 3, 6. 
*                B - 2. 
* 
*         CALLS  RNR. 
* 
*         MACROS SKIPB. 
  
  
 SRB      SUBR               ENTRY/EXIT 
          SA3    STAT        GET FILE STATUS
          SB2    B0+         NO ERROR 
          SX2    X3-SBOI
          ZR     X2,SRBX     IF FILE DISPLAY IS AT BOI
          SX6    QBUF        SET *IN* = *OUT* = *FIRST* (EMPTY BUFFER)
          SA6    Q+2
          SA1    SCNT        GET SKIP COUNT 
          SA6    Q+3
          SX4    X3-SEOF
          SX2    X3-SBOR
          ZR     X4,SRB1     IF FILE DISPLAY AT EOF 
          NZ     X2,SRB2     IF FILE DISPLAY NOT AT BOR 
 SRB1     SX4    X1+B1
          NG     X4,SRB2     IF FILE COUNT ALREADY AT MAXIMUM 
          SX1    X1+B1       SKIP EXTRA RECORD
 SRB2     SKIPB  Q,X1,R 
          SA3    X2 
          MX0    -6 
          AX3    3
          BX1    -X0*X3 
          SX1    X1-5 
          SX6    SBOI 
          ZR     X1,SRB3     IF FILE IS AT BOI
          SX6    SBOR        BEGINNING RECORD STATUS
 SRB3     RJ     RNR         READ NEW RECORD
          EQ     SRBX        RETURN 
 SRF      SPACE  4,15 
**        SRF - SKIP RECORDS FORWARD. 
* 
*         *SRF* SKIPS RECORDS FORWARD.
* 
*         EXIT   (X2) = 0, IF STATUS = EOI. 
*                (B2) = 0, IF STATUS = EOI. 
*                (X2) = FET ADDRESS OF QUEUED FILE, IF STATUS NOT EOI.
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 3, 4, 6.
*                B - 2, 3.
* 
*         CALLS  RNR. 
* 
*         MACROS SKIPF. 
  
  
 SRF      SUBR               ENTRY/EXIT 
          SA3    STAT        GET STATUS 
          SX2    B0          DISPLAY WILL NOT BE REBUILT
          SB2    B0          NO ERROR 
          SB3    X3-SEOI
          ZR     B3,SRFX     IF STATUS IS EOI 
          SX6    QBUF        SET *IN* = *OUT* = *FIRST* (EMPTY BUFFER)
          SA6    Q+2
          SA6    A6+B1
          SA1    SCNT        GET SKIP COUNT 
          BX3    X1 
          LX3    59-17
          SA4    Q
          LX4    59-4 
          NG     X3,SRF1     IF SKIP COUNT = 777777B (* OPTION) 
          PL     X4,SRF1     IF NOT EOR/EOF/EOI IN FET
          SX1    X1-1        DECREMENT SKIP COUNT 
          ZR     X1,SRF2     IF SKIP COUNT = 0
 SRF1     SKIPF  Q,X1,R      SKIP RECORDS 
 SRF2     SX6    SBOR        BEGINNING OF RECORD STATUS 
          RJ     RNR         READ NEW RECORD
          EQ     SRFX        RETURN 
 SSP      SPACE  4,10 
**        SSP - *SYSTEM SECTOR* FUNCTION PROCESSOR. 
* 
*         *SSP* DISPLAYS THE SYSTEM SECTOR PORTION OF THE QUEUED FILE.
* 
*         EXIT   (X2) = FET ADDRESS FOR SYSTEM SECTOR BUFFER. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 6, 7. 
*                B - 3. 
  
  
 SSP      SUBR               ENTRY/EXIT.
          SX6    SBUF 
          SA6    S+3         SET *OUT* = *FIRST*
          SX7    SBUF+77B 
          SA1    STAT        GET FILE STATUS
          SA7    A6-B1       SET *IN* 
          SB3    X1 
          SX7    SSYS        SET *SS* FILE STATUS 
          BX6    X1          SET PREVIOUS FILE STATUS 
          SA7    A1 
          SX2    S
          LE     B3,B1,SSPX  IF *SS* OR *HELP* STATUS 
          SA6    PSTT 
          EQ     SSPX        RETURN 
 TOG      SPACE  4,15 
**        TOG - TOGGLE BACK TO FILE DISPLAY.
* 
*         *TOG* - TOGGLES THE DISPLAY TO THE PREVIOUS FILE DISPLAY
*         IF *HELP* OR *SYSTEM SECTOR* IS CURRENTLY BEING DISPLAYED.
* 
*         EXIT   (B2) = 0 (NO ERROR). 
*                (X2) = 0, IF FILE STATUS IS NOT *SS* OR *HELP*.
*                (X2) = FET ADDRESS OF QUEUED FILE IF FILE STATUS IS
*                *SS* OR *HELP*.
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 3, 6. 
*                B - 2, 3.
  
  
 TOG      SUBR               ENTRY/EXIT 
          SA1    STAT        GET FILE STATUS
          SB3    X1 
          SB2    B0          NO ERROR 
          SA3    PSTT        GET PREVIOUS STATUS
          SX2    B0          DISPLAY WILL NOT BE REBUILT
          BX6    X3          SET PREVIOUS FILE STATUS 
          GT     B3,B1,TOGX  IF NOT *SS* OR *HELP* STATUS 
          SX2    Q
          SA6    A1+
          EQ     TOGX        RETURN 
          TITLE  SUBROUTINES. 
 BLD      SPACE  4,15 
**        BLD - BUILD *L* DISPLAY DATA. 
* 
*         *BLD* BUILDS THE *L* DISPLAY FOR QUEUED FILE OR 
*         SYSTEM SECTOR DATA. 
* 
*         ENTRY  (X2) = FET ADDRESS.
*                (B2) = MESSAGE ADDRESS.
* 
*         USES   X - 1, 2, 3, 4, 5, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 3, 4, 6.
* 
*         CALLS  COI, FLB, FOD, RQF, TLD. 
* 
*         MACROS MOVE.
  
  
 BLD1     RJ     FOD         FORMAT OCTAL DATA
 BLD2     BX5    X6          SAVE FILE STATUS 
          SA2    BLDA        GET MESSAGE ORDINAL
          SX2    TMLD+X2     SET MESSAGE ADDRESS
          MOVE   ERML,X2,B6  SET MESSAGE IN MESSAGE LINE
          RJ     COI         CONVERT OPERATOR INPUT 
          SX2    IBUF        ECHO INPUT 
          MOVE   LCOMU,X2,B6+ERML 
          SB6    B6+ERML+LCOMU  RESET LWA OF WORKING BUFFER 
          BX6    X5          RESTORE FILE STATUS
          SA1    STAT        GET LAST FILE STATUS 
          SB4    X6-SEOI
          SB3    X1+
          EQ     B3,B1,BLD4  IF *SS* STATUS 
          NG     B4,BLD4     IF NOT EOR/EOF/EOI ENCOUNTERED 
          LE     B4,B1,BLD3  IF EOF/EOI ENCOUNTERED 
          SB4    SBOR 
          GT     B3,B4,BLD3  IF NOT AT BOI/BOR
          SA1    ERIB 
          NZ     X1,BLD4     IF ENTIRE RECORD IN BUFFER 
 BLD3     SA6    STAT        SAVE FILE STATUS 
 BLD4     SA1    STAT        GET FILE STATUS
          SA1    TVST+X1     SET STATUS IN HEADER 
          BX6    X1 
          SA6    WBHR+5 
          SX1    WBHR        FWA OF DATA TO FORMAT
          SX6    B6-B1       LWA DATA TO FORMAT 
          MX2    0           INDICATE *L* DISPLAY 
          SX3    B1+         SET MODE FOR *FLB* 
          SB2    LBUF        FWA *L* DISPLAY BUFFER 
          SB3    XCDT        X - COORDINATE OF DISPLAY
          SB4    YCDT        Y - COORDINATE OF DISPLAY
          SB6    LBUF+LBUFL  LWA+1 *L* DISPLAY BUFFER 
          RJ     FLB         FORMAT DATA FOR *L* DISPLAY
          SA2    FETA        GET FET ADDRESS
          SA1    X2-2        GET PREVIOUS *IN*
          SA3    X2+2        GET CURRENT *IN* 
          BX6    X1 
          LX7    X3 
          SA6    A3          SWITCH *IN* POINTERS 
          SA7    A1 
          SA1    A1+B1       GET PREVIOUS *OUT* 
          SA3    A3+B1       GET CURRENT *OUT*
          BX6    X1 
          LX7    X3 
          SA6    A3          SWITCH *OUT* POINTERS
          SA7    A1 
  
 BLD      SUBR               ENTRY/EXIT 
          SX6    B2+         SAVE MESSAGE ORDINAL 
          SA6    BLDA 
          RJ     RQF         READ QUEUED FILE TO BUFFER AHEAD 
          BX7    X2          SAVE FET ADDRESS 
          SA3    X2+2        GET *IN* 
          BX6    X3 
          SA7    FETA 
          SA4    A3+B1       GET *OUT*
          BX7    X4 
          SA6    X2-2        SAVE PREVIOUS *IN* 
          SA1    STAT        GET FILE STATUS
          SA7    A6+B1       SAVE PREVIOUS *OUT*
          SB3    X1 
          EQ     B3,B1,BLD1  IF STATUS IS *SS*
          SA3    MODE 
          NZ     X3,BLD1     IF IN OCTAL MODE 
          RJ     TLD         TRANSFER LINES OF DATA 
          EQ     BLD2        UPDATE FILE STATUS 
  
  
 BLDA     BSS    1           MESSAGE ORDINAL IN TABLE 
 CMP      SPACE  4,15 
**        CMP - COMMAND FUNCTION PROCESSOR. 
* 
*         *CMP* PROCESSES EACH INPUT DIRECTIVE AND SETS SKIP COUNTS.
* 
*         EXIT   (B5) = ADDRESS OF FUNCTION PROCESSOR, IF NO ERROR. 
*                (B2) = 0, IF NO ERROR IN DIRECTIVE INPUT.
*                (B2) = ERROR MESSAGE ADDRESS, IF ERROR.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 3, 4, 6.
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  DXB, PGD, POP, USB.
  
  
 CMP6     SB5    B4+         SET PROCESSOR ADDRESS
  
 CMP      SUBR               ENTRY/EXIT 
          SA1    STAT        CHECK IF HELP STATUS 
          SB2    SHLP 
          SB4    X1+
          NE     B2,B4,CMP1  IF NOT HELP STATUS 
  
*         CHECK FOR PAGING COMMAND. 
  
          SX1    CLDF        POINTER TO FWA *L* DISPLAY 
          SX2    CMPA        PAGE TABLE 
          MX0    6           MASK FOR PAGING CHARACTER
          SA3    IBUF        COMMAND BUFFER 
          BX3    X0*X3       GET PAGING CHARACTER 
          SX4    B1+         INDICATE *L* DISPLAY 
          RJ     PGD         PAGE *L* DISPLAY 
          NZ     X4,CMP1     IF ILLEGAL PAGING
          SB2    B0+         INDICATE NO ERROR
          SB5    HLP         PAGE HELP DISPLAY
          EQ     CMPX        RETURN 
  
*         CHECK FOR NON HELP PAGING COMMAND.
  
 CMP1     SB2    IBUF        *L* DISPLAY INPUT DIRECTIVE
          SB3    B0+         SET DISPLAY CODE FOR *USB* 
          RJ     USB         UNPACK STRING BUFFER 
          RJ     POP         GET FIRST PARAMETER
          BX2    X1          SEPARATOR
          SB2    EUND        *UNRECOGNIZABLE DIRECTIVE.*
          MX0    36          COMMAND MASK 
          SA1    TCOM        TABLE OF COMMANDS
          NZ     X6,CMP2     IF PARAMETER - NOT PAGING COMMAND
          SB2    EVOH 
          SX3    1R-
          IX3    X3-X2
          ZR     X3,CMPX     IF MINUS SIGN ENTERED
          SB2    EUND        RESET ERROR MESSAGE
          SX3    1R+         CHECK FOR PAGING COMMAND 
          IX3    X3-X2
          NZ     X3,CMPX     IF NOT *+* 
          SB5    X1          SET PROCESSOR ADDRESS
          SB2    B0          INDICATE NO ERROR
          EQ     CMPX        RETURN 
  
*         CHECK FOR REMAINING COMMANDS. 
  
 CMP2     SA1    A1+B1       READ NEXT ENTRY IN COMMAND TABLE 
          ZR     X1,CMPX     IF END OF TABLE (INCORRECT COMMAND)
          BX3    X1-X6
          BX3    X0*X3
          NZ     X3,CMP2     IF MATCH NOT FOUND 
          BX6    X1          SAVE TABLE ENTRY 
          SA6    CMPB 
          SB2    B0          NO ERROR 
          SB4    X1          SAVE ADDRESS OF ROUTINE FROM TABLE 
          LX1    0-18 
          SX6    B1+         SAVE SKIP COUNT
          BX6    X6*X1
          SA6    SCNT 
          ZR     B6,CMP6     IF NO MORE PARAMETERS
          LT     B5,CMP6     IF PARAMETER BUFFER NOT EXHAUSTED
  
*         CHECK FOR SECOND PARAMETER. 
  
          SX5    B4+         SAVE ADDRESS OF ROUTINE FROM TABLE 
          RJ     POP         GET SECOND PARAMETER 
          SB5    X5          RESTORE ADDRESS OF ROUTINE FROM TABLE
          SA1    SCNT        GET SKIP COUNT 
          IX2    X6+X1
          ZR     X2,CMPX     IF NO SECOND PARAMETER AND NOT SKIP
  
*         PROCESS SECOND PARAMETER. 
  
          SB2    EEPS        *EXCESS PARAMETER ON DIRECTIVE.* 
          NZ     X1,CMP4     IF SKIP COMMAND
          NZ     X6,CMPX     IF SECOND PARAMETER AND NOT SKIP COMMAND 
 CMP4     SB2    EDNA        *DIRECTIVE NOT ALLOWED.* 
          SA4    STAT 
          SA3    MODE 
          SX2    1R*
          SB4    X4 
          LX2    -6 
          LE     B4,B1,CMPX  IF *SS* OR *HELP* STATUS 
          NZ     X3,CMPX     IF OCTAL MODE
          SB2    B0 
          MX0    36          MASK FOR PARAMETER 
          ZR     X6,CMPX     IF NO SECOND PARAMETER ON SKIP 
          BX2    X6-X2
          BX2    X0*X2
          ZR     X2,CMP5     IF ASTERISK IN SKIP COUNT
          SB6    B5          SAVE FUNCTION ROUTINE ADDRESS
          SB7    B1 
          BX5    X6          SET WORD TO CONVERT
          RJ     DXB         CONVERT TO BINARY
          SB5    B6          RESTORE FUNCTION ROUTINE ADDRESS 
          SB2    EISC        *INCORRECT SKIP COUNT.*
          MX0    43 
          NZ     X4,CMPX     IF ERROR 
          ZR     X6,CMPX     IF ZERO SKIP COUNT 
          BX3    X0*X6
          NZ     X3,CMPX     IF SKIP COUNT EXCEEDS 377777B
          SB2    B0          NO ERROR 
          SA6    SCNT        SAVE SKIP COUNT
          EQ     CMPX        EXIT 
  
 CMP5     SA1    CMPB        GET COMMAND TABLE ENTRY BACK 
          LX1    59-19
          MX6    18 
          LX6    18 
          SA6    SCNT 
          NG     X1,CMPX     IF SKIP DIRECTIVE ALLOWS ASTERISK
          SB2    EISC        *INCORRECT SKIP COUNT.*
          EQ     CMPX        EXIT 
 CMPA     SPACE  4,5
**        CMPA - PAGE TABLE.
  
  
 CMPA     PAGT   HLPA,HLMA,HLIA  LEFT SCREEN PAGE 1 
          PAGT   HLPB,HLMB,HLIB  LEFT SCREEN PAGE 2 
          PAGT   *
  
 PGD      HERE               REMOTE BLOCK FROM *COMCDCP*
 CMPB     BSS    1           COMMAND TABLE ENTRY
 TCOM     SPACE  4,10 
**        TCOM - TABLE OF COMMANDS. 
* 
*T,       36/ COMMAND,4/0,1/A,1/SK,18/ADDR
* 
*         (A) = 1, IF ASTERISK ALLOWED AS SECOND PARAMETER. 
* 
*         (SK) = 1, IF SKIP COUNT ALLOWED.
* 
*         ADDR = ADDRESS OF ROUTINE FOR COMMAND.
  
  
 TCOM     BSS    0
          VFD    36/1L+,6/0,18/ADV
          VFD    36/0LBACK,6/0,18/TOG 
          VFD    36/0LBOI,6/0,18/BOI
          VFD    36/0LDAY,6/0,18/DAY
          VFD    36/0LDROP,6/0,18/DRP 
          VFD    36/0LEND,6/0,18/END
          VFD    36/0LHELP,6/0,18/HLP 
          VFD    36/0LLINE,6/0,18/LNE 
          VFD    36/0LOCTAL,6/0,18/OCT
          VFD    36/0LSL,5/0,1/1,18/SLF 
          VFD    36/0LSP,5/0,1/1,18/SPF 
          VFD    36/0LBR,5/0,1/1,18/SRB 
          VFD    36/0LSR,4/0,1/1,1/1,18/SRF 
          VFD    36/0LSS,6/0,18/SSP 
          VFD    36/1L*,6/0,18/TOG
          CON    0           END OF TABLE 
 COI      SPACE  4,20 
**        COI - CONVERT OPERATOR INPUT. 
* 
*         *COI* CONVERTS THE OPERATOR *L* DISPLAY INPUT BY CHANGING 
*         ALL ZERO BYTES TO BLANKS, AND INSURING THAT A ZERO BYTE 
*         TERMINATOR EXISTS IN THE LAST WORD OF THE INPUT LINE. 
* 
*         ENTRY  IBUF = FWA INPUT BUFFER. 
* 
*         EXIT   (IBUF) = INPUT BUFFER, BLANK FILLED, ZERO BYTE 
*                         TERMINATED. 
* 
*         USES   X - 0, 1, 6. 
*                A - 1, 6.
*                B - 2. 
* 
*         CALLS  ZTB. 
  
  
 COI      SUBR               ENTRY/EXIT 
          SB2    LCOMU-1     OPERATOR INPUT LINE LENGTH 
          SA1    IBUF-1      FIRST WORD-1 OF OPERATOR INPUT 
 COI1     SA1    A1+1        NEXT WORD TO CONVERT 
          ZR     B2,COIX     IF ALL WORDS CONVERTED 
          RJ     ZTB         CONVERT ALL ZERO BYTES TO BLANKS 
          SA6    A1          REPLACE IN *IBUF*
          SB2    B2-B1       DECREMENT NUMBER OF WORDS TO CONVERT 
          EQ     COI1        CONVERT NEXT WORD
 DCM      SPACE  4,10 
**        DCM - DETERMINE CHARACTER MODE. 
* 
*         EXIT   (B4) = 0 IF ASCII MODE.
*                (A0) = NUMBER OF WORDS TO READ PER LINE. 
* 
*         USES   X - 1, 3.
*                A - 0, 1, 3. 
*                B - 4. 
  
  
 DCM2     SB4    1           DISPLAY CODE 
          SA0    DLSZ 
  
 DCM      SUBR
          SA1    STAT        CHECK DISPLAY STATUS 
          AX1    1
          ZR     X1,DCM2     IF HELP OR SYSTEM SECTOR 
          SA1    DFLG        CHECK IF DISPLAYING DAYFILE
          ZR     X1,DCM1     IF NO DAYFILE
          SA3    Q+6
          AX3    30 
          IX1    X3-X1
          SX3    B1 
          IX1    X1-X3
          PL     X1,DCM2     IF DISPLAYING DAYFILE
 DCM1     SA1    SBUF+IOSS./5+SCLQ  GET INTERNAL CHARACTERISTICS
          MX3    -3 
          AX1    12 
          BX1    -X3*X1 
          SB4    X1-ASIC
          NZ     B4,DCM2     IF NOT ASCII 
          SA0    DLSZ*2 
          EQ     DCMX        RETURN 
 DLD      SPACE  4,10 
**        DLD - DROP *L* DISPLAY. 
* 
*         *DLD* DROPS THE *L* DISPLAY.
* 
*         ENTRY  (B2) = *L* DISPLAY MESSAGE ORDINAL.
* 
*         USES   X - 1, 2.
*                A - 1. 
* 
*         CALLS  BLD, HLP, OLD. 
* 
*         MACROS DSDINP.
  
  
 DLD      SUBR               ENTRY/EXIT 
          SA1    STAT        CHECK FOR HELP STATUS
          SX2    SHLP 
          BX2    X2-X1
          ZR     X2,DLD1     IF HELP STATUS 
          SX2    SSYS        CHECK FOR SYSTEM SECTOR STATUS 
          BX2    X2-X1
          ZR     X2,DLD2     IF SYSTEM SECTOR STATUS
          SX2    Q           SET FOR QUEUED FILE STATUS 
          EQ     DLD3        BUILD DISPLAY
  
*         BUILD DISPLAY FOR HELP STATUS.
  
 DLD1     RJ     HLP         BUILD HELP DISPLAY 
          EQ     DLD4        OUTPUT DISPLAY 
  
*         BUILD ALL NON-HELP DISPLAYS.
  
 DLD2     SX2    S           SET SYSTEM SECTOR FET
 DLD3     RJ     BLD         BUILD *L* DISPLAY
 DLD4     RJ     OLD         OUTPUT *L* DISPLAY 
          DSDINP IPW,C
          EQ     DLDX        RETURN 
 EFP      SPACE  4,10 
**        EFP - EXECUTE FUNCTION PROCESSOR. 
* 
*         ENTRY  (B5) = SUBROUTINE ADDRESS. 
* 
*         EXIT   TO SUBROUTINE WITH RETURN ADDRESS SET. 
* 
*         USES   X - 2, 7.
*                A - 2, 7.
  
  
 EFP      SUBR               ENTRY
          SA2    EFPX        SET RETURN ADDRESS 
          BX7    X2 
          SA7    B5 
          JP     B5+1        JUMP TO SUBROUTINE 
 FOD      SPACE  4,15 
**        FOD - FORMAT OCTAL DATA.
* 
*         *FOD* FORMATS OCTAL DATA AND STORES IT IN *WBUF*. 
* 
*         EXIT   (X6) = FILE STATUS.
*                (B6) = LWA+1 CONVERTED DATA. 
* 
*         USES   X - ALL. 
*                A - 0, 1, 6, 7.
*                B - 2, 5, 6, 7.
* 
*         CALLS  DCM, RSC, WOD, ZTB.
* 
*         MACROS MOVE, READW. 
  
  
 FOD      SUBR               ENTRY/EXIT 
          READW  X2,OBUF,MLLB 
          SX6    X1+2+SEOI
          SB5    OBUF 
          NG     X1,FOD1     IF EOF/EOI 
          SX6    SEOR 
          NZ     X1,FOD1     IF EOR 
          SX6    B0+
 FOD1     SA6    FODA        SAVE FILE STATUS 
          EQ     B5,B6,FODX  IF NO DATA IN WORKING BUFFER 
          RJ     DCM         DETERMINE CHARACTER MODE 
          SB2    12          SHIFT COUNT
          SA0    WBUF        WORKING BUFFER 
 FOD2     SA1    B5          GET NEXT WORD
          SB5    B5+B1
          RJ     WOD         CONVERT WORD TO OCTAL DISPLAY CODE 
          MX0    24 
          BX1    X0*X6       SET FIRST WORD IN BUFFER 
          LX0    -24
          BX2    X0*X6
          LX0    -12
          BX3    X0*X7       SET THIRD WORD IN BUFFER 
          LX2    -12
          BX1    X2+X1
          MX0    12 
          BX4    X0*X7
          LX7    -36
          BX5    X0*X7
          LX0    12 
          BX2    X0*X6       SET SECOND WORD IN BUFFER
          BX2    X2+X4
          LX2    36 
          BX4    X0*X7
          BX2    X2+X4
          LX3    12 
          BX3    X3+X5
          SX4    2R          SET BLANKS IN EACH WORD
          BX7    X3+X4
          LX4    12 
          BX2    X2+X4
          LX4    12 
          BX6    X1+X4
          LX4    12 
          SA6    A0 
          SA0    A0+B1
          BX7    X7+X4
          LX4    12 
          BX6    X2+X4
          SA6    A0 
          SA7    A0+B1
          SA1    B5-B1
          SA0    A0+2 
          RJ     RSC         REMOVE SPECIAL CHARACTERS
          BX1    X7          SET ENTRY TO *ZTB* 
          RJ     ZTB         CONVERT ZERO BYTES TO BLANKS 
          SA6    A0+
          SA0    A0+B1
          BX7    X7-X7       SET END OF LINE
          SA7    A0 
          SA0    A0+B1
          NE     B5,B6,FOD2  IF MORE WORDS TO TRANSFER
          SB7    OBUF 
          SB5    MLLB        MAXIMUM NUMBER OF LINES ON *L* DISPLAY 
          SB7    B6-B7       NUMBER OF LINES OF DATA ON *L* DISPLAY 
          SB5    B5-B7       NUMBER OF LINES TO BLANK PAD 
          SB6    A0          RESET LWA+1 OF BUFFER
          MOVE   B5,BLNS,B6  FILL BUFFER WITH BLANK LINES 
          SB6    B6+B5       RESET LWA+1 OF *WBUF*
          SA1    FODA        RESTORE FILE STATUS
          BX6    X1 
          EQ     FODX        RETURN 
  
  
 FODA     BSS    1           FILE STATUS SAVE AREA
 ILD      SPACE  4,15 
**        ILD - INPUT *L* DISPLAY.
* 
*         *ILD* WILL ROLLOUT UNTIL A COMMAND IS ENTERED VIA THE *L* 
*         DISPLAY.  IF *DSD* RETURNS AN ERROR CONDITION AFTER AN INPUT
*         COMMAND IS ISSUED, *ILD* WILL ISSUE A MESSAGE TO THE SYSTEM 
*         DAYFILE AND TERMINATE.
* 
*         USES   X - 0, 1, 2. 
*                A - 1. 
*                B - 3. 
* 
*         MACROS DSDINP, ENDRUN, MESSAGE, ROLLOUT, ROUTE. 
  
  
 ILD      SUBR               ENTRY/EXIT 
 ILD1     DSDINP IPW         REQUEST INPUT FROM OPERATOR
          SA1    IPW
          MX0    -12
          BX1    -X0*X1 
          AX1    1           IGNORE COMPLETION BIT
          SX2    X1-CNCI
          SB3    X1 
          ZR     X2,ILD2     IF COMMAND NOT ENTERED 
          LT     B3,B1,ILDX  IF NO SYSTEM ERROR 
          ROUTE  ROPB,R      RETURN FILE TO QUEUE 
          MESSAGE (=C* CANNOT ACCESS L-DISPLAY*),0,R
          ENDRUN
  
 ILD2     ROLLOUT ROLB       WAIT FOR *L* DISPLAY INPUT 
          EQ     ILD1        CHECK *L* DISPLAY INPUT
 OLD      SPACE  4,10 
**        OLD - OUTPUT *L* DISPLAY DATA.
* 
*         MACROS DSDOUT.
  
  
 OLD      SUBR               ENTRY/EXIT 
          DSDOUT LFWA 
          EQ     OLDX        RETURN 
 RNR      SPACE  4,15 
**        RNR - READ NEW RECORD.
* 
*         *RNR* READS A NEW RECORD INTO THE QUEUED FILE BUFFER. 
* 
*         ENTRY  (X6) = STATUS (*BOR* OR BOI).
* 
*         EXIT   (X2) = FET ADDRESS OF QUEUED FILE. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         MACROS READ.
  
  
 RNR      SUBR               ENTRY/EXIT 
          SA6    STAT        SET FILE STATUS
          SX6    QBUF        RESET *IN* AND *OUT* FOR EMPTY BUFFER
          SA6    Q+2
          SA6    Q+3
          READ   Q,R
          SA1    Q           CHECK FOR EOR/EOF/EOI
          BX6    X6-X6       INDICATE RECORD EXCEEDS BUFFER 
          LX1    59-4 
          SA6    ERIB 
          PL     X1,RNRX     IF NOT EOR/EOF/EOI 
          LX1    59-3-59+4
          NG     X1,RNRX     IF EOF/EOI 
          SX6    B1          INDICATE ENTIRE DATA RECORD WITHIN BUFFER
          SA6    A6+
          EQ     RNRX        RETURN 
 RQF      SPACE  4,10 
**        RQF - READ QUEUED FILE. 
* 
*         *RQF* READS THE QUEUED FILE INTO THE CIO BUFFER.
* 
*         ENTRY  (X2) = FET ADDRESS OF FILE.
* 
*         USES   X - 1, 3, 4, 5.
*                A - 1, 3, 4. 
* 
*         MACROS READ.
  
  
 RQF      SUBR               ENTRY/EXIT 
          SA4    X2 
          LX4    59-4 
          NG     X4,RQFX     IF EOR/EOF/EOI 
          SA1    A4+1        GET *FIRST*
          SA3    A1+1        GET *IN* 
          SA4    A3+B1       GET *OUT*
          IX5    X3-X4       NUMBER OF WORDS IN BUFFER (*IN*-*OUT*) 
          PL     X5,RQF1     IF *IN* .GE. *OUT* 
          SA3    A4+1        GET *LIMIT*
          IX3    X3-X1       *LIMIT* - *FIRST*
          IX5    X3+X5       NUMBER OF WORDS IN BUFFER
 RQF1     SX5    X5-LBUFL    *L* DISPLAY BUFFER LENGTH
          PL     X5,RQFX     IF NUMBER OF WORDS .GE. *LBUFL*
          READ   X2,R 
          EQ     RQFX        RETURN 
 RPV      SPACE  4,10 
**        RPV - REPRIEVE PROCESSOR. 
* 
*         *RPV* DISPLAYS *SYSTEM ABORT.* MESSAGE AND CLEARS *L* 
*         DISPLAY.
* 
*         USES   B - 2. 
* 
*         CALLS  DLD. 
* 
*         MACROS  REPRIEVE, ROUTE.
  
  
 RPV      BSS    0           ENTRY
          SB2    EABT        DISPLAY *SYSTEM ABORT.* MESSAGE
          RJ     DLD         DROP *L* DISPLAY 
          ROUTE  ROPB,R      RETURN FILE TO QUEUE 
          REPRIEVE RPB,RESET,0  RESET ERROR FLAG
 RSC      SPACE  4,10 
**        RSC - REMOVE SPECIAL CHARACTERS.
* 
*         *RSC* REMOVES SPECIAL CHARACTERS 60B THROUGH 77B FROM 
*         DISPLAY CODE. 
* 
*         ENTRY  (X1) = DISPLAY CODE WORD.
*                (B4) = 0 IF ASCII MODE.
*                (B2) = SHIFT COUNT FOR CONVERTED ASCII CHARACTERS. 
* 
*         EXIT   (X4) = LAST BYTE IF ASCII MODE.
*                (X7) = CONVERTED DISPLAY CODE WORD.
* 
*         USES   X - 0, 1, 2, 3, 4, 7.
*                A - 1, 4.
*                B - 3. 
  
  
 RSC1     BX7    X7-X7
          MX0    5
          MX3    -12
 RSC2     LX1    12 
          BX4    -X3*X1      GET CHARACTER
          ZR     X4,RSC6     IF ZERO BYTE 
          SB3    X4-173B
          PL     B3,RSC3     IF SPECIAL CHARACTER 
          SB3    B3-140B+173B 
          GT     B3,RSC5     IF LOWER CASE
          SB3    B3-133B+140B 
          PL     B3,RSC3     IF SPECIAL CHARACTER 
          SB3    B3-100B+133B 
          GT     B3,RSC5     IF UPPER CASE
          SX4    X4-47B 
          PL     X4,RSC4     IF DISPLAYABLE SPECIAL CHARACTER 
 RSC3     SX4    B0+
 RSC4     MX2    -3 
          BX2    -X2*X4      CHARACTER NUMBER 0..7
          AX4    3           WORD NUMBER
          LX2    1           CREATE SHIFT COUNT 
          SB3    X2 
          LX2    1
          SA4    X4+RSCC     GET WORD 
          SB3    B3+X2
          LX4    B3 
          SB3    X4 
 RSC5     SX4    B3 
          MX2    -6 
          BX4    -X2*X4      GET REPLACEMENT CHARACTER
          BX7    X7+X4       INSERT NEW CHARACTER 
 RSC6     LX0    1
          LX7    B2 
          MX2    -12         RESET MASK 
          NG     X0,RSC2     IF MORE TO PROCESS 
          LX7    -B2
  
 RSC      SUBR               ENTRY/EXIT 
          ZR     B4,RSC1     IF ASCII MODE
          SA4    RSCA        40404040404040404040 
          BX3    X4*X1
          BX7    X1          RETURN ORIGINAL DISPLAY CODE WORD
          LX1    1
          BX4    X4*X1
          BX4    X4*X3
          BX3    X4 
          ZR     X4,RSCX     IF NO SPECIAL CHARACTERS 
  
*         BUILD CHARACTER MASK. 
  
          LX3    -1 
          BX4    X3+X4
          LX3    -1 
          BX4    X3+X4
          BX3    X4 
          LX4    -3 
          BX3    X4+X3       FINAL CHARACTER MASK 
          SA1    RSCB 
          BX1    X3*X1       SAVE BLANK IN SPECIAL CHARACTER POSITIONS
          BX4    -X3*X7      CLEAR OUT SPECIAL CHARACTERS 
          BX7    X4+X1       STORE BLANKS IN DISPLAY CODE WORD
          EQ     RSCX        RETURN 
  
  
 RSCA     DATA   40404040404040404040B
 RSCB     DATA   10H
 RSCC     DATA   10H()*+,-. 
          DATA   10H0123456  /
          DATA   10H89   =   7
          DATA   10H
 SEM      SPACE  4,15 
**        SEM - SET ERROR MESSAGE.
* 
*         *SEM* FORMATS THE APPROPRIATE SCREEN WITH THE ERROR MESSAGE 
*         SET INTO THE DISPLAY. 
* 
*         ENTRY  (B2) = ERROR MESSAGE ORDINAL.
* 
*         EXIT   *LBUF* RESET WITH ERROR MESSAGE. 
* 
*         USES   X - 1, 2.
*                A - 1. 
* 
*         CALLS  BLD, HLP.
  
  
 SEM2     SX2    S           SET SYSTEM SECTOR FET
 SEM3     RJ     BLD         BUILD *L* DISPLAY
  
 SEM      SUBR               ENTRY/EXIT 
          SA1    STAT        CHECK FOR HELP STATUS
          SX2    SHLP 
          BX2    X2-X1
          NZ     X2,SEM1     IF NOT HELP STATUS 
          RJ     HLP         FORMAT HELP SCREEN 
          EQ     SEMX        RETURN 
  
 SEM1     SX2    SSYS        CHECK FOR SYSTEM SECTOR STATUS 
          BX1    X2-X1
          ZR     X1,SEM2     IF SYSTEM SECTOR 
          SX2    Q           SET QUEUED FILE FET
          EQ     SEM3        FORMAT SCREEN
 TLD      SPACE  4,20 
**        TLD - TRANSFER LINES OF DATA. 
* 
*         *TLD* TRANSFERS LINES OF DATA TO THE *L* DISPLAY WORKING
*         BUFFER. 
* 
*         ENTRY  (X2) = FET ADDRESS OF FILE.
* 
*         EXIT   (X6) = STATUS, IF EOR/EOF/EOI ENCOUNTERED. 
*                (X6) = 0, IF NOT EOR/EOF/EOI.
*                (B6) = LWA+1 OF DATA IN WBUF.
* 
*         USES   X - 0, 1, 3, 4, 5, 6, 7. 
*                A - 1, 3, 6, 7.
*                B - 2, 5, 6, 7.
* 
*         CALLS  DCM, RSC.
* 
*         MACROS MOVE, READC. 
  
  
 TLD7     SB7    B5+
          SB2    6
 TLD8     EQ     B5,B6,TLD11 IF ALL WORDS CONVERTED 
          SA1    B5+         CONVERT FIRST 5 CHARACTERS 
          RJ     RSC         REMOVE SPECIAL CHARACTERS
          LX7    30 
          SB5    B5+B1
          ZR     X4,TLD9     IF END OF LINE 
          EQ     B5,B6,TLD10 IF END OF BUFFER 
          BX5    X7          SAVE FIRST 5 CHARACTERS
          SA1    B5          CONVERT SECOND 5 CHARACTERS
          RJ     RSC         REMOVE SPECIAL CHARACTERS
          SB5    B5+1 
          BX7    X7+X5
          NZ     X4,TLD9     IF NOT END OF LINE 
          MX5    -12
          BX5    -X5*X7 
          ZR     X5,TLD9     IF 12-ZERO BIT LINE TERMINATOR 
          SA7    B7 
          SB7    B7+B1
          SX7    2R 
          LX7    59-11
 TLD9     SA7    B7 
          SB7    B7+B1
          EQ     TLD8        LOOP UNTIL ALL WORDS CONVERTED 
  
 TLD10    SA7    B7+
 TLD11    SB6    B7+         LWA+1 OF DATA TO DISPLAY 
  
 TLD      SUBR               ENTRY/EXIT 
          SB6    WBUF 
          SX0    B6          SAVE FWA OF WORKING BUFFER 
          SX5    B0          INITIALIZE LINE COUNTER
          RJ     DCM         DETERMINE WORD COUNT PER LINE
 TLD1     READC  X2,B6,A0 
          SX6    X1+SEOI+2   EOF OR EOI 
          NG     X1,TLD4     IF EOF OR EOI
          SX6    SEOR 
          BX3    X1-X0
          ZR     X3,TLD4     IF EOR WITHOUT DATA
          NZ     X1,TLD2     IF TRANSFER NOT COMPLETE 
          BX6    X4          RESET (LWA) OF DATA
          SA6    B6-B1       RESTORE DATA BEFORE END OF LINE
 TLD2     SA3    B6-B1
          MX4    -12
          NZ     X3,TLD3     IF NOT ZERO WORD 
          SX6    2R          SET NONZERO WORD 
          LX6    -12
          SA6    A3 
 TLD3     BX3    -X4*X3 
          SX0    B6+         LWA+1
          SX5    X5+B1       INCREMENT LINE COUNTER 
          SX6    B0+         CLEAR EOR/EOF/EOI
          SX3    X5-MLLD
          ZR     X3,TLD5     IF MAXIMUM NUMBER OF LINES IN BUFFER 
          SX3    X0-WBUF-WBUFL
          SX4    A0 
          IX3    X3+X4
          NG     X3,TLD1     IF BUFFER NOT FULL 
  
*         BLANK FILL UNUSED LINES IN *L* DISPLAY BUFFER.
  
 TLD4     SX3    MLLD        MAXIMUM NUMBER OF LINES ON *L* DISPLAY 
          IX3    X3-X5       NUMBER OF LINES NOT FILLED WITH DATA 
          ZR     X3,TLD5     IF ALL LINES CONTAIN DATA
          SB7    B6          ADDRESS TO MOVE BLANK LINES
          SB6    B6+X3       RESET LWA+1 OF BUFFER
          BX5    X6          SAVE EXIT CONDITION
          MOVE   X3,BLNS,B7  FILL BUFFER WITH BLANK LINES 
          BX6    X5          RESTORE EXIT CONDITION 
  
*         REMOVE ALL SPECIAL CHARACTERS FROM *L* DISPLAY BUFFER.
  
 TLD5     SB5    WBUF 
          RJ     DCM         DETERMINE CHARACTER MODE 
          ZR     B4,TLD7     IF ASCII MODE
 TLD6     EQ     B5,B6,TLDX  IF ALL WORDS CONVERTED 
          SA1    B5+         CONVERT NEXT WORD
          RJ     RSC         REMOVE SPECIAL CHARACTERS
          SA7    B5 
          SB5    B5+B1
          EQ     TLD6        LOOP UNTIL ALL WORDS CONVERTED 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCFLD 
*CALL     COMCQFM 
*CALL     COMCMVE 
*CALL     COMCPOP 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCWTC 
*CALL     COMCWTO 
*CALL     COMCWTW 
*CALL     COMCWOD 
*CALL     COMCZTB 
          TITLE  BUFFER AREA. 
          USE    BUFFERS
  
  
**        BUFFER DEFINITIONS. 
  
  
 IPW      BSS    0           INPUT BUFFER FOR *L* DISPLAY 
          VFD    12/6,1/0,1/0,46/0
 IBUF     BSS    LCOMU       INPUT BUFFER 
 LFWA     BSS    0           FWA OF *L* DISPLAY BUFFER
          VFD    12/LDSY,1/0,1/0,46/0 
 LBUF     BSS    0           FWA TO MOVE DATA 
 WBHR     EQU    LBUF+LBUFL  WORKING BUFFER HEADER AREA 
 WBUF     EQU    WBHR+LBHRL  WORKING BUFFER 
 OBUF     EQU    WBUF+WBUFL  OCTAL DISPLAY BUILD BUFFER 
 QBUF     EQU    OBUF+MLLB   QUEUED FILE BUFFER 
 SBUF     EQU    QBUF+QBUFL  SYSTEM SECTOR BUFFER 
 RFL=     EQU    SBUF+SBUFL 
          TITLE  PRESET.
 PRS      SPACE  4,15 
**        PRS - PRESET ARGUMENT PROCESSING. 
* 
*         *PRS* ANALYZES THE COMMAND.  THE SPECIFIED QUEUED FILE
*         IS ATTACHED.  AN INITIAL READ ON THE QUEUED FILE IS 
*         PERFORMED.  THE SYSTEM SECTOR IS READ.
* 
*         EXIT   (B5) = ADDRESS OF *HELP* ROUTINE.
*                (JSN) SET IN FETS AND ROUTE PARAMETER BLOCK. 
*                (DFLG) = RANDOM ADDRESS OF DAYFILE.
*                       = 0, IF DAYFILE DOES NOT EXIST. 
*                JSN AND *QFT* ORDINAL OF FILE SET INTO *L* DISPLAY 
*                HEADER.
* 
*         ERROR  TO *ERR* IF A FATAL ERROR CONDITION IS DETECTED. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SA1    JOPR        GET JOB ORIGIN TYPE
          SB1    1
          MX0    -6 
          LX1    0-24 
          SX5    ERIU        * USER ACCESS NOT VALID.*
          BX1    -X0*X1 
          SX1    X1-SYOT
          MX4    24 
          NZ     X1,ERR      IF JOB NOT SYSTEM ORIGIN 
          GETACT PRSB        CHECK LONG-TERM ACTIVITY FLAG
          SA1    PRSB 
          LX1    59-47
          PL     X1,ERR      IF *L* DISPLAY NOT ACTIVE ON THIS JOB
  
*         CHECK JSN.
  
          SA1    ACTR 
          SA3    ARGR 
          BX6    X4*X3
          SB2    X1 
          SX5    ERAR        * ARGUMENT ERROR.* 
          NE     B2,B1,ERR   IF NO ARGUMENTS OR TOO MANY
          BX3    X0*X3
          BX1    -X4*X3 
          SX5    ERIJ        * INCORRECT JSN.*
          NZ     X1,ERR      IF GREATER THAN 4 CHARACTERS 
          LX0    36-0        CHECK FOR 3 CHARACTER JSN
          BX2    -X0*X3 
          NZ     X2,PRS1     IF NOT 3 CHARACTER JSN 
          SX2    1R          SPACE-FILL JSN 
          LX2    -24
          BX6    X2+X6
 PRS1     LX0    6
          BX2    -X0*X3 
          ZR     X2,ERR      IF JSN .LT. 3 CHARACTERS 
          SA1    QACS+2      SET JSN IN *QAC* PARAMETER BLOCK 
          BX7    X1+X6
          SA7    A1 
          SA6    PRSA        SET JSN
          SA6    ROPB        SET JSN IN *ROUTE* PARAMETER BLOCK 
  
*         SEARCH *QFT* FOR FILE.
  
          SA3    TQTG-1 
 PRS2     ACQUIRE QACPB,R    ATTACH THE QUEUED FILE 
          SA1    QACPB
          MX0    -9          SAVE FUNCTION FOR *QAC* CALL 
          LX0    B1 
          BX6    -X0*X1 
          MX2    -8          CHECK FOR ERROR
          LX1    0-11 
          BX1    -X2*X1 
          ZR     X1,PRS4     IF NO ERROR
          SA6    A1 
          SA3    A3+B1       GET QUEUE TYPE FROM TABLE
          SB2    B1+
          ZR     X3,PRS3     IF FILE NOT IN *QFT* 
          SA4    QACS+3      SET QUEUE TYPE IN *QAC* PARAMETER BLOCK
          MX0    12 
          BX6    -X0*X4 
          BX6    X3+X6
          SA6    A4 
          EQ     PRS2        SEARCH *QFT* FOR FILE
  
 PRS3     SA1    PRSA 
          SB2    1R$
          SB5    ERNJ        * JSN XXXX NOT FOUND.* 
          RJ     SNM         SET JSN IN MESSAGE 
          SX5    ERNJ 
          EQ     ERR         ISSUE ERROR MESSAGE AND ABORT
  
 PRS4     REPRIEVE RPB,SET,277B  SET *REPRIEVE* PROCESSING
          SA1    PRSA        GET JSN
          SX6    3           SET JSN AS FILE NAME IN FETS 
          BX6    X1+X6
          SA6    Q           SET JSN IN QUEUED FILE FET 
          SA6    S           SET JSN IN SYSTEM SECTOR FET 
          SX7    B1+         SET RANDOM READ IN FET TO BOI
          SA7    Q+6
          SX6    SHLP 
          RJ     RNR         READ QUEUED FILE INTO BUFFER 
          SA1    QACF        SAVE DAYFILE ADDRESS 
          MX2    -30
          LX1    29-59
          BX6    -X2*X1 
          SA6    DFLG 
          QCALL  QRSF,S      READ SYSTEM SECTOR 
          SA2    PRSA        SET EOR STATUS IN SYSTEM SECTOR FET
          SX6    23B
          BX6    X2+X6
          SA6    S
  
*         SET UP HEADER.
  
          SA1    PRSA        GET JSN
          SB2    1R$
          SB5    LBHR 
          RJ     SNM         SET JSN INTO HEADER
          SA1    QACPB+4
          MX0    -12         CONVERT *QFT* ORDINAL
          LX1    0-36 
          BX1    -X0*X1 
          SX1    X1+10000B
          MX0    24 
          RJ     COD         CONVERT TO OCTAL DISPLAY 
          LX4    6
          BX1    X0*X4
          SB2    1R+
          SB5    LBHR 
          RJ     SNM         SET *QFT* ORDINAL INTO HEADER
          SA1    SBUF+IOSS./5+SCLQ  GET INTERNAL CHARACTERISTICS
          MX3    -3 
          AX1    12 
          BX1    -X3*X1 
          SA1    PRSC+X1
          SB2    1R-
          SB5    LBHR 
          RJ     SNM         SET *IC* INTO HEADER 
  
*         SET BUFFER HEADER.
  
          MOVE   LBHRL,LBHR,WBHR  SET WORKING BUFFER
          SB5    HLP         *HELP* FUNCTION PROCESSOR
          SB2    B0+         INDICATE NO ERROR
          EQ     PRSX        RETURN 
  
  
 PRSA     CON    0           JSN
 PRSB     CON    0           JOB ACTIVITY 
 PRSC     BSS    0           INTERNAL CHARACTERISTICS 
          LOC    0
 DCIC     DATA   2LDC        DISPLAY CODE 
 ASIC     DATA   2LAS        ASCII
 BNIC     DATA   2LBN        BINARY 
 A6IC     DATA   2LA6        6/12 ASCII 
          LOC    *O 
 ERR      SPACE  4,10 
**        ERR - ERROR PROCESSOR.
* 
*         *ERR* ABORTS AFTER ISSUING THE SPECIFIED MESSAGE. 
* 
*         ENTRY  (X5) = FWA OF ERROR MESSAGE. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ERR      BSS    0           ENTRY
          MESSAGE X5,0,R     ISSUE ERROR MESSAGE
          ABORT 
          SPACE  4,10 
**        ERROR MESSAGES TO DAYFILE.
  
  
 ERAR     DATA   C* ARGUMENT ERROR.*
 ERIJ     DATA   C* INCORRECT JSN.* 
 ERIU     DATA   C* USER ACCESS NOT VALID.* 
 ERNJ     DATA   C* JSN $$$$ NOT FOUND.*
          SPACE  4,10 
**        TQTG - TABLE OF QUEUE TYPES FOR *GET* FUNCTION. 
* 
*T,       12/ *QUEUE TYPE*,48/ 0. 
* 
*         BITS 59-48 IN WORD 8 IN THE SELECTION CRITERIA
*         PORTION OF THE *QAC* PARAMETER BLOCK WILL BE SET
*         TO QUEUE TYPE.
  
  
 TQTG     BSS    0
          VFD    12/PRQQ,48/0  PRINT FILES
          VFD    12/WTQQ,48/0  WAIT FILES 
          VFD    12/PHQQ,48/0  PUNCH FILES
          VFD    12/PLQQ,48/0  PLOT FILES 
          CON    0           END OF TABLE 
  
  
          ERRNG  QBUF-*      QBUF AND SBUF CANNOT OVERLAY PRESET
  
          END 
