         PCC      0                                                             
         SYSTEM   SIG5P                                                         
         SYSTEM   OPTIONS                                                       
         DO       #SYMB                                                         
         DEF      SYM5                                                          
         DEF      RCCUPF,RCCUPJ                                                 
         DEF      SMBACKUP,SMXTND                                               
*   EXIT POINTS                                                                 
         DEF      SYM5X1,SYM5X2                                                 
OLAYFLAG EQU      'SYM5'                                                        
         SYSTEM   CPRMON                                                        
         PAGE                                                                   
*                                                                               
*                                                                               
SYM5     RES      0                                                             
*                                                                               
*   EXITS                                                                       
*                                                                               
SYM5X1P  PULL     R5                                                            
SYM5X1   B        1,R5                                                          
SYM5X2P  PULL     R5                                                            
SYM5X2   B        0,R5                                                          
         TITLE    '** SYM5 - PROCESS "B" AND "R" KEYINS **'                     
         SPACE    2                                                             
****************************                                                    
*                                                                               
*        NOTE:  ASSUMPTIONS ARE MADE THAT THE AVERAGE PAGE HAS                  
*               32 OR 33 LINES PER PAGE,                                        
*               THAT ON A 256 WORD PER SECTOR DISC (RAD), ONE                   
*               PRINTER PAGE FITS IN ONE SECTOR - THUS ALLOWING                 
*               PRINTER PAGES TO BE EQUATED TO SECTORS BELOW.                   
*                                                                               
****************************                                                    
         SPACE    2                                                             
SMBACKUP EQU      %         BACK-UP PROCESSOR                                   
         LW,R0    SYMB              TEST IF 'DO' IS NOW ON                      
         CI,R0    SYMBDO            IF SO, DO NOTHING AT ALL                    
         BAZ      SMBKUP8           B IF NOT IN DO MODE                         
         AI,R5    1                 IN DO MODE; IGNORE BACKUP AND               
         B        SMBKUPG            EXIT +2.                                   
SMBKUP8  RES      0                                                             
*                                                                               
*                                                                               
         PUSH     R5                SAVE RETURN                                 
         LI,R14   TSRWFDCB          COMPUTE ADDRESS OF FILE DCB                 
         AW,R14   R7                                                            
         LI,R2    0                 PUT BACK UP COUNT IN R2, R3                 
         LW,R6    DCTSYM2,R1        GET TSPACE POINTER TO COUNT                 
         LW,R3    SYMBACUP,R6       PICK UP 2ND WORD, EXTRACT COUNT             
         LB,R3    R3                IS REWIND REQUESTED ?                       
         BEZ      SMBKUPR           IF >0 ==> BACK SPACE; 0 ==> REWIND          
         PAGE                                                                   
*                                                                               
*                           DOING A BACKSPACE                                   
         LI,R6    7                 GET RFT INFO FOR THE CURRENT FILE           
         LB,R6    *R14,R6           FIRST GET FILE INDEX FROM DCB               
         LW,R5    RFT3,R6           GET EOT-BOT = FILE SIZE IN PAGES            
         SW,R5    RFT2,R6           AND CURRENT PAGE POSITION IN IT             
         AI,R5    1                                                             
         LW,R4    RFT11,R6          PAGES TO BACK UP / PAGES PER                
         DW,R2    R5                EXTN = EXTN, SECTORS TO BACK-UP             
         SW,R4    R2                COMPUTE PAGE TO START WITH IN EXTN          
         BGEZ     SMBKUPA           REL TO START OF THAT EXTN                   
*                                                                               
         AI,R3    +1                OFF FRONT OF EXTN, BACK UP AN EXTRA         
         AW,R4    R5                EXTN, SKIP FORWARD IN IT                    
*                                                                               
SMBKUPA  EQU      %         ADJUST POSITION WITHIN EXTENSION TO LINES           
         LW,R2    R4                SET NEW POSITION IN NEW EXTN                
         SLS,R2   4                 BY CONVERTING SECTORS TO LINES              
*                                                                               
*                                                                               
SMBKUPB  EQU      %         REWIND/BACK-UP INTO A PREVIOUS SECTOR               
         LI,R9    SMBKUPXX          SET CLOSE ERROR PROCESSOR                   
         CAL1,1   FPTCLOS           CLOSE THE CURRENT FILE                      
         LW,R13   TSRWFDCB+6,R7     GET 2ND HALF OF FILE NAME                   
         LW,R11   R13               SAVE IT IN CASE OF ERROR LATER              
         LI,R4    3                 CONVERT TO THREE DIGIT NUMBER               
         BAL,R8   SMBCDHEX                                                      
         SW,R14   R3                BACK UP PROPER NUMBER OF EXTN.S             
         BGEZ     SMBKUPC           NOT OFF BEGINNING, SO OK                    
*                                                                               
         LI,R14   0                 OFF 1ST EXTN.; SET TO START AT              
         LI,R2    0                 AT VERY BEGINNING                           
         PAGE                                                                   
*                                                                               
*                                                                               
*                                                                               
*                                                                               
SMBKUPC  EQU      %         POINT  AT EXTN TO RESET TO                          
         LW,R13   R14               SET NEW EXTN NUMBER                         
         BAL,R8   SMHEXBCD          CONVERT BACK TO EBCDIC                      
*   OPEN THE EXTENSION TO RESUME PRINTING                                       
         LW,R15   M24               R15 = MASK                                  
         LW,R14   R13               R14= NEW EXTENSION (EBCDIC)                 
         STS,R14  TSRWFDCB+6,R7     STORE TO UPDATE CURRENT FILE                
         LI,R14   TSRWFDCB                                                      
         AW,R14   R7                RECOMPUTE DCB ADDRESS                       
         LI,R9    SMBKUPYY          SET ERROR ADDRESS                           
         CAL1,1   FPTOPEN           OPEN THE FILE IF THERE                      
*                                                                               
*                                                                               
SMBKUPE  EQU      %         POSITION TO FIRST RECORD TO PRINT IN EXTN           
         LW,R2    R2                NEED TO SKIP IN SOME LINES ?                
         BLEZ     SMBKUPF             NO, PREPARE TO EXIT                       
*                                                                               
*                                                                               
         LCI      4                 MOVE SKIP RECORD FPT                        
         LM,R10   FPTPREC                                                       
         STM,R10  TSMSCFPT,R7       TO OUR CONTEXT                              
         LI,R9    SMBKUPZZ          SET ERROR RETURN                            
         CAL1,1   TSMSCFPT,R7       SKIP, SKIP, SKIP                            
         PAGE                                                                   
*                                                                               
*                                                                               
*                                                                               
SMBKUPF  EQU      %         PREPARE TO EXIT                                     
         PULL     R5                RESTORE LINK                                
SMBKUPG  RES      0                                                             
         LI,R15   KFF-DCTSYMB       SET TO RESET 'B' FLAG                       
         DISABLE                                                                
         LB,R0    DCTSYM3,R1                                                    
         AND,R0   R15               RESET INDICATOR                             
         STB,R0   DCTSYM3,R1                                                    
         ENABLE                                                                 
         B        SYM5X2            EXIT AT RESTART                             
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
SMBKUPR  EQU      %         REWIND (RESTART)                                    
*        LI,R2    0                 SET TO START AT BEGINNING OF FIRST          
         LW,R3    XFFFF             EXTENSION (BACK UP X'FFFF' SECTORS)         
         B        SMBKUPB           AND PROCESS AS A NORMAL BACKSPACE           
         TITLE    '** SYM5 - PROCESS "B" AND "R" KEYIN ERRORS **'               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
SMBKUPXX EQU      %         ERROR CLOSING ORIGINAL FILE                         
         BAL,R0   SYMCRSH           DIE IF CANT CLOSE THE FILE                  
*                                                                               
*                                                                               
*                                                                               
SMBKUPYY EQU      %         ERROR OPENING NEW FILE                              
         STW,R11  TSRWFDCB+6,R7     RESET NAME OF OLD CURRENT EXTN              
         LI,R9    SMBKUPYZ          SET NEW ERROR ADDRESS                       
         CAL1,1   FPTOPEN           TRY TO REOPEN CURRENT FILE                  
         B        SMBKUPF           CLEANUP AND EXIT                            
*                                                                               
*                                                                               
SMBKUPYZ EQU      %         ERROR RE-OPENNING CURRENT FILE                      
         BAL,R0   SYMCRSH           DIE, DIE, DIE (FOR NOW)                     
*                                                                               
*                                                                               
*                                                                               
SMBKUPZZ EQU      %         ERROR IN PREC                                       
         B        SMBKUPF           SO START WHERE WE ARE                       
         TITLE    '** SYM5 - SMXTND SUBROUTINE **'                              
**************                                                                  
*   SMXTND   *                                                                  
**************                                                                  
*                                                                               
*                                                                               
*   SUBROUTINE CALLED WHEN EOT IS REACHED ON A SYMBIONT FILE.                   
*   ROUTINE ALLOTS AN EXTENSION FILE AND SETS UP THE WRITE DCB SO               
*   THAT THE WRITE CAN BE STARTED AGAIN WITH THE NEW FILE.                      
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R5    LINK                                                    
*                 R7    RFT INDEX                                               
*                 R10   BUFFER ADDRESS                                          
*                 R11   BYTE COUNT                                              
*                                                                               
*   ROUTINE RETURNS +2 IF EXTENSION  WAS ALLOCATED                              
*   ROUTINE RETURNS +1 IF ERROR WITH TYC IN R12                                 
*                                                                               
*                                                                               
SMXTND   RES      0                                                             
         PUSH     R5                SAVE LINK                                   
         LB,R5    RFT8,R7           NO, GET AREA INDEX                          
         LH,R5    MDNAME,R5                                                     
         AND,R5   M16               R5= AREA NAME                               
         CI,R5    KOS               IS THE AREA OS                              
         BE       SMXTND10          YES                                         
         CI,R5    KIS               IS IT THE IS AREA                           
         BNE      SMXTND40          NOT A SYMBIONT AREA; POST EOT               
*                                                                               
*   HERE THE OUTPUT COOPERATIVE OR THE INPUT SYMBIONT HAS                       
*   WRITTEN TO THE END OF THE CURRENT FILE. THE CURRENT                         
*   FILE WILL BE CLEANED UP AND A CONTINUATION FILE WILL                        
*   BE DEFINED.                                                                 
*                                                                               
SMXTND10 RES      0                                                             
*   DETERMINE THE NEXT EXTENSION NUMBER                                         
         LW,R13   6,R2              R13= FILE NAME WORD 1                       
         LI,R4    3                 # OF CHARACTERS TO CONVERT                  
         BAL,R8   SMBCDHEX          CONVERT EXT.# TO BINARY                     
         CI,R14   X'FFF'            TEST FOR EXTENSION # OVERFLOW               
         BGE      SMXTND40          OVERFLOW, RETURN EOT                        
         MTW,-1   RFT6,R7           FIX FILE SIZE (ALREADY INCREMENTED)         
         AI,R14   1                                                             
         LW,R13   R14               R13= NEXT EXTENSION                         
         BAL,R8   SMHEXBCD          CONVERT TO EBCDIC                           
         LW,R14   R13               R14= NEW EXTENSION IN EBCDIC                
*   ALLOT A FILE WITH NEW EXTENSION                                             
         LCI      4                 MOVE ALLOT FPT INTO R6-R13                  
         LM,R6    FMALLOT                                                       
         LI,R4    1                                                             
         STH,R5   R6,R4             STORE AREA NAME IN FPT WORD 0               
         LW,R10   5,R2              R10,R11= NEW FILE ANME                      
         LW,R11   6,R2                                                          
         LW,R15   M24                                                           
         STS,R14  R11               STORE EXTENSION IN OLD FILE NAME            
*                                    TO MAKE THE NEW FILE NAME                  
         LI,R12   S:ISFSIZ          R12= FILE SIZE FOR IS AREA                  
         CI,R5    KIS               IS IT THE INPUT SYMBIONT AREA               
         BE       %+2               YES                                         
         LI,R12   S:OSFSIZ          NO, SET FILE SIZE FOR OS AREA               
         LI,R8    SMXTND30          ERROR RETURN FOR ALLOT                      
         CAL1,7   R6                ALLOT THE FILE                              
*   CLOSE THE PREVIOUS FILE                                                     
         LW,R14   R2                R14= DCB ADDRESS                            
         LI,R9    SMXTND50          ERROR RETURN FOR CLOSE                      
         CAL1,1   FPTCLOS           CLOSE THE PREVIOUS FILE                     
         STW,R11  6,R2              UPDATE FILE NAME IN THE DCB                 
         CI,R5    KOS               IS THE AREA OS                              
         BE       SMXTND20          YES, BRANCH                                 
*   SIMULATE 'C' KEYIN TO CRANK UP BKGD IF WE ARE                               
*   ON EXTENT 0 AND BKGD IS NOT ALREADY RUNNING.                                
         AND,R11  M24               3 DIGIT EXTENSION PART OF FILE NAME         
         CW,R11   XF0F0F1           WRITING TO EXTIONSION #1 NOW?               
         BNE      SYM5X1P           NO, BKGD ALREADY STARTED                    
         LW,R0    SYMB              YES, GET SYMB FLAGS                         
         CI,R0    SYMBC             OK TO SIMULATE 'C' KEYIN                    
         BAZ      SYM5X1P           NO, BRANCH                                  
         BAL,R8   BKGSEQ            SIMULATE 'C' KEYIN                          
         NOP                        +1..BKGD ALREADY GOING                      
         B        SYM5X1P           +2..BKGD CRANKED UP                         
*   SIMULATE SYYNDD,I KEYIN FOR ALL APPROPRIATE LINE                            
*   PRINTERS AND START THE SYMBIONT TASK.                                       
SMXTND20 RES      0                                                             
         BAL,R8   SIMIKEY                                                       
         LI,R9    %+2               ERROR ADDRESS (IGNORE)                      
         CAL1,7   WCSTART           START SYMBIONT TASK                         
         B        SYM5X1P           RETURN +2                                   
*                                                                               
*                                                                               
*                                                                               
*   PROCESS ERRORS IN AUTOMATIC FILE EXTENSION                                  
*                                                                               
SMXTND30 RES      0                                                             
         LB,R12   R13               R12= ERROR FROM ALLOT CALL                  
         B        SYM5X2P           POST                                        
*                                                                               
SMXTND40 RES      0                                                             
         LI,R12   K5                RETURN EOT TYC                              
         B        SYM5X2P           TAKE +1 EXIT                                
*                                                                               
SMXTND50 RES      0                                                             
         BAL,R0   SYMCRSH           ALARM, SHOUDN'T GET ERROR                   
         TITLE    '** SYM5 - RCCUP SUBROUTINE **'                               
*************                                                                   
*   RCCUPJ  *                                                                   
*   RCCUPF  *                                                                   
*************                                                                   
*                                                                               
*   ROUTINES CALLED FROM THE OUTPUT COOPERATIVE IN ORDER TO                     
*   ENSURE THAT INPUT SYMBIONT AREA FILES FOR THE CURRENT                       
*   JOB ARE CLOSED AND DELETED.                                                 
*                                                                               
*   AT ENTRY:     R5   LINK                                                     
*                                                                               
*   RETURNS +2 NORMALLY                                                         
*   RETURNS +1 IF ERROR (R8,R10 STANDARD ERROR RET REGISTERS)                   
*                                                                               
*                                                                               
RCCUPJ   RES      0                 ENTRY FOR JOB PROCESSING                    
         PUSH     R5                                                            
         LW,R12   RCDCB+5           GET CURRENT INPUT JOB# FROM DCB             
         LW,R13   RCDCB+6                                                       
         SLD,R12  -24                                                           
         LI,R4    3                                                             
         BAL,R8   SMBCDHEX          CONVERT TO BINARY IN R14                    
         CW,R14   JOB#              DCB USED BY EXECUTING JOB                   
         BNE      RCCUP5            NO, OK TO DELETE FILES                      
         B        SYM5X1P           YES, EXIT, JOB IS USING RCDCB               
*                                                                               
RCCUPF   RES      0                 ENTRY FOR FIN PROCESSING                    
         PUSH     R5                SAVE LINK                                   
RCCUP5   RES      0                                                             
         LI,R5    6                                                             
         LB,R5    RCDCB,R5          GET AREA FOR CURRENT DCB                    
         LH,R5    MDNAME,R5         R5= AREA NAME                               
         AND,R5   M16               MASK                                        
         CI,R5    KIS               IS DCB ASSIGNED TO SYMBIONT FILE            
         BNE      SYM5X1P           NO, DON'T DELETE FILES                      
         LW,R0    RCDCB             GET DCB WORD 0                              
         CW,R0    Y002              IS THE DCB OPEN                             
         BAZ      RCCUP10           NO                                          
         LI,R14   RCDCB             R14= ADDRESS OF DCB TO CLOSE                
         LI,R9    RCCUP30           ERROR RETURN FOR CLOSE                      
         CAL1,1   FPTCLOS           CLOSE RCDCB                                 
RCCUP10  RES      0                                                             
         LW,R12   RCDCB+5           GET FILE NAME IN R12,R13                    
         LW,R13   RCDCB+6                                                       
         SLD,R12  -24                                                           
         BAL,R5   SMDFIS            DELETE ALL FILES IN IS FOR THIS JOB         
         B        RCCUP20           ERROR                                       
         B        SYM5X1P           TAKE NORMAL EXIT (+2)                       
*                                                                               
*   ERROR PROCESSING                                                            
*                                                                               
RCCUP20  RES      0                                                             
         STB,R15  R10               STORE ERROR CODE IN BYTE 0 OF R10           
RCCUP30  RES      0                                                             
         B        SYM5X2P           TAKE ERROR EXIT(+1)                         
         OLAYEND                                                                
         FIN      #SYMB                                                         
         END                                                                    
