*COMMAND FILE/DEVICE OPEN, I/O, ETC.                    HEADER  FUPCMD  0001.000
         M.PGM     FUPCMD,MPX-32,3.6.1,00                               0002.000
         SPACE                                                          0003.000
*                                                                       0004.000
************************************************************************0005.000
*                                                                      *0006.000
*                    PROPRIETARY INFORMATION                           *0007.000
*                    -----------------------                           *0008.000
*   THE INFORMATION CONTAINED HEREIN IS PROPRIETARY TO ENCORE          *0009.000
*   COMPUTER CORPORATION AND/OR ITS VENDORS, AND ITS USE, DISCLOSURE,  *0010.000
*   OR DUPLICATION IS SUBJECT TO THE RESTRICTIONS STATED IN THE        *0011.000
*   STANDARD ENCORE COMPUTER CORPORATION LICENSE TERMS AND CONDITIONS  *0012.000
*   OR THE APPROPRIATE THIRD-PARTY SUBLICENSE AGREEMENT.               *0013.000
*                                                                      *0014.000
*                       RESTRICTED RIGHTS                              *0015.000
*                       -----------------                              *0016.000
*   USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT       *0017.000
*   TO RESTRICTIONS AS SET FOURTH IN SUBDIVISION (c) (1) (ii) OF       *0018.000
*   THE RIGHTS IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT       *0019.000
*   252.227.7013                                                       *0020.000
************************************************************************0021.000
* (C) COPYRIGHT 1989 ENCORE COMPUTER CORPORATION                       *0022.000
*     ALL RIGHTS RESERVED                                              *0023.000
************************************************************************0024.000
*                                                                       0025.000
         SPACE                                                          0026.000
************************************************************************0027.000
*                                                                       0028.000
* PROCEDURE GETNXTCL- COMMAND INPUT TASK FOR COMMUNICATION COMMANDS     0029.000
*                                                                       0030.000
*    THIS ROUTINE IS THE COMMAND LINE INPUT AND PARSE PROGRAM FOR       0031.000
*    THE COMMUNICATIONS COMMAND TASK. THIS ROUTINE WILL READ IN         0032.000
*    COMMAND LINE FROM EITHER THE TSM BUFFER FOR IMMEDIATE TYPE         0033.000
*    COMMANDS, THE INPUT STREAM FROM EIHTER THE SELECT FILE, THE        0034.000
*    TERMINAL OR FROM THE BATCH STREAM. THE DATA IS STORED IN THE       0035.000
*    BUFFER DEFINED BY SYMBOL "LINEBUFR". THE COMMAND LINE MAY          0036.000
*    CONTAIN LINE CONTINUATIONS BY PLACING A HYPHEN AS THE LAST         0037.000
*    SIGNIFICANT CHARACTER ON THE LINE. COMMAND LINES MAY BE            0038.000
*    COMMENTED WITH THE USE OF THE "!" CHARACTER. DATA IS STORED        0039.000
*    WITH MULTIPLE BLANKS AND COMMENTS REMOVED. LINE CONTINUATIONS      0040.000
*    HAVE BEEN FULLY PROCESSED AND THE FINAL LINE IS STORED AS A        0041.000
*    SINGLE STRING OF DATA BYTES.                                       0042.000
*                                                                       0043.000
*                        NOTE                                           0044.000
*                                                                       0045.000
*    THIS ROUTINE REQUIRES THE PROGRAM BE CATALOGED WITH:               0046.000
*                                                                       0047.000
*               ASSIGN2 CMD=SYC                                         0048.000
*                      &                                                0049.000
*               ASSIGN4 PMT=UT                                          0050.000
*                                                                       0051.000
*    THIS IS NECESSARY TO MAKE THE CONNECTION TO 'UT' CORRECTLY         0052.000
*    IN ORDER TO OBTAIN READ/WRITE ACCESS FOR INTERACTIVE JOBS.         0053.000
*                                                                       0054.000
*                                                                       0055.000
*   ALSO, SHOULD CATALOG WITH ASSIGNMENT:                               0056.000
*                                                                       0057.000
*                  OPTION TEXT PROMPT                                   0058.000
*                                                                       0059.000
*                                                                       0060.000
************************************************************************0061.000
         SPACE                                                          0062.000
*                                                                       0063.000
*    EXTERNAL REFERENCES                                                0064.000
*                                                                       0065.000
         SPACE                                                          0066.000
         EXT       FUP.000         MAIN DISPATCHER LOOP                 0067.000
         EXT       TOPOSTK         TOP OF THE PROGRAM STACK             0068.000
         EXT       FLAGBITS        PROGRAM GLOBAL FLAGS                 0069.000
         EXT       FUN.SAVE                                             0070.000
         EXT       F.LIMA                                               0071.000
         EXT       HEADER          ! ROUTINE TO PRINT TITLE             0072.000
         EXT       ERROR2          ROUTINE TO PRINT A MESSAGE           0073.000
         EXT       FUPABORT        ABORT MODULE - ENTRY POINT           0074.000
         EXT       ABORTNOM        ABORT WITH NO MESSAGE OUTPUT         0075.000
         EXT       FUPABRT2        ABORT ROUTINE FOR I/O RELATED PROBLEM0076.000
         EXT       X.OPEN          OPEN RESOURCE ROUTINE                0077.000
         EXT       RSEQ            READ SEQUENTIAL ROUTINE              0078.000
         EXT       WSEQ            WRITE SEQUENTIAL ROUTINE             0079.000
*                                                                       0080.000
         EXT       CNP.ACCD        CNP OPTION FIELD VALUE               0081.000
         EXT       CNP.ACC7        CNP OPTION FIELD VALUE, APPEND EXC.  0082.000
         EXT       CNP.ACC5        CNP OPTION FIELD VALUE, UPDATE EXC.  0083.000
         EXT       CNP.ACC6        CNP OPTION, UPDATE, IMPLICIT SHARED  0084.000
         EXT       GEN.M023        ERROR MESSAGE                        0085.000
         EXT       GEN.M007        ERROR MESSAGE                        0086.000
         EXT       GEN.M009        ERROR MESSAGE                        0087.000
         EXT       GEN.M004        ERROR MESSAGE                        0088.000
         EXT       FUPABC2         ABORT CODE                           0089.000
         EXT       FUPABC3         ABORT CODE                           0090.000
         EXT       FUPABC4         ABORT CODE                           0091.000
         EXT       BORTCODE        LOCATION TO HOLD THE ABORT CODE      0092.000
         EXT       ADR.MASK        MASK CC'S LEAVING ADDRESS            0093.000
         EXT       STACKPTR        ! STACK POINTER SAVE WORD            0094.000
         SPACE                                                          0095.000
*                                                                       0096.000
*    EXTERNAL DEFINITIONS                                               0097.000
*                                                                       0098.000
         DEF       GETCRESP        ! GET ACTION CONFIRMATION RESPONSE   0099.000
         DEF       GETNXTCL        ! READ COMMAND INPUT                 0100.000
         DEF       TEXTBUFR        ! COMMAND LINE BUFFER ADDRESS        0101.000
         DEF       TEXTSIZE        ! FINAL LENGTH OF COMMAND            0102.000
         DEF       PRINTOUT        ! PRINT OUT A LINE OF TEXT           0103.000
         DEF       TEXTLNGH        ! TEXT LENGTH                        0104.000
         DEF       LINEBUFR        ! LINE BUFFER                        0105.000
         DEF       LINELNGH        ! AND ITS LENGTH                     0106.000
*                                                                       0107.000
         TITLE     FILE UTILITY COMMAND PROCESSING DEFINITION AND DATA  0108.000
*                                                                       0109.000
*    SYSTEM MACRO CALLS FOR DEFINITIONS AND EQUATES                     0110.000
*                                                                       0111.000
         M.REQS                    REGISTER EQUATES                     0112.000
         M.DQE.                    DISPATCH QUEUE ENTRY EQUATES         0113.000
         M.TSA.                    TASK SERVICE AREA EQUATES            0114.000
         M.COMM.                   COMMMUNICATIONS REGION EQUATES       0115.000
         M.FCB.                    FILE CONTROL BLOCK EQUATES           0116.000
         M.FPT.                    FILE POINTER TABLE EQUATES           0117.000
         M.UDT.                    UNIT DEFINITION TABLE EQUATES        0118.000
         M.DFT.                    FILE ASSIGNMENT TABLE EQUATES        0119.000
*                                                                       0120.000
*    LOCAL DEFINITIONS AND DATA AREA                                    0121.000
*                                                                       0122.000
BOTCAPCK EQU       X'61'           ! LOW END OF LOWER CASE CHAR SET     0123.000
TOPCAPCK EQU       X'7A'           ! THE TOP OF THE LOWER CASE SET      0124.000
CAPCONV  EQU       X'20'           ! CONVERSION CONSTANT FOR LOWER CASE 0125.000
*                                  ! TO UPPER CASE CONVERSION           0126.000
CONTUCHR EQU       X'2D'           ! THE ASCII CHAR. '-'                0127.000
COMNTCHR EQU       X'21'           ! THE ASCII CHAR. '!'                0128.000
CARRIGCK EQU       X'0D'           ! THE ASCII CHAR. FOR CARRIAGE RETURN0129.000
SPACE    EQU       X'20'           ! THE ASCII SPACE CHAR.              0130.000
QUOTE    EQU       X'27'           ! THE ASCII SINGLE QUOTE CHARACTER   0131.000
UNDERSCR EQU       X'5F'           ! THE ASCII CHAR. '_'                0132.000
GREATER  EQU       X'3E'           ! THE ASCII CHAR. '>'                0133.000
*                                                                       0134.000
INPBUFSZ EQU       N'80'           ! LENGTH OF INPUT BUFFER             0135.000
TRANSIZE EQU       N'72'           # OF BYTES TO READ FROM COMMAND      0136.000
*                                  LINE INPUT RECORDS                   0137.000
MAXCMDLN EQU       N'3072'         ! LENGTH OF MAXIMUM INPUT            0138.000
         SPACE                                                          0139.000
TY       EQU       X'0C'           DEVICE TYPE CODE FOR ANY TERMINAL,   0140.000
*                                  EXCEPT THE OPERATOR'S CONSOLE        0141.000
CT       EQU       X'0D'           DEVICE TYPE CODE FOR OPERATOR'S      0142.000
*                                  CONSOLE (ASSIGNABLE)                 0143.000
         SPACE                                                          0144.000
*                                                                       0145.000
*    FLAGS ARE KEPT IN TW0 BYTES. STAFLAGS HOLD DYNAMIC STATUS          0146.000
*    ABOUT THE COMMAND LINE BEING PROCESSED. PRMFLAGS HOLDS             0147.000
*    DATA THAT MUST BE MAINTAINED OVER THE INVOKATION OF THE            0148.000
*    PROGRAM. STAFLAGS IS CLEARED AT THE BEGINNING OF EACH              0149.000
*    PASS THROUGH THE LOOP.                                             0150.000
*                                                                       0151.000
*    DEFINE STATUS FLAG BITS                                            0152.000
*                                                                       0153.000
CNTUFLAG EQU       0               ! LINE CONTINUATION REQUESTED        0154.000
SPACEFLG EQU       CNTUFLAG+1      ! SPACE CHAR SEEN IN INPUT           0155.000
CONTUFLG EQU       SPACEFLG+1      ! FLAG CONTUATION IN PROGRESS        0156.000
QUOTE.F  EQU       CONTUFLG+1      ! QUOTED NAME BEING INPUT.           0157.000
*                                                                       0158.000
*    DEFINE PERMANENT FLAGS                                             0159.000
*                                                                       0160.000
ONESHOT  EQU       0               ! INVOKED BY SINGLE LINE COMMAND     0161.000
TSMDONE  EQU       ONESHOT+1       ! TSM INPUT BUFFER PROCESSED         0162.000
PMTISTTY EQU       TSMDONE+1       LFC "PMT" IS ASSIGNED TO A TSM       0163.000
*                                  CONTOLLED TERMINAL DEVICE IF SET     0164.000
*                                                                       0165.000
*    ALLOCATE FLAG AREA                                                 0166.000
*                                                                       0167.000
STAFLAGS DATAB     X'0'            ! STATUS FLAGS TO ZEROS              0168.000
PRMFLAGS DATAB     X'0'            ! PERMANENT FLAGS                    0169.000
*                                                                       0170.000
PROMPTIN DATAB     C' VOL'         ! INITIAL PROMPT STRING              0171.000
PROMPEND DATAB     C'> '           ! INITIAL PROMPT END CHAR            0172.000
PMTSIZ   EQU       $-PROMPTIN      ! LENGHT OF PROMPT STRING            0173.000
LINEBUFR RES       INPBUFSZ        ! RESERVE SPACE FOR INPUT DATA LINE  0174.000
*                                                                       0175.000
*    DEFINE LINE BUFFER AND ASSOCIATED PARAMETERS                       0176.000
*                                                                       0177.000
TEXTBUFR RES       MAXCMDLN        ! LENGTH OF MAXIMUM COMMAND TO PARSE 0178.000
TEXTSIZE DATAH     0               ! LENGTH OF COMMAND GOES HERE        0179.000
TEXTLNGH DATAH     MAXCMDLN        ! TOTAL LENGTH OF THE BUFFER         0180.000
LINELNGH DATAH     INPBUFSZ        ! TOTAL LENGHT OF LINE BUFFER        0181.000
*                                                                       0182.000
CMDZ     DATAW     G'SYC'          ! THE LFC TO BE ASSIGNED TO INPUT    0183.000
PMTZ     DATAW     G'SLO'          ! THE LFC TO BE ASSIGNED TO OUTPUT   0184.000
*                                            ! RESPONSE OUT             0185.000
*                                                                       0186.000
*                                                                       0187.000
*    DEFINE FCB FOR READING INPUT WITH LABEL 'RDCRT', LFC OF 'CMD'      0188.000
*    READS ARE FOR 'INPBUFSZ' CHARS INTO BUFFER 'INPBUF'                0189.000
*                                                                       0190.000
CMDFCB   DATAW     G'SYC'                                               0191.000
         REZ       15W                                                  0192.000
*                                                                       0193.000
*    DEFINE FCB FOR PROMPT OUTPUT AND COMMAND LINE ECHO WHEN COMMANDS   0194.000
*    ARE READ FROM A BATCH OR SELECT FILE. LABEL IS 'WRTCRT', LFC       0195.000
*    IS 'PMT' WITH COUNT SET TO 'PMTSIZ' AND BUFFER 'PROMPTIN'.         0196.000
*                                                                       0197.000
PMTFCB   DATAW     G'SLO'                                               0198.000
         REZ       15W                                                  0199.000
************************************************************************0200.000
         TITLE     GET CONFIRMATION RESPONSE                            0201.000
         SPACE                                                          0202.000
         CSECT                                                          0203.000
         SPACE                                                          0204.000
*********************************************************************   0205.000
*                                                                       0206.000
* ROUTINE GETCRESP - GET CONFIRMATION RESPONSE                          0207.000
*                                                                       0208.000
*        THIS ENTRY POINT IS USED TO GET A CONFIRMATION RESPONSE        0209.000
*        (Y OR N) TO AN ACTION (IE., DELETE FILE, SAVE FILE, ETC.).     0210.000
*        THIS ROUTINE MAY BE USED ONLY AFTER "GETNXTCL" HAS BEEN        0211.000
*        INVOKED (FOR THE FIRST TIME).                                  0212.000
*                                                                       0213.000
*                                                                       0214.000
* INPUT PARAMETERS:                                                     0215.000
*                                                                       0216.000
*        NONE                                                           0217.000
*                                                                       0218.000
* OUTPUT PARAMETERS:                                                    0219.000
*                                                                       0220.000
*        NONE                                                           0221.000
*                                                                       0222.000
* IMPLICIT OUTPUTS:                                                     0223.000
*                                                                       0224.000
*        TEXTBUFR CONTAINS THE COMMAND LINE                             0225.000
*                                                                       0226.000
************************************************************************0227.000
         SPACE                                                          0228.000
         BOUND     1W                                                   0229.000
GETCRESP EQU       $               ! ENTRY POINT                        0230.000
         PUSH                      SAVE REGS                            0231.000
         LA        R2,CMDFCB       COMMAND INPUT FCB ADDRESS            0232.000
         LA        R6,LINEBUFR     DATA BUFFER ADDRESS                  0233.000
         LI        R7,TRANSIZE     # BYTES TO TRANSFER (READ)           0234.000
         SBR       R7,0            TELL I/O ROUTINE R7 CONTAINS BYTE    0235.000
*                                  COUNT (INSTEAD OF BLOCK COUNT)       0236.000
         BL        RSEQ            READ THE DATA                        0237.000
         BCF       CC1,GETC.010    GO FOR NOT EOF/EOM                   0238.000
*  EOF/EOM  --  SO MUST ABORT WITH AN ERROR MESSAGE                     0239.000
         LA        R6,GEN.M004     ERROR MESSAGE                        0240.000
         BL        FUPABRT2        ABORT ROUTINE  --  ENTRY POINT FOR   0241.000
*                                  I/O RELATED PROBLEMS                 0242.000
         SPACE                                                          0243.000
GETC.010 EQU       $                                                    0244.000
         BCF       CC2,GETC.020    GO FOR NO I/O ERROR(S)               0245.000
*                                                                       0246.000
*  I/O ERROR(S) HAVE OCCURED -- SO PRINT ERROR MESSAGE & ABORT          0247.000
*                                                                       0248.000
         LA        R6,GEN.M007     ERROR MESSAGE                        0249.000
         BL        FUPABRT2        ABORT ROUTINE  --  ENTRY POINT FOR   0250.000
*                                  I/O RELATED PROBLEMS                 0251.000
         SPACE                                                          0252.000
GETC.020 EQU       $                                                    0253.000
         POP                       RESTORE REGS                         0254.000
         TRSW      R0              RETURN                               0255.000
         TITLE     GET NEXT COMMAND LINE                                0256.000
*********************************************************************   0257.000
*                                                                       0258.000
* ROUTINE GETNXTCL - GET NEXT COMMAND LINE                              0259.000
*                                                                       0260.000
*     THIS ROUTINE IS CALLED TO INPUT THE NEXT COMMAND LINE FROM        0261.000
*     THE COMMAND STREAM.  FOR TSM ACTIVATED TASKS                      0262.000
*                           THE TSM BUFFER IS CHECKED. IF THE COMMAND   0263.000
*     WAS EXPRESSED AS AN IMMEDIATE COMMAND (THAT IS, THE COMMAND       0264.000
*     DATA APPEARS ON THE LINE WITH THE COMMAND VERB, OR PROGRAM        0265.000
*     NAME), THE EXECUTION IS CONSIDERED "ONE SHOT" AND END OF          0266.000
*     FILE EXIT WILL BE TAKEN ON THE CALL FOR THE NEXT LINE.            0267.000
*                                                                       0268.000
* INPUT PARAMETERS:                                                     0269.000
*                                                                       0270.000
*        NONE                                                           0271.000
*                                                                       0272.000
* OUTPUT PARAMETERS:                                                    0273.000
*                                                                       0274.000
*        CC1 = 1  IF WANT TO EXIT (IE., EOF OR ONESHOT EXECUTION)       0275.000
*        CC1 = 0  OTHERWISE                                             0276.000
*        CC2 = 1  IF LINE BUFFER OVERFLOW                               0277.000
*        CC2 = 0  OTHERWISE                                             0278.000
*                                                                       0279.000
* IMPLICIT OUTPUTS:                                                     0280.000
*                                                                       0281.000
*        TEXTBUFR CONTAINS THE COMMAND LINE                             0282.000
*                                                                       0283.000
*                                                                       0284.000
*                                                                       0285.000
************************************************************************0286.000
         BOUND     1W              ! ALIGN FOR ENTRY                    0287.000
GETNXTCL EQU       $               ! ENTRY POINT                        0288.000
         ANMW      R0,ADR.MASK     INITIALIZE CC'S FOR RETURN           0289.000
         PUSH                      SAVE REGS                            0290.000
         TBM       ONESHOT,PRMFLAGS ! IS EXECUTIION FOR ONE PASS ONLY   0291.000
         BNS       GET.010         GO FOR NOT ONESHOT EXECUTION         0292.000
         SBM       CC1,0W,X1       INDICATE WANT TO EXIT                0293.000
         BU        GET.EXIT        GO TO ROUTINE EXIT POINT             0294.000
GET.010  EQU       $                                                    0295.000
         TBM       TSMDONE,PRMFLAGS     IS THIS INITIAL ENTRY INTO THIS 0296.000
*                                       ROUTINE ???                     0297.000
         BS        GET.040         GO FOR NOT INITIAL ENTRY             0298.000
*                                                                       0299.000
*  NEED TO CHECK IF THIS TASK WAS TSM ACTIVATED                         0300.000
*  (IE., LOOK AT THE DQE ENTRY )                                        0301.000
*  IF TASK WAS NOT TSM ACTIVATED ONESHOT EXECUTION IS NOT VALID         0302.000
*  SINCE A LINE BUFFER WILL NOT HAVE BEEN ALLOCATED                     0303.000
*                                                                       0304.000
         LW        R2,C.TSAD       TSA ADDRESS                          0305.000
         LW        R2,T.PRNO,X2    DQE ADDRESS                          0306.000
         TBM       DQE.TMOR,DQE.USHF,X2      TSM ASSOCIATED TASK ???    0307.000
         BS        GET.020         GO FOR TSM ACTIVATED                 0308.000
         SBM       TSMDONE,PRMFLAGS     NOT A TSM ACTIVATED TASK ...    0309.000
*                                  DON'T NEED TO CHECK THIS ANY MORE    0310.000
GET.020  EQU       $                                                    0311.000
*                                                                       0312.000
*  ISSUE AN EXPLICIT OPEN FOR BOTH LFC'S "PMT" & "CMD"                  0313.000
*  BE SURE TO OPEN (THE OUTPUT) LFC "PMT" FIRST THOUGH                  0314.000
*  SINCE TSM CURRENTLY REQUIRES THIS (FOR OPTION TEXT -- ECHOS LINE)    0315.000
*                                                                       0316.000
*                                                                       0317.000
*        OPEN THE COMMAND OUTPUT DEVICE/FILE                            0318.000
*                                                                       0319.000
* IF THE RESOURCE ASSOCIATED WITH THE LFC 'SLO' IS AN SLO FILE, THEN OPE0320.000
* WITH DEFAULT ACCESS RIGHTS.  IF THE RESOURCE IS A PERM. FILE OR A     0321.000
* DEVICE OPEN THE RESOURCE IN UPDATE EXCLUSIVE ACCESS.                  0322.000
*                                                                       0323.000
         LW        R2,C.TSAD       GET THE TSA ADDRESS                  0324.000
         LB        R5,T.FILES,R2   NUMBER OF FAT/FPT PAIRS              0325.000
         TRN       R5,R5           NEGATE FOR LOOP CONTROL              0326.000
         LW        R2,T.FPTA,R2    ADDRESS OF BEGINNING OF FILE PTR. TBL0327.000
GET.032  LW        R6,0,R2         GET THE LFC OF RESOURCE FROM FPT     0328.000
         CAMW      R6,PMTFCB       IS IT 'SLO'?                         0329.000
         BEQ       GET.031         IF SO, GO PROCESS IT                 0330.000
         ADI       R2,3W           NEXT FPT ENTRY                       0331.000
         BIB       R5,GET.032      LOOP                                 0332.000
* WE SHOULD NEVER TAKE THIS BRANCH!                                     0333.000
         BU        GET.035         ERROR! DIDN'T FIND 'SLO' LFC!        0334.000
*                                                                       0335.000
GET.031  LW        R2,FPT.FATA,R2  FAT ADDRESS FROM FPT                 0336.000
         LB        R4,DFT.ACF,R2   GET ACCESS FLAGS BYTE FROM FAT       0337.000
         SLL       R4,28           ISOLATE RIGHT FOUR BITS              0338.000
         SRL       R4,28                                                0339.000
         CI        R4,3            IS RESOURCE AN SLO FILE?             0340.000
         BEQ       GET.033         IF S, GO FOR DEFAULT ACCESS          0341.000
         LH        R7,CNP.ACC6     UPDATE ACCESS, IMPLICIT SHARED       0342.000
         BU        GET.034         GO FOR THE OPEN                      0343.000
GET.033  LH        R7,CNP.ACCD     CNP ACCESS  - DEFAULT                0344.000
GET.034  LA        R5,PMTFCB       FCB ADDRESS                          0345.000
         BL        X.OPEN         BUILD CNP & ISSUE "OPEN" SERVICE CALL 0346.000
         BNS       GET.030         BRANCH FOR SUCCESSFUL OPEN           0347.000
*                                                                       0348.000
*        OPEN FAILED  --  CAN'T ISSUE ERROR MESSAGE, SO ABORT WITH      0349.000
*                         AN APPROPRIATE ABORT CODE                     0350.000
*                                                                       0351.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0352.000
*        RETURNED FROM SERVICE ROUTINE                                  0353.000
GET.035  LW        R0,FUPABC2      ABORT CODE FOR OPEN FAILURE ON THE   0354.000
*                                  COMMAND OUTPUT DEVICE/FILE           0355.000
         STW       R0,BORTCODE     SAVE IT                              0356.000
         BL        ABORTNOM        ABORT WITH NO MESSAGE OUTPUT         0357.000
         SPACE                                                          0358.000
GET.030  EQU       $                                                    0359.000
         SPACE                                                          0360.000
*                                                                       0361.000
*  NEED TO FIND OUT IF THING ASSIGNED TO LFC "PMT" IS A TSM CONTROLLED  0362.000
*  TERMINAL DEVICE.  THIS INFORMATION IS NEEDED TO DECIDE WHAT TO DO    0363.000
*  IF THE END-OF-MEDIUM BIT IS SET IN THE FCB AFTER AN I/O OPERATION    0364.000
*  ON THE OUTPUT LFC (PMT).  IF EOM IS SET & LFC "PMT" IS ASSIGNED TO   0365.000
*  A TSM CONTROLLED TERMINAL, THEN CONTINUE PROCESSING THE CURRENT      0366.000
*  COMMAND WITH NO AUDIT TRAIL OUTPUT.  IF AN ERROR OCCURS THE AUDIT    0367.000
*  TRAIL INHIBIT BIT WILL BE CLEARED, THEREBY, ALLOWING ERROR           0368.000
*  MESSAGES TO BE OUTPUT TO THE TERMINAL.  THE AUDIT TRAIL INHIBIT      0369.000
*  BIT IS ALSO CLEARED AT THE START OF EACH NEW COMMAND.                0370.000
*                                                                       0371.000
         SPACE                                                          0372.000
*                                                                       0373.000
*  GET FAT ADDRESS FROM FCB                                             0374.000
*                                                                       0375.000
         LA        R2,PMTFCB       FCB ADDRESS                          0376.000
         LW        R2,FCB.FATA,X2  FAT ADDRESS                          0377.000
         SLL       R2,8            MASK BYTE ZERO                       0378.000
         SRL       R2,8                                                 0379.000
*                                                                       0380.000
*  IS LFC "PMT" ASSIGNED TO A SLO FILE ???                              0381.000
*                                                                       0382.000
         LB        R4,DFT.ACF,X2   GET 4 BIT VALUE FROM FAT             0383.000
         SLL       R4,28           MASK LEFT 4 BITS                     0384.000
         SRL       R4,28                                                0385.000
         CI        R4,3            SLO FILE ?                           0386.000
         BEQ       GET.026         GO FOR SLO FILE                      0387.000
*                                                                       0388.000
*  NOT AN SLO FILE;  LOOK IN FAT'S ASSOCIATED UDT FOR THE DEVICE        0389.000
*  TYPE CODE.  IS THE DEVICE A TERMINAL ???                             0390.000
*                                                                       0391.000
         LH        R3,DFT.UDTX,X2  UDT INDEX FROM FAT                   0392.000
         MPI       R2,UDT.SIZE     OFFSET FROM START OF UDT ENTRIES     0393.000
         ADMW      R3,C.UDTA       ABSOLUTE ADDRESS OF DESIRED UDT ENTRY0394.000
         LB        R4,UDT.DTC,X3   DEVICE TYPE CODE                     0395.000
         CI        R4,TY           ANY TTY OTHER THAN CONSOLE ???       0396.000
         BEQ       GET.023         GO FOR A TERMINAL                    0397.000
         CI        R4,CT           OPERATOR CONSOLE (ASSIGNABLE) ???    0398.000
         BNE       GET.026         GO FOR DEVICE NOT A TERMINAL         0399.000
*                                                                       0400.000
*  MAKE SURE TERMINAL IS UNDER TSM CONTROL                              0401.000
*                                                                       0402.000
GET.023  EQU       $                                                    0403.000
         TBM       UDT.TSM,UDT.STAT,X3  TSM CONTROLLED TERMINAL ???     0404.000
         BNS       GET.026         GO FOR NOT A TSM CONTROLLED TERMINAL 0405.000
*                                                                       0406.000
*  DEVICE ASSIGNED TO LFC "PMT" IS A TSM CONTROLLED TERMINAL.           0407.000
*  CONTINUE CURRENT COMMAND'S PROCESSING WITH OUT AUDIT TRAIL OUTPUT    0408.000
*  IF EOM OCCURS ON LFC "PMT"                                           0409.000
*                                                                       0410.000
         SBM       PMTISTTY,PRMFLAGS                                    0411.000
         SPACE                                                          0412.000
GET.026  EQU       $                                                    0413.000
         SPACE                                                          0414.000
         BL        HEADER          WRITE OUT THE TITLE                  0415.000
         SPACE                                                          0416.000
*                                                                       0417.000
*        OPEN THE COMMAND INPUT DEVICE/FILE                             0418.000
*                                                                       0419.000
         LA        R5,CMDFCB       FCB ADDRESS                          0420.000
         LH        R7,CNP.ACCD     CNP ACCESS  - DEFAULT                0421.000
         BL        X.OPEN          BUILD CNP & ISSUE "OPEN" SERVICE CALL0422.000
         BNS       GET.040         BRANCH FOR SUCCESSFUL OPEN           0423.000
*                                                                       0424.000
*        OPEN FAILED  --  ISSUE ERROR MESSAGE & TERMINATE THIS COMMAND  0425.000
*                                                                       0426.000
         LA        R6,GEN.M023     ERROR MESSAGE                        0427.000
*        R7 ALREADY CONTAINS MODULE #/ERROR #  --  AS                   0428.000
*        RETURNED FROM SERVICE ROUTINE                                  0429.000
         BL        FUPABORT        ABORT ROUTINE                        0430.000
         SPACE                                                          0431.000
GET.040  EQU       $                                                    0432.000
*                                                                       0433.000
* THE FOLLOWING CODE WILL INITIALIZE VARIABLES AND INITIALIZE SOME FLAGS0434.000
*                                                                       0435.000
         ZMB       STAFLAGS        ! RESET ALL STATUS INDICATORS        0436.000
*                                                                       0437.000
* THE FOLLOWING CODE WILL INITIALIZE MORE VARIABLES AND COPY IN         0438.000
* PARAMETERS.                                                           0439.000
*                                                                       0440.000
*        LI        R0,GREATER      ! LOAD INITIAL PROMPT TERMINATOR     0441.000
*        STB       R0,PROMPEND     ! SET AT END OF PROMPT STRING        0442.000
         ZR        R3              ! ZERO OUT THE OUTPUT CHAR. COUNT    0443.000
         TBM       TSMDONE,PRMFLAGS ! CK IF TSM BUFFER NEEDS PROCESSING 0444.000
         BS        GET.070         ! BR IF NO, GO PROCESS INPUT LINE NOW0445.000
**********                                                              0446.000
* NOTE : THE FOLLOWING INITIALIZATION FOR THE CASE OF THE TSM BUFFER    0447.000
* HAVING INPUT DATA MUST BE DONE BEFORE THE 'SVC' CALL BECAUSE THE      0448.000
* 'SVC' CALL UPDATES SOME INFORMATION ABOUT THE LINE BUFFER             0449.000
*  (IE., THE CURSOR INDEX)                                              0450.000
**********                                                              0451.000
         SBM       TSMDONE,PRMFLAGS ! FLAG TSM BUFFER AS PROCESSED      0452.000
         LW        R2,C.TSAD       ! GET THE ADDRESS OF OUR TSA         0453.000
         LW        R2,T.LINBUF,X2  ! GET ADDRESS OF THE LINE BUFFER     0454.000
         TRR       R2,R0           SAVE ADDRESS OF LINE BUFFER          0455.000
         PUSHSTP                   SAVE STACK POINTER                   0456.000
         LB        R1,17B,X2       LINE BUFFER CURSOR INDEX             0457.000
         ADR       R1,R2           ! ADD IN STARTING POS. OF CMMD LINE  0458.000
*  AS DETERMINED BY BUFFER ADDRESS PLUS CURSOR INDEX, IE., THE CURSOR   0459.000
*  INDEX GETS US PAST THE LOAD MODULE NAME (VOLMGR).                    0460.000
         SUI       R1,20B          VOLMGR INPUT START THIS MANY BYTES   0461.000
*  FROM THE BEGINNING OF THE LINE BUFFER                                0462.000
         SVC       1,X'5B'         ! SCAN TSM BUFFER FOR NEXT TOKEN     0463.000
*  NOTE:  THIS SVC RETURNS (USES) R4, R5, R6 & R7                       0464.000
         TRR       R5,R5           ! CHECK IF ANYTHING IS IN THE BUFFER 0465.000
         BNZ       GET.045         ! GO IN INPUT DATA IN LINE BUFFER    0466.000
         POPSTP                    RESTORE STACK POINTER                0467.000
         BU        GET.070         GO PROMPT FOR INPUT                  0468.000
         SPACE                                                          0469.000
GET.045  EQU       $                                                    0470.000
         TRR       R3,R6           PRESERVE (SAVE) COUNT IN R3          0471.000
         TRR       R0,R3           LINE BUFFER ADDRESS                  0472.000
         LI        R7,-72          # BYTES TO COPY                      0473.000
         ADR       R1,R7           MINUS THOSE BEFORE THE START OF THE  0474.000
*  VOLMGR INPUT (IE., THE LOAD MODULE NAME)                             0475.000
         POPSTP                    RESTORE THE STACK POINTER            0476.000
         ZR        R3              ! ZERO INDEX FOR CHAR STORES         0477.000
GET.050  LB        R5,0,R2         ! PICK UP CHAR FROM TSM BUFFER       0478.000
         CI        R5,CARRIGCK     ! COMPARE IF AT END OF TSM INPUT     0479.000
*                                                                       0480.000
*  IE., INPUT IS USUALLY TERMINATED BY A <CR>; ... IF INPUT IS LESS     0481.000
*  THAN THE TSM LINE BUFFER LENGTH                                      0482.000
*                                                                       0483.000
         BEQ       GET.060         GO FOR END OF INPUT                  0484.000
*                                                                       0485.000
*  THE TSM LINE BUFFER IS BLANKED FILLED BEFORE DATA IS READ INTO IT,   0486.000
*  SO COPY 72 BYTES.  MUST STOP AT BYTE 72 SO DON'T PICK UP             0487.000
*  ANY LINE SEQUENCE #'S THAT MAY BE PRESENT                            0488.000
*                                                                       0489.000
         STB       R5,LINEBUFR,X3  ! COPY TSM TO 'INPBUF'               0490.000
         ABR       R2,31           ! INCREMENT COUNTER ON LN BUFFER     0491.000
         ABR       R3,31           ! INCREMENT TSM BUFFER INDEX         0492.000
         BIB       R7,GET.050      ! LOOP TO COPY ALL CHARACTERS        0493.000
         SPACE                                                          0494.000
GET.060  EQU       $                                                    0495.000
         SPACE                                                          0496.000
         SBM       ONESHOT,PRMFLAGS ! SET TSM COMMAND LINE INVOKATION   0497.000
         STW       R3,CMDFCB+FCB.RECL      CHAR. CTR IN POS. TO BE CHCKD0498.000
         TRR       R6,R3           RESTORE R3                           0499.000
         BU        GET.100         ! PROCESS INPUT DATA                 0500.000
*                                                                       0501.000
* THE FOLLOWING SECTION WILL BE THE RETURN ADDRESS FOR THE CYCLE OF     0502.000
* A CONTINUED LINE BEING PROCESSED.                                     0503.000
*                                                                       0504.000
GET.070  EQU       $                                                    0505.000
*        LA        R6,PROMPTIN     ADDRESS OF PROMPT CHARACTER STRING   0506.000
*        LI        R7,PMTSIZ       # BYTES IN PROMPT CHARACTER STRING   0507.000
*        BL        PRINTOUT        WRITE OUT THE PROMPT                 0508.000
*  READ THE NEXT LINE                                                   0509.000
         LA        R2,CMDFCB       COMMAND INPUT FCB ADDRESS            0510.000
         LA        R6,LINEBUFR     DATA BUFFER ADDRESS                  0511.000
         LI        R7,TRANSIZE     # BYTES TO TRANSFER (READ)           0512.000
         SBR       R7,0            TELL I/O ROUTINE R7 CONTAINS BYTE    0513.000
*                                  COUNT (INSTEAD OF BLOCK COUNT)       0514.000
         BL        RSEQ            READ THE DATA                        0515.000
         BCF       CC1,GET.090     GO FOR NOT EOF/EOM                   0516.000
*                                                                       0517.000
*  IF EOF W/O LINE CONTINUATION, THEN JUST EXIT                         0518.000
*  OTHERWISE ISSUE ERROR MESSAGE & ABORT                                0519.000
*                                                                       0520.000
         TBM       CONTUFLG,STAFLAGS    WAS LINE CONTINUATION IN        0521.000
*                                       PROGRESS ???                    0522.000
         BNS       GET.080         GO FOR LINE CONTINUATION NOT IN EFFEC0523.000
*                                                                       0524.000
*  LINE CONTINUATION WAS IN EFFECT -- SO THAT MAKES THE EOF CONDITION   0525.000
*  AN ERROR                                                             0526.000
*                                                                       0527.000
         LA        R7,GEN.M009     ERROR MESSAGE                        0528.000
         BL        ERROR2          PRINT THE ERROR MESSAGE              0529.000
*  NOW ABORT WITH AN EXPANDED ERROR MESSAGE                             0530.000
         LA        R6,GEN.M004     ERROR MESSAGE                        0531.000
         BL        FUPABRT2        ABORT ROUTINE  --  ENTRY POINT FOR   0532.000
*                                  I/O RELATED PROBLEMS                 0533.000
         SPACE                                                          0534.000
GET.080  EQU       $                                                    0535.000
         SPACE                                                          0536.000
*                                                                       0537.000
*  LINE CONTINUATION NOT IN EFFECT  --  SO INDICATE WE SHOULD EXIT      0538.000
*                                                                       0539.000
         SBM       CC1,0W,X1       SET CONDITION CODE ONE - TO EXIT     0540.000
         BU        GET.EXIT        GO TO ROUTINE EXIT POINT             0541.000
         SPACE                                                          0542.000
GET.090  EQU       $                                                    0543.000
         BCF       CC2,GET.100     GO FOR NO I/O ERROR(S)               0544.000
*                                                                       0545.000
*  I/O ERROR(S) HAVE OCCURED -- SO PRINT ERROR MESSAGE & ABORT          0546.000
*                                                                       0547.000
         LA        R6,GEN.M007     ERROR MESSAGE                        0548.000
         BL        FUPABRT2        ABORT ROUTINE  --  ENTRY POINT FOR   0549.000
*                                  I/O RELATED PROBLEMS                 0550.000
         SPACE                                                          0551.000
*                                                                       0552.000
* THE FOLLOWING SECTION OF CODE REINITIALIZES THE COUNTER AND A FLAG.   0553.000
*                                                                       0554.000
GET.100  EQU       $                                                    0555.000
         LI        R2,-1           ! INITIALIZE LINE CHAR. CTR          0556.000
****** NOTE : FROM HERE ON DOWN IN THE PROGRAM THE REGISTERS HOLD THE   0557.000
****** FOLLOWING CONTENTS :                                             0558.000
*       - R2 WILL CONTAIN THE INTERNAL CHARACTER COUNT TO SEE WHICH     0559.000
*         CHARACTER FROM THE INPUT LINE ONE IS WORKING ON               0560.000
*       - R3 WILL CONTAIN THE COMMAND BUFFER INDEX TO THE NEXT CHAR     0561.000
*       - R5 WILL CONTAIN THE CHARACTER BEING LOOKED AT IN THE LINE     0562.000
******                                                                  0563.000
*                                                                       0564.000
* THE FOLLOWING SECTION OF CODE LOOKS AT SEPARATE CHARACTERS ON THE     0565.000
* LINE AND PROCESSES EACH ACCORDING TO ITS CHARACTERISTICS AND ITS      0566.000
* ENVIRONMENT.                                                          0567.000
*                                                                       0568.000
GET.110  ABR       R2,31           ! INCREMENT CHARACTER COUNTER        0569.000
         CAMW      R2,CMDFCB+FCB.RECL    CMP IF AT END OF INPUT BYTES   0570.000
         BGE       GET.160         ! BRANCH TO CHECK FOR MORE LINES     0571.000
         LB        R5,LINEBUFR,X2  ! GET THE NEXT CHARACTER             0572.000
*                                                                       0573.000
         CI        R5,QUOTE        ! IS THE CHARACTER A QUOTE?          0574.000
         BEQ       GET.111         ! BRANCH, IF SO, TO HANDLE IT        0575.000
         TBM       QUOTE.F,STAFLAGS ! IS THIS A QOUTED NAME?            0576.000
         BS        GET.130         ! IF SO, DONT DELETE EXTRA BLANKS    0577.000
         BU        GET.112         ! BRANCH TO CONTINUE                 0578.000
GET.111  ZBM       QUOTE.F,STAFLAGS ! LEADING OR TRAILING QUOTE?        0579.000
         BS        GET.130         ! CONTINUE IF SO                     0580.000
         SBM       QUOTE.F,STAFLAGS ! INDICATE A QUOTED NAME FOLLOWS    0581.000
         BU        GET.130         ! CONTINUE AROUND BLANK SUPPRESSION  0582.000
*                                                                       0583.000
GET.112  CI        R5,SPACE        ! CHECK FOR BLANK                    0584.000
         BNE       GET.120         ! BR IF NOT A BLANK                  0585.000
         SBM       SPACEFLG,STAFLAGS ! REMEBER WE NEED A SPACE          0586.000
         BU        GET.110         ! GET THE NEXT CHAR                  0587.000
GET.120  CI        R5,COMNTCHR     ! IS THIS A COMMENT DELIMITER        0588.000
         BEQ       GET.160         ! YES - CHECK IF MORE NEEDED         0589.000
         ZBM       SPACEFLG,STAFLAGS ! CLEAR SPACE FLAG                 0590.000
         BNS       GET.130         ! BR IF NO SPACE SEEN                0591.000
         LI        R5,SPACE        ! GET A SPACE CHARACTER              0592.000
         SUI       R2,1            ! BACKUP TO CHARACTER AGAIN          0593.000
         BU        GET.140         ! STORE THE DATA                     0594.000
GET.130  EQU       $               !                                    0595.000
         CI        R5,BOTCAPCK     ! CHECK AGAINST LOWER CASE LIMIT     0596.000
         BLT       GET.140         ! IF LOWER - STORE IT AS IS          0597.000
         CI        R5,TOPCAPCK     ! NOW CHECK AGAINST HIGH END         0598.000
         BGT       GET.140         ! IF HIGHER THAN LOWER CASE, BRANCH  0599.000
         SUI       R5,CAPCONV      ! CONVERT TO UPPER CASE              0600.000
GET.140  CI        R3,MAXCMDLN     ! WILL CHARACTER FIT                 0601.000
         BLT       GET.150         GO FOR NOT LINE BUFFER OVERFLOW      0602.000
         SBM       CC2,0W,X1       INDICATE LINE BUFFER OVERFLOW        0603.000
         BU        GET.EXIT        GO TO ROUTINE EXIT POINT             0604.000
GET.150  EQU       $                                                    0605.000
         STB       R5,TEXTBUFR,R3  ! PUT THE DATA AWAY                  0606.000
         ADI       R3,1            ! INCREMENT INDEX                    0607.000
         ZBM       CONTUFLG,STAFLAGS ! INDICATE CONTINUE DATA RECIEVED  0608.000
         BU        GET.110         ! GET THE NEXT CHARACTER             0609.000
*                                                                       0610.000
* GET.160 - NEW LINE CHECK                                              0611.000
*                                                                       0612.000
* THIS ROUTINE IS ENTERED AT THE END OF EACH LINE OF COMMAND INPUT      0613.000
* TO SEE IF LINE CONTINUATION SHOULD BE DONE. THIS CHECK IS MADE BY     0614.000
* EXAMINING THE LAST CHAR IN THE BUFFER FOR "-". IF IT IS, IT IS        0615.000
* REMOVED AND A SPACE PRECEEDING IT IS REMOVED IF THERE. THE SPACE      0616.000
* FLAG IS SET TO FORCE THE OUTPUT OF A BLANK IN THE CASE THAT MORE      0617.000
* NON-BLANK DATA IS ENTERED ON THE CONTINUED LINE.                      0618.000
*                                                                       0619.000
GET.160  TBM       CONTUFLG,STAFLAGS ! CONTINUE REQUESTED AND NO DATA   0620.000
         BS        GET.180           ! INPUT YET, BR IF YES, IGNOR BLANK0621.000
         LI        R5,CONTUCHR     ! GET LINE CONTINUE CHARACTER        0622.000
         CAMB      R5,TEXTBUFR-1,X3 ! IS THAT LAST IN THE BUFFER        0623.000
         BNE       GET.190         ! RETURN GOOD STATUS                 0624.000
         SBM       SPACEFLG,STAFLAGS ! NEED TO SPACE OUT FOR NEW LINE   0625.000
         SBM       CONTUFLG,STAFLAGS ! CONTINUE IN PROGRESS-NEED DATA   0626.000
         LI        R5,SPACE        ! GET CHAR TO CHECK FOR SPACE        0627.000
GET.170  SUI       R3,1            ! BACK OUT THE LINE CONTIUE MARK     0628.000
         CAMB      R5,TEXTBUFR-1,X3 ! BACKOUT TRAILING SPACE            0629.000
         BEQ       GET.170         ! GET RID OF THE CHARACTER           0630.000
*        LI        R5,UNDERSCR     ! GET CONTINUE PROMPT                0631.000
*        STB       R5,PROMPEND     ! SET AS PROMPT TERMINATOR           0632.000
GET.180  BU        GET.070         ! READ IN THE NEXT LINE              0633.000
         SPACE     2                                                    0634.000
GET.190  EQU       $               ! SUCCESSFUL EXECUTION THE PROGRAM   0635.000
         STH       R3,TEXTSIZE     ! STORE LENGTH HERE                  0636.000
         STW       R3,4W,X1        PLANT ON STACK FOR RETURN            0637.000
GET.EXIT POP                       RESTORE REGS                         0638.000
         TRSW      R0              ! RETURN                             0639.000
         TITLE     PRINTOUT  --  WRITE TO THE COMMAND OUTPUT DEV/FILE   0640.000
*                                                                       0641.000
*  PRINTOUT - SUBROUTINE TO PRINT OUT DATA INTO TASK OUTPUT STREAM      0642.000
*                                                                       0643.000
* INPUTS:                                                               0644.000
*                                                                       0645.000
*        R6 = BUFFER ADDRESS TO OUTPUT                                  0646.000
*        R7 = COUNT IN BYTES TO OUTPUT                                  0647.000
*                                                                       0648.000
*                                                                       0649.000
PRINTOUT EQU       $                                                    0650.000
         SPACE                                                          0651.000
         TBM       NOLIST.F,FLAGBITS    LISTING TURNED OFF ???          0652.000
         BS        PRIN.EXT        GO FOR LISTING OFF                   0653.000
         PUSH                      SAVE REGS                            0654.000
         LA        R2,PMTFCB       FCB ADDRESS                          0655.000
         SBR       R7,0            TELL I/O ROUTINE R7 CONTAINS BYTE    0656.000
*                                  COUNT (INSTEAD OF BLOCK COUNT)       0657.000
         BL        WSEQ            WRITE THE DATA                       0658.000
*                                                                       0659.000
*  IF EOF/EOM OR I/O ERROR(S) OCCURED MUST ABORT                        0660.000
*  WITH AN APPROPRIATE ABORT CODE SINCE THIS IS THE ONLY MEANS TO       0661.000
*  COMMUNICATE WHAT HAS HAPPENED                                        0662.000
*                                                                       0663.000
         BCF       CC2,PRIN.010    GO FOR NO I/O ERROR(S)               0664.000
         LW        R0,FUPABC4      ABORT CODE FOR I/O ERROR(S) ON THE   0665.000
*                                  COMMAND OUTPUT DEVICE/FILE           0666.000
         BU        PRIN.030        JOIN COMMON CODE                     0667.000
PRIN.010 EQU       $                                                    0668.000
         BCF       CC1,PRIN.020    GO FOR NOT EOF/EOM                   0669.000
         TBM       PMTISTTY,PRMFLAGS    IS OUTPUT TO A TSM CONTROLLED   0670.000
*                                       TERMINAL                        0671.000
         BNS       PRIN.015        GO FOR NOT A TSM CONTROLLED TERMINAL 0672.000
***      SBM       NOLIST.F,FLAGBITS    NO MORE AUDIT TRAIL OUTPUT      0673.000
***FOR DURATION OF CURRENT COMMAND, UNLESS ERRORS OCCUR.  IGNORE THE    0674.000
***EOM THAT JUST OCCURED,UNLESS THE CURRENT COMMAND IS "LOG IMAGE"      0675.000
*** IN WHICH CASE RETURN TO THE LOG IMAGE LOGIC TO ALLOW A              0676.000
*** BACKSPACE FILE TO BE ISSUED TO REPOSITION THE TAPE TO THE           0677.000
*** START OF THE IMAGE.                                                 0678.000
***      SPACE                                                          0679.000
***      BU        PRIN.020        GO TO ROUTINE EXIT POINT             0680.000
***      SPACE                                                          0681.000
         SPACE                                                          0682.000
         LA        R3,F.LIMA       GET LOG IMAGE FUNCTION ADDRESS V.10  0683.000
         CAMW      R3,FUN.SAVE     COMPARE TO CURRENT COMMAND     V.10  0684.000
         BNE       PRIN.011        BRANCH IF NOT LOG IMAGE        V.10  0685.000
         SBM       NOLIST.F,FLAGBITS INHIBIT AUDIT TRAIL          V.10  0686.000
         BU        PRIN.020        RETURN TO LOG IMAGE LOGIC      V.10  0687.000
*                                                                       0688.000
*  USER DID NOT ENTER <CR> WHEN PROMPTED TO DO SO BY TSM, THEREFORE,    0689.000
*  TERMINATE THE CURRENT COMMAND BEING PROCESSED AND RETURN TO THE      0690.000
*  MAIN DISPATCHER.                                                     0691.000
*                                                                       0692.000
PRIN.011 LA        R1,TOPOSTK      RESET THE STACK POINTER              0693.000
         BU        FUP.000         GO BACK TO MAIN DISPATCHER           0694.000
         SPACE                                                          0695.000
PRIN.015 LW        R0,FUPABC3      ABORT CODE FOR EOF/EOM ON THE        0696.000
*                                  COMMAND OUTPUT DEVICE/FILE           0697.000
         BU        PRIN.030        JOIN COMMON CODE                     0698.000
         SPACE                                                          0699.000
PRIN.020 EQU       $                                                    0700.000
         POP                       RESTORE REGS                         0701.000
PRIN.EXT TRSW      R0              RETURN                               0702.000
         SPACE                                                          0703.000
PRIN.030 EQU       $                                                    0704.000
         STW       R0,BORTCODE     SAVE THE ABORT CODE                  0705.000
         BL        ABORTNOM        ABORT WITH NO MESSAGE OUTPUT         0706.000
         SPACE                                                          0707.000
END      END                       ! END OF MODULE                      0708.000
