*DECK OSEXEC                                                             FEAT157
          IDENT  OSEXEC                                                  FEAT157
          TITLE  EXECUTION OF THE -OS- DIRECTIVE                         FEAT157
          LIST   F                                                       FEAT157
                                                                         FEAT157
          SYSCOM B1          USE THE SYSTEM COMMUNICATION SYMBOLS        FEAT157
          IPARAMS                                                        FEAT157
                                                                         FEAT157
          IFC    EQ,$"OS.NAME"$KRONOS$                                   FEAT157
 OPL      XTEXT  COMCMAC                                                 FEAT157
OPL       XTEXT  COMCCMD     CENTRAL PROCESSOR MACROS FOR NOS 
          ENDIF                                                          FEAT157
                                                                         FEAT157
          LIST   -L          *CALL ENVIRON FOLLOWS                       FEAT157
*CALL ENVIRON                                                            FEAT157
          LIST   L                                                       FEAT157
*CALL MACRO 
          TITLE  MISCELLANEOUS STORAGE                                   FEAT157
*         MISCELLANEOUS STORAGE...INCLUDING CONTROL CARDS THAT WILL BE   FEAT157
*         APPENDED TO THOSE (THAT) SUPPLIED BY THE CALLER.               FEAT157
          SPACE  3                                                       FEAT157
          IFC    EQ,$"OS.NAME"$SCOPE $                                   FEAT157
                                                                         FEAT157
 CC1      DATA   0                   TERMINATES THE USERS CONTROL CARD   FEAT157
          DATA   C*ZZZZZQU(ABORT)*   WILL CAUSE SKIP TO EXIT(S) CARD     FEAT157
          DATA   C*EXIT(S)*          CATCHES CONTROL CARD ERRS, TOO      FEAT157
          DATA   C*REVERT,EX. ZZZZZQU.*    SWAP QU BACK IN
          DATA   0                   ENDS THE CONTROL CARD STREAM        FEAT157
          DATA   0                   AN EXTRA FOR IAP...TO BE SURE       FEAT157
 CC2      BSS    0           USED FOR LENGTH CALCULATION                 FEAT157
                                                                         FEAT157
          ENDIF                                                          FEAT157
                                                                         FEAT157
                                                                         FEAT157
          IFC    EQ,$"OS.NAME"$KRONOS$                                   FEAT157
                                                                         FEAT157
 CC1      DATA   0           TERMINATES USERS CONTROL CARD
          DATA   C*SKIP,NOABT.* 
          DATA   C*EXIT.*    IN CASE CONTROL CARD ERROR 
          DATA   C*ENDIF,NOABT.*
          DATA   C*REVERT,EX. ZZZZZQU.*    SWAP QU BACK IN
 CC2      BSS    0           USED FOR LENGTH CALCULATIONS 
          SPACE  1
 CC3      DATA   C*ZZZZZQY.* QU'S PROCEDURE FILE
                                                                         FEAT157
          ENDIF                                                          FEAT157
                                                                         FEAT157
                                                                         FEAT157
 CCLENG   EQU    CC2-CC1     LENGTH OF THE CONTROL CARDS WE APPEND       FEAT157
 CSBUFFLG DATA   0           NO. OF WORDS OF CSBUFF USED SO FAR          FEAT157
 CSHDR    DATA   C*.PROC,ZZZZZQY.*
 CSBUFF   BSS    10D+CCLENG  ROOM FOR 8 WORDS PLUS TERMINATORS AND OURS  FEAT157
 CSHDRLG  EQU    2           LENGTH OF PROCEDURE HEADER 
                                                                         FEAT157
 OSBUFF   DATA   0           HOLDS ADDRESS OF CALLERS BUFFER             FEAT157
 OSLENG   DATA   0           HOLDS CHAR LENGTH OF CONTENTS OF OSBUFF     FEAT157
 OSRC     DATA   0                 HOLDS ADDRESS FOR USER RETURN CODE    FEAT157
                                                                         FEAT157
 FRFP     DATA   0           HOLDS BLOCK ADDRESS WE ARE TO FREE LATER 
 PFRFP    VFD    42/0,18/FRFP      PARAMETER POINTER FOR *CMM$FRF*
                                                                         FEAT157
 LAST     DATA   0           WILL HOLD CONTENTS OF LAST WORD IN FL       FEAT157
 ADDRLAST DATA   0           ADDRESS OF LAST WORD IN FL                  FEAT157
                                                                         FEAT157
 LOFLOC   BSSZ   1           SETLOF/GETLOF PARAMETER WORD 
  
 ALFP     DATA   0           WILL HOLD REQUEST LENGTH FOR *CMM$ALF* 
 ALFP1    DATA   0           DUMMY ZERO WORD FOR SIZE-CODE, GROUP-ID
 PALFP    VFD    42/0,18/ALFP      POINTS TO CMM$ALF REQUEST LENGTH 
          VFD    42/0,18/ALFP1     POINTS TO DUMMY SIZE-CODE PARAMETER
          VFD    42/0,18/ALFP1     POINTS TO DUMMY GROUP-ID PARAMETER 
                                                                         FEAT157
                                                                         FEAT157
 ZZZZZQU  FILEB              FET POINTERS WILL BE INSERTED LATER         FEAT157
 ZZZZZQY  FILEB 
 OSEXEC   TITLE  MAIN FLOW OF EXECUTION                                  FEAT157
***       OSEXEC - EXECUTION OF THE -OS- DIRECTIVE                       FEAT157
*                                                                        FEAT157
*         ENTRY  (A1) = ADDRESS POINTING TO THE PARAMETER LIST           FEAT157
*                CALLING SEQUENCE...  OSEXEC(BUFFER, CHLENG, RC)         FEAT157
*                                                                        FEAT157
*         EXIT   CONTROL CARD IN BUFFER ISSUED                           FEAT157
*                                                                        FEAT157
*         CALLS  MANY ROUTINES                                           FEAT157
          SPACE  3                                                       FEAT157
          ENTRY  OSEXEC                                                  FEAT157
 OSEXEC   JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SA1    A1          DOUBLE CHECK                                FEAT157
          SB1    1           SET UP B1=1 CONVENTION                      FEAT157
          SA2    A1+B1       (X2) = ADDRESS OF LENGTH                    FEAT157
          SA3    A2+B1             FETCH THIRD PARAMETER                 FEAT157
          BX6    X3                                                      FEAT157
          SA6    OSRC              SAVE LOCATION OF RC                   FEAT157
          MX7    0                                                       FEAT157
          SA7    X6                SET RC=0. ASSUME ALL WILL GO WELL     FEAT157
          BX6    X1          (X1) = ADDRESS OF BUFFER                    FEAT157
          SA2    X2          FETCH LENGTH                                FEAT157
          SA6    OSBUFF      SAVE LOCATION OF BUFFER                     FEAT157
          BX7    X2          (X2) = CHAR LENGTH OF CONTROL STATEMENT     FEAT157
          SA7    OSLENG      (X7) = NUMBER OF CHARS IN BUFFER            FEAT157
          MOVE   X6,8,CSBUFF MOVE THE MAX OF 8 CARDS TO C/S BUFFER       FEAT157
          RECALL =XTFILE           BE SURE TFILE IS NOT BUSY - POSSIBLE 
*                                  QU RCL LOOP LATER IF BUSY WHEN WE
*                                  WRITE OUT THE FIELD LENGTH.
          SPACE  3,29                                                    FEAT157
***       TO INSERT A TERMINATOR AT END OF C/S STRING                    FEAT157
                                                                         FEAT157
          SA1    OSLENG      (X1) = LENGTH IN CHARACTERS                 FEAT157
          SX2    10D         (X2) = NUMBER OF CHARS PER WORD             FEAT157
          BX6    X1          INTEGER DIVIDE WILL CLOBBER THIS            FEAT157
          BX7    X2          INTEGER DIVIDE WILL CLOBBER THIS            FEAT157
          IX3    X6/X7       (X3) = WORD NO. INTO WHICH TERMINATOR GOES  FEAT157
          IX4    X3*X2                                                   FEAT157
          IX4    X1-X4       (X4) = NUMBER OF CHARS IN WORD X3           FEAT157
          SX6    X3+B1       (X6) = INDEX+1 ALIAS THE WORD COUNT         FEAT157
          SA6    CSBUFFLG    LENGTH USED IN CSBUFF                       FEAT157
          SX1    CSBUFF      (X1) = ADDRESS OF BUFFER WITH C/S(OUR COPY) FEAT157
          IX1    X1+X3       (X1) = ADDRESS OF WHERE TERMINATOR GOES     FEAT157
          SA1    X1          (X1) = WORD INTO WHICH TERMINATOR GOES      FEAT157
          SX5    6           (X5) = NUMBER OF BITS PER CHARACTER         FEAT157
          IX5    X5*X4       (X5) = NUMBER OF BITS USED IN (X1)          FEAT157
          MX0    0                                                       FEAT157
          ZR     X5,OSEXEC1  IF NO BITS USED IN THIS WORD..NO MASK       FEAT157
          MX0    1                                                       FEAT157
          SB2    X5-1        (B2) = SHIFT COUNT FOR X5 SIZE BIT MASK     FEAT157
          AX0    X0,B2       (X0) = MASK FOR NO. OF CHARS IN X1          FEAT157
 OSEXEC1  SB3    X5          (B3) = NUMBER OF BITS USED IN (X1)          FEAT157
          SB4    60D                                                     FEAT157
          SB3    B4-B3       (B3) = SHIFT COUNT FOR PERIOD POSITIONING   FEAT157
          SA2    =H*.*       (X2) = PERIOD AND TRAILING BLANKS           FEAT157
          LX2    X2,B3       (X1) = BLANKS AND . POSITIONED FOR INSERT   FEAT157
          BX6    X1*X0       (X6) = ONLY THE CHARS FROM X1               FEAT157
          BX7    -X0*X2      (X7) = ONLY POSITIONED PERIOD AND TR BLKS   FEAT157
          BX6    X6+X7       (X6) = LAST WORD, BUT WITH TERMINATOR.      FEAT157
          SA6    A1          (A1) = ADDRESS TO REPLACE WORD W/O TERM.    FEAT157
          SPACE  3,31                                                    FEAT157
          SPACE  3,9                                                     FEAT157
*         APPEND OUR CONTROL CARDS TO THE USER-S                         FEAT157
                                                                         FEAT157
          SA1    CSBUFFLG    (X1) = WORDS OF CSBUFF ACTUALLY USED        FEAT157
          MOVE   CC1,CCLENG,X1+CSBUFF   APPEND OUR CARDS                 FEAT157
          SA1    CSBUFFLG    (X1) = NO. OF WORDS USED FOR USER-S CARD    FEAT157
          SX6    X1+CCLENG   ADD THE NUMBER OF CARDS APPENDED            FEAT157
          SA6    A1          (X6) = TOTAL NUMBER OF CARDS IN BUFFER      FEAT157
          SPACE  3,12                                                    FEAT157
*         SAVE LOW CORE IN A CMM BLOCK
                                                                         FEAT157
          SX6    ZQULENG-2   LENGTH OF LOW CORE TO SAVE (NOT RA+0 OR +1) FEAT157
          SA6    ALFP        (X6) = LENGTH PARAMETER FOR CMM$ALF
          SA1    PALFP       (A1) = FWA OF PARAMETER LIST FOR CMM$ALF 
          RJ     =XCMM$ALF   ALLOCATE A FIXED BLOCK OF MEMORY 
          SB1    1           IN CASE SYMPL ZAPPED OUR B1=1 CONVENTION    FEAT157
          ZR     X6,ERR1     IF GETCM COULDN-T GET SPACE                 FEAT157
          SA6    FRFP        (X6) = ADDR OF CMM BLOCK - SAVE FOR LATER
          MOVE   2,ZQULENG-2,X6    MOVE LOW CORE TO RESERVED BLOCK       FEAT157
          SPACE  3,11                                                    FEAT157
*         GET CURRENT FL AND SET UP MEM PARAM WORD FOR SWAPIN            FEAT157
                                                                         FEAT157
          MX6    0           CLEAR X6                                    FEAT157
          SA6    ZQUORG+ZQUB STORE AS PARAM FOR MEM REQUEST              FEAT157
          MEMORY CM,A6,RECALL      RETURN OUR CURRENT CM FL              FEAT157
          SA1    ZQUORG+ZQUB FETCH STATUS WORD                           FEAT157
          MX0    59                                                      FEAT157
          BX6    X0*X1       CLEAR THE COMPLETE BIT                      FEAT157
          SX1    4                 BIT 2 SET TO LOOK LIKE CMM 
          BX6    X6+X1             MAKE MEM REQ. LOOK LIKE CMM"S
          SA6    A1          REPLACE AS REQUEST PARAM FOR -RESTART-      FEAT157
          SPACE  3,10                                                    FEAT157
*         SAVE THE ADDRESS AND CONTENTS OF THE LAST WORD IN FL           FEAT157
                                                                         FEAT157
          LX6    30D         RIGHT-JUSTIFY THE FL                        FEAT157
          SX6    X6-1        ADDRESS OF LAST WORD IN FL                  FEAT157
          SA6    ADDRLAST    SAVE ITS ADDRESS                            FEAT157
          SA1    X6          FETCH LAST WORD IN FL                       FEAT157
          BX7    X1                                                      FEAT157
          SA7    LAST        SAVE CONTENTS OF LAST WORD IN FL            FEAT157
*         SAVE LOCATION OF LIST OF FILES
  
          SX6    B0 
          SA6    LOFLOC      CLEAR PREVIOUS COMPLETE BIT
          GETLOF LOFLOC,RCL  GET ADDRESS OF LIST OF FILES FROM THE O/S
          SPACE  4
          SPACE  3,10                                                    FEAT157
*         SET POINTERS FOR SWAPIN-S READSKP OF THE FL FROM ZZZZZQU       FEAT157
                                                                         FEAT157
          SA1    ADDRLAST    (X1) = ADDRESS OF LW OF FL 
          SX7    ZQULENG     FWA OF CM TO READ IN                        FEAT157
          SA7    ZQUORG+ZQUD+1     -FIRST- POINTER FOR -SWAPIN-          FEAT157
          SA7    A7+B1             -IN- POINTER FOR -SWAPIN-             FEAT157
          SA7    A7+B1             -OUT- POINTER FOR -SWAPIN- 
          SX6    X1+B1       LIMIT IS LWA+1 OF FL 
          SA6    A7+B1             -LIMIT- POINTER FOR -SWAPIN- 
          SPACE  3,13                                                    FEAT157
*         SET POINTERS AND WRITE OUT -SWAPIN- AS FIRST RECORD ON ZZZZZQU FEAT157
                                                                         FEAT157
          SX6    ZQU         FWA OF SWAPIN OVERLAY                       FEAT157
          SX7    ZQUORG+ZQU2 LWA+1 OF SWAPIN OVERLAY                     FEAT157
          SA6    ZZZZZQU+1   -FIRST- FOR ZZZZZQU RECORD 1                FEAT157
          SA7    A6+B1       -IN- FOR ZZZZZQU RECORD 1                   FEAT157
          SA6    A7+B1       -OUT- FOR ZZZZZQU RECORD 1                  FEAT157
          SX7    X7+B1       LIMIT MUST BE GT IN OR OUT                  FEAT157
          SA7    A6+B1       -LIMIT- FOR ZZZZZQU RECORD 1                FEAT157
          RETURN ZZZZZQU           RETURN SO WE HAVE A NEW FILE 
          WRITER ZZZZZQU,RECALL    WRITE OUT THE SWAPIN OVERLAY          FEAT157
          SPACE  3,13                                                    FEAT157
*         SET POINTERS AND WRITE OUT THE FL AS SECOND RECORD ON ZZZZZQU  FEAT157
                                                                         FEAT157
          SX6    ZQULENG     (X6) = FWA OF CM TO WRITE OUT               FEAT157
          SA5    ADDRLAST                                                FEAT157
          BX7    X5          (X7) = ADDR OF LAST WORD IN FL              FEAT157
          SA6    ZZZZZQU+1   -FIRST- FOR ZZZZZQU RECORD 2                FEAT157
          SA7    A6+B1       -IN- FOR ZZZZZQU RECORD 2                   FEAT157
          SA6    A7+B1       -OUT- FOR ZZZZZQU RECORD 2                  FEAT157
          SX7    X7+B1       LIMIT MUST BE GT IN OR OUT                  FEAT157
          SA7    A6+B1       -LIMIT- FOR ZZZZZQU RECORD 2                FEAT157
          WRITEF ZZZZZQU,RECALL    WRITE OUT THE BULK OF CM              FEAT157
          SPACE  3,6                                                     FEAT157
*         FINAL STEPS BEFORE TRANSFERRING TO THE NEW CONTROL CARDS       FEAT157
                                                                         FEAT157
          SX7    ICSERR            ADDRESS OF ICS ERROR ROUTINE          FEAT157
          SA7    =XRECOVER         STORE AS RECOVERY ADDR IN CASE ABORT  FEAT157
          RJ     ICS         ISSUE CONTROL STATEMENT....NO RETURN....    FEAT157
          TITLE  ICS - ISSUE CONTROL STATEMENTS                          FEAT157
          IFC    EQ,$"OS.NAME"$SCOPE $                                   FEAT157
                                                                         FEAT157
***       ICS - ISSUE CONTROL STATEMENT(S)                               FEAT157
*                                                                        FEAT157
*         ENTRY  CSBUFF CONTAINS THE CONTROL CARDS                       FEAT157
*                CSBUFFLG CONTAINS THE WORD COUNT OF THE BUFFER          FEAT157
*                                                                        FEAT157
*         EXIT   NONE - CONTROL PASSES TO THE CONTROL STATEMENT(S)       FEAT157
*                                                                        FEAT157
*         USES - IRRELEVANT                                              FEAT157
*                                                                        FEAT157
*         CALLS  SYS=                                                    FEAT157
          SPACE  3                                                       FEAT157
 ICS      JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SX6    CSBUFF      (X6) = ADDR OF C.S. BUFFER 
          SA1    CSBUFFLG    (X1) = LENGTH OF C.S. BUFFER 
          IX7    X6+X1       (X7) = FWA+1 OF C.S BUFFER 
          SA6    ZZZZZQY+1   STORE -FIRST- POINTER
          SA7    A6+B1       STORE -IN- POINTER 
          SA6    A7+B1       STORE -OUT- POINTER
          SX7    X7+B1       -LIMIT- MUST BE > -IN- 
          SA7    A6+B1       STORE -LIMIT- POINTER
          WRITER ZZZZZQY,RECALL    WRITE OUT C.S. FILE
          SPACE  1
          SA1    ZZZZZQY
          MX2    42 
          BX7    X1*X2       CLEAR LOWER 18 BITS OF FET+0 
          SA7    A1 
          ENCSF  ZZZZZQY,POSNQY     PASS C.S. BUFFER TO SYSTEM
          ENDRUN             STOP EXECUTION SO CONTROL CARDS TAKE OVER
          SPACE  2
 POSNQY   BSSZ   1           POSITION OF C.S FILE (0-AT BOI)
          ENDIF                                                          FEAT157
          EJECT                                                          FEAT157
          IFC    EQ,$"OS.NAME"$KRONOS$                                   FEAT157
                                                                         FEAT157
***       ICS - ISSUE CONTROL STATEMENT(S)                               FEAT157
*                                                                        FEAT157
*         ENTRY  CSBUFF CONTAINS THE CONTROL CARDS                       FEAT157
*                CSBUFFLG CONTAINS THE WORD COUNT OF THE BUFFER          FEAT157
*                                                                        FEAT157
*         EXIT   NONE - CONTROL PASSES TO THE CONTROL STATEMENT(S)       FEAT157
*                                                                        FEAT157
*         USES - IRRELEVANT                                              FEAT157
*                                                                        FEAT157
*         CALLS  SYS=, CIO=                                              FEAT157
          SPACE  3                                                       FEAT157
 ICS      JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SX6    CSHDR       (X6) = ADDR OF THE BUFFER
          SA1    CSBUFFLG 
          SX1    X1+CSHDRLG  (X1) = WORD COUNT OF ENTIRE BUFFER 
          IX7    X6+X1       (X6) = LWA+1 OF WORDS IN THE BUFFER         FEAT157
          SA6    ZZZZZQY+1   STORE AS -FIRST- POINTER                    FEAT157
          SA7    A6+B1       STORE AS -IN- POINTER (LWA TO WRITE + 1)    FEAT157
          SA6    A7+B1       STORE AS -OUT- POINTER (FIRST WD TO WRITE)  FEAT157
          SX7    X7+B1       -LIMIT- MUST BE > -IN-                      FEAT157
          SA7    A6+B1       STORE AS -LIMIT- POINTER                    FEAT157
          RETURN ZZZZZQY     NO RECALL, CIO= WILL DO THE WAIT            FEAT157
          WRITER  ZZZZZQY,RECALL   WRITE OUT THE CONTROL STATEMENT FILE  FEAT157
          EXCST  CC3         NO RETURN FROM -EXCST-                      FEAT157
                                                                         FEAT157
                                                                         FEAT157
                                                                         FEAT157
          ENDIF                                                          FEAT157
          SPACE  3                                                       FEAT157
 ICSERR   JP     *+1S17                                                  FEAT157
          SX7    1                                                       FEAT157
          SA1    OSRC              (X1) = ADDRESS OF RETURN CODE         FEAT157
          SA7    X1                RETURN NON-ZERO RC                    FEAT157
          RJ     ONRPV             RESET RPV FOR NEXT ABORT              FEAT157
          EQ     OSEXEC            RETURN THROUGH OSEXEC                 FEAT157
          TITLE  ROUTINES TO ALTER REPRIEVE ADDRESSES                    FEAT157
***       ONRPV - TURN ON -RPV-                                          FEAT157
*                                                                        FEAT157
*         ENTRY  NONE                                                    FEAT157
*                                                                        FEAT157
*         EXIT   RPV (AND POSSIBLY DISTC) ARE ON IF DFLAG00 NOT SET      FEAT157
*                                                                        FEAT157
*         CALLS  SYS=                                                    FEAT157
 ONRPV    JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SA1    =XDFLAG     WORD WITH DECODED -D- CONTROL CARD OPTION   FEAT157
          LX1    59-0        PUT BIT 0 (DFLAG00) IN SIGN BIT             FEAT157
          NG     X1,ONRPV1   IF DFLAG00 SET... NO CALLS TO RPV...        FEAT157
          SA1    RPV1              SET LENGTH IN PARAM BLOCK
          BX6    X1 
          SA6    =XABTADDR
          REPRIEVE   =XABTADDR,SETUP,277B 
                                                                         FEAT157
 ONRPV1   EQ     ONRPV       RETURN                                      FEAT157
          SPACE  3                                                       FEAT157
 RPV1     VFD    36/0,12/31B,2/0,9/1,1/0
          TITLE  SWAPIN ROUTINE...OVERLAY FORMATTED                      FEAT157
***       ZQU -  SWAPIN ROUTINE. OVERLAY FORMAT                          FEAT157
*                                                                        FEAT157
*         ENTRY  CONTROL CARD CALLED                                     FEAT157
*                                                                        FEAT157
*         EXIT   IF ANY PARAMETERS ON THE CONTROL CARD.. ABORT           FEAT157
*                ELSE                                                    FEAT157
*                  1) QU-S FIELD LENGTH IS RESUMED                       FEAT157
*                  2) ALL OF FL IS RESTORED EXCEPT FOR THE LAST WORD     FEAT157
*                     IN FL AND THE CORE THIS ROUTINE REQUIRES.          FEAT157
*                  3) B1 = 1                                             FEAT157
*                                                                        FEAT157
*         USES - IRRELEVANT                                              FEAT157
*                                                                        FEAT157
*         CALLS  RESTART                                                 FEAT157
          SPACE  3                                                       FEAT157
 ZQU      BSS    0           LABEL FOR LOCATION WITHIN THIS PROGRAM      FEAT157
          LOC    RA.ORG      RESET LOCATION COUNTER SO THIS CAN EXECUTE  FEAT157
                             PROPERLY WHEN CONTROL-CARD LOADED           FEAT157
 ZQU1    VFD    12/5000B,12/0,18/RA.ORG,18/SWAPIN   50 TBL FOR OVL FRMT  FEAT157
 SWAPIN   SB1    1           SET UP B1=1 CONVENTION                      FEAT157
          SA2    RA.ARG      FIRST PARAMETER WORD                        FEAT157
          NZ     X2,ABORT    IF ANY PARAMETER SPECIFIED                  FEAT157
          SA1    ZQUA        -MEM- REQUEST WORD                          FEAT157
          BX6    X1                                                      FEAT157
          RJ     SYS         ISSUE SYSTEM REQUEST                        FEAT157
          SA1    ZQUC        -READSKP- REQUEST WORD                      FEAT157
          BX6    X1                                                      FEAT157
          RJ     SYS         ISSUE SYSTEM REQUEST                        FEAT157
          RJ     RESTART     USE THE NEWLY RELOADED ROUTINE              FEAT157
          SPACE  3                                                       FEAT157
 ZQUA     VFD    24/4LMEMP,18/0,18/ZQUB    ZQUB IS THE PARAMETER WORD    FEAT157
                                                                         FEAT157
 ZQUB     VFD    12/0,18/0,30/0    18-BIT FIELD WILL HAVE FL FILLED IN.  FEAT157
          SPACE  2                                                       FEAT157
 ZQUC     VFD    24/4LCIOP,18/0,18/ZQUD    ZQUD IS THE FET               FEAT157
                                                                         FEAT157
 ZQUD     VFD    42/7LZZZZZQU,18/22B    FET WITH -READSKP- CODE SET UP   FEAT157
          VFD    42/0,18/0   FIRST POINTER                               FEAT157
          VFD    42/0,18/0   IN POINTER                                  FEAT157
          VFD    42/0,18/0   OUT POINTER                                 FEAT157
          VFD    42/0,18/0   LAST POINTER                                FEAT157
          SPACE  3                                                       FEAT157
 ABORT    SX6    3RABT*4+1      -ABT- REQUEST WITH RECALL                FEAT157
          LX6    40-0           SHIFT FOR LEFT-JUSTIFICATION             FEAT157
          RJ     SYS            ISSUE SYSTEM REQUEST                     FEAT157
          EJECT                                                          FEAT157
***       SYS - PROCESS SYSTEM REQUEST.                                  FEAT157
*                                                                        FEAT157
*         ENTRY  (X6) = SYSTEM REQUEST.                                  FEAT157
*                                                                        FEAT157
*         EXIT   REQUEST PROCESSED.                                      FEAT157
*                                                                        FEAT157
*         USES   A1, A6, X1.                                             FEAT157
*                                                                        FEAT157
*         CALLS  NONE.                                                   FEAT157
                                                                         FEAT157
                                                                         FEAT157
 SYSA     SA1    A1          WAIT (RA.MTR) CLEAR IF AUTO RECALL          FEAT157
          LX1    59-40                                                   FEAT157
          MI     X1,SYS1                                                 FEAT157
                                                                         FEAT157
 SYS1     EQ     SYS2        FIRST ENTRY                                 FEAT157
                                                                         FEAT157
 SYS      EQ     *+1S17      ENTRY/EXIT                                  FEAT157
                                                                         FEAT157
+         SA1    RA.MTR      WAIT (RA.MTR) CLEAR                         FEAT157
          NZ     X1,*                                                    FEAT157
          SA6    A1          ENTER REQUEST                               FEAT157
          EQ     SYS1                                                    FEAT157
                                                                         FEAT157
*         INITIAL ENTRY TO SET TYPE OF CALL.                             FEAT157
                                                                         FEAT157
 SYS2     SA1    66B         TEST FOR CENTRAL EXCHANGE JUMP SUPPORT      FEAT157
          MI     X1,SYS3                                                 FEAT157
          SA1    SYSA        NO, USE WAIT LOOP                           FEAT157
          EQ     SYS4                                                    FEAT157
 SYS3     SX1    0130B       YES, USE XJ INSTRUCTION                     FEAT157
          LX1    48                                                      FEAT157
 SYS4     BX6    X6-X1       SWAP REGISTERS                              FEAT157
          BX1    X6-X1                                                   FEAT157
          BX6    X6-X1                                                   FEAT157
          SA6    SYS1        SET MONITOR CALL                            FEAT157
          BX6    X1          RESTORE (X6)                                FEAT157
          SA1    RA.MTR      RESET (A1)                                  FEAT157
          RJ     SYSA        CLEAR STACK                                 FEAT157
 ZQU2     BSS       0                                                    FEAT157
                                                                         FEAT157
          LOC    *O                RESET LOCATION COUNTER TO CORRECT VAL FEAT157
                                                                         FEAT157
 ZQUORG   EQU    ZQU-ZQU1    THIS, ADDED TO ANY LABEL IN THE SWAPIN      FEAT157
                             ROUTINE, GIVES A PROPER RELOCATABLE ADDRESS FEAT157
                                                                         FEAT157
 ZQULENG  EQU    ZQU2-ZQU1+RA.ORG  THIS IS THE NUMBER OF WORDS WHICH     FEAT157
                                   WILL BE NEEDED FOR -SWAPIN- EXECUTION FEAT157
          TITLE  RESTART - ROUTINE THAT RESARTS QU AFTER SWAPIN          FEAT157
***       RESTART - ROUTINE THAT RESTARTS QU AFTER SWAPIN HAS TAKEN PLC  FEAT157
*                                                                        FEAT157
*         ENTRY  NONE                                                    FEAT157
*                                                                        FEAT157
*         EXIT   QU FIELD LENGTH IS AS WAS BEFORE OS DIRECTIVE           FEAT157
*                                                                        FEAT157
*         CALLS  CONFILES, ONRPV, FREECM, CIO=, MOV                      FEAT157
          SPACE  3                                                       FEAT157
 RESTART  JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SA1    LAST        (X1) = CONTENTS OF LAST WORD IN FL          FEAT157
          SA2    ADDRLAST    (X2) = ADDRESS OF LAST WORD IN FL           FEAT157
          BX6    X1                                                      FEAT157
          SA6    X2          RESTOR LAST WORD OF FL                      FEAT157
          SA1    FRFP        (X1) = ADDRESS OF BLOCK CONTAINING LOW CORE
          MOVE   X1,ZQULENG-2,2    MOVE THE WORDS BACK TO LOW CORE       FEAT157
          RJ     CONFILES    CONNECT TERMINAL FILES AS NEEDED            FEAT157
          RJ     ONRPV       TURN ON ANY NEEDED REPRIEVE STUFF           FEAT157
          SA1    PFRFP       (A1) = POINTER TO CMM$FRF PARAMETER LIST 
          RJ     =XCMM$FRF   FREE A FIXED CMM BLOCK BY FWA
          SB1    1           RESET B1 IN CASE SYMPL CLOBBERED IT         FEAT157
          SX5    B1                                                      FEAT157
          SA1    ZZZZZQU     FET+0 WORD                                  FEAT157
          BX6    X5+X1       SET COMPLETE BIT IN CASE NOT SET WHEN       FEAT157
                                   WRITTEN OUT TO THE SWAP FILE          FEAT157
          SA6    A1          REPLACE THE FET+0 WORD                      FEAT157
          SX6    OSEXEC      RANDOM ADDRESS FOR A DUMMY BUFFER
          SX7    X6+200B     ADDRESS FOR LAST 
          SA6    ZZZZZQU+1   FIRST              - THESE ARE SET TO AVOID
          SA6    A6+B1       IN                 - A BUFFER ARG ERROR IF 
          SA6    A6+B1       OUT                - FREECM RESULTED IN A
          SA7    A6+B1       LAST               - BLOCK BEING RELEASED
          SA6    ZZZZZQY+1   -FIRST-     -REPEAT ABOVE
          SA6    A6+B1       -IN-        -FOR C.S.FILE
          SA6    A6+B1       -OUT-
          SA7    A6+B1       -LAST- 
          RETURN ZZZZZQU     W/O RECALL... WONT TOUCH IT FOR A WHILE     FEAT157
                                                                         FEAT157
          IFC    EQ,$"OS.NAME"$SCOPE $
          ENCSF  DUMMYCS,DUMMYCS+1     CLEAR CONTROL STATEMENT ENVIRON
          ENDIF 
          RETURN ZZZZZQY     RETURN THE PROCEDURE FILE                   FEAT157
                                                                         FEAT157
          MX6    59 
          SA1    LOFLOC      (X1) = 30/LOF,30/COMPLETE BIT
          BX6    X6*X1       CLEAR COMPLETE BIT 
          SA6    A1 
          SETLOF LOFLOC,RCL  TELL O/S THE LOCATION OF LIST OF FILES 
  
 PAGEWAIT IFC    EQ,$"OS.NAME"$SCOPE $
          SA1    TERMINAL 
          ZR     X1,RESTART2 IF BATCH MODE
          SA1    =XIPROCES
          NZ     X1,RESTART2 IF NON-CONNECTED INPUT FILE
          SA1    =XOPROCES
          NZ     X1,RESTART2 IF NON-CONNECTED OUTPUT FILE 
          WRITEC (=XOUTPUT),(=C*Q*) CLEAR INTERCOM AUTO PAGE-WAIT 
 RESTART2 BSS    0
 PAGEWAIT ENDIF 
  
          EQ     OSEXEC      ALL DONE... RETURN THROUGH OSEXEC-S RJ LINK FEAT157
          SPACE  2
 DUMMYCS  BSSZ   2           ZERO - CAUSES ENCSF TO CLEAR C.S.FILE
          TITLE  ROUTINES TO RECONNECT FILES                             FEAT157
***       CONFILES - CONNECT INTERACTIVE FILES AS NEEDED                 FEAT157
*                                                                        FEAT157
*         ENTRY  NONE                                                    FEAT157
*                                                                        FEAT157
*         EXIT   PROPER FILES ARE RE-CONNECTED TO TERMINAL               FEAT157
*                                                                        FEAT157
*         CALLS  CONREQ                                                  FEAT157
          SPACE  3                                                       FEAT157
 CONFILES JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SA1    =XIPROCES   ITEM IPROCESSED                             FEAT157
          NZ     X1,CONFILE1 IF BATCH OR I=LFN WAS SPECIFIED             FEAT157
          SX1    =XINPUT           INPUT FET                             FEAT157
          RJ     CONREQ                                                  FEAT157
 CONFILE1 SA1    =XOPROCES   ITEM OPROCESSED                             FEAT157
          NZ     X1,CONFILE2 IF BATCH OR O=LFN SPECIFIED                 FEAT157
          SX1    =XOUTPUT          OUTPUT FET                            FEAT157
          RJ     CONREQ 
          IFC    EQ,$"OS.NAME"$KRONOS$
          PROMPT OFF
          ENDIF 
 CONFILE2 EQ     CONFILES    RETURN                                      FEAT157
          SPACE  6                                                       FEAT157
***       CONREQ - ISSUE REQUEST FOR CONNECTING FILES                    FEAT157
*                                                                        FEAT157
*         ENTRY  (X1) = ADDRESS OF THE FILE-S FET                        FEAT157
*                                                                        FEAT157
*         EXIT   THE FILE IS CONNECTED                                   FEAT157
*                                                                        FEAT157
*         CALLS  SYS=, (REQUEST MACRO)                                   FEAT157
          SPACE  3                                                       FEAT157
          IFC    EQ,$"OS.NAME"$KRONOS$                                   FEAT157
 CONREQ   JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SX2    X1                (X2) = FET ADDRESS                    FEAT157
          SA5    X2+1              WORD OF FET WITH EP BIT               FEAT157
          SX0    4                                                       FEAT157
          LX0    42                POSITION AS EP BIT                    FEAT157
          BX6    X0+X5             ADD IN EP BIT                         FEAT157
          SA6    A5                REPLACE WORD                          FEAT157
          SX7    15B               CODE FOR REQUEST                      FEAT157
          RJ     =XLFM=            ISSUE REQUEST                         FEAT157
          BX6    X5                FET+1 WORD BEFORE EP FORCED           FEAT157
          SA6    A5                REPLACE THE WORD                      FEAT157
  
  
* NOW CLEAR THE ERROR CODE FIELD SO AUTOMATIC BUFFER FLUSHING WORKS 
  
          SA5    A5-1        (X5) = FET+0 WORD
          MX6    -8          (X6) = MASK FOR 8 BIT ERROR CODE FIELD 
          LX6    10-0        (X6) = MASK FOR BITS 10-17 
          BX6    X6*X5       CLEAR LFM ERROR CODE FIELD 
          SA6    A5          REPLACE FET+0 WORD 
          EQ     CONREQ      RETURN                                      FEAT157
          ENDIF                                                          FEAT157
                                                                         FEAT157
          IFC    EQ,$"OS.NAME"$SCOPE $                                   FEAT157
 CONREQ   JP     *+1S17      ENTRY/EXIT                                  FEAT157
          SA1    X1                FETCH FET+1 WORD                      FEAT157
          MX0    42                                                      FEAT157
          BX6    X1*X0       SAVE 7 CHARS OF LFN FROM FET+0              FEAT157
          SA6    CONREQB     SAVE IN CON PARAM WORD                      FEAT157
          SA1    CONREQA     CON REQUEST WORD                            FEAT157
          BX6    X1                                                      FEAT157
          RJ     =XSYS=      ISSUE SYSTEM REQUEST                        FEAT157
          EQ     CONREQ      RETURN                                      FEAT157
                                                                         FEAT157
                                                                         FEAT157
 CONREQA  VFD    24/4LCONP,18/0,18/CONREQB    -CON- REQUEST WORD         FEAT157
 CONREQB  DATA   0           CON PARAMETER WORD                          FEAT157
          ENDIF                                                          FEAT157
          TITLE  ERROR PROCESSING                                        FEAT157
 ERR1     SA1    ERR1A       FETCH PARAMETER LIST FOR -DIAG-             FEAT157
          RJ     =XDIAG      ISSUE THE DIAGNOSTIC FOR NO SPACE           FEAT157
          EQ     OSEXEC                                                  FEAT157
                                                                         FEAT157
                                                                         FEAT157
 ERR1A    VFD    42/0,18/ERR1B     PARAMETER WORD POINTS TO DIAG NO.     FEAT157
                                                                         FEAT157
 ERR1B    DATA   297D        DIAG FOR NO SPACE AVAILABLE                 FEAT157
          END                                                            FEAT157
