         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*   ENTRY POINTS                                                                
         DEF      REWDEV                                                        
         DEF      WEOFDEV,PRECDEV,PFILDEV                                       
*   EXIT POINTS                                                                 
         DEF      REWDX1,REWDX2,REWDX3,REWDX4                                   
         DO1      #ECB                                                          
         DEF      REWDX5                                                        
OLAYFLAG EQU      'REWD'                                                        
         SYSTEM   CPRMON                                                        
*                                                                               
*   EXITS                                                                       
*                                                                               
REWDX1   B        CALEXIT                                                       
         TITLE    'DEVICE REWIND'                                               
**************                                                                  
*   REWDEV   *                                                                  
**************                                                                  
*                                                                               
*                                                                               
*                                                                               
*   THIS ROUTINE PROCESSES REWIND SYSTEM CALLS FOR DEVICES                      
*   ENTRY IS VIA BRANCH FROM THE REWIND OVERLAY                                 
*                                                                               
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R7    DEVICE INDEX (DCT)                                      
*                 R8    WORD 0 OF DCB                                           
*                                                                               
*                                                                               
REWDEV   RES      0                                                             
         DO       #MTAPE                                                        
         BAL,R15  MTTYPE            IS DEVICE A MAGNETIC TAPE                   
         B        REWDX1            NO                                          
         LW,R8    CUPCOD4           CLEANUP CODE FOR NO POSTING                 
         LI,R10   0                 ZERO BUFFER ADDRESS                         
         LI,R4    FCREWMT                                                       
         CI,R1    3                                                             
         BNE      %+2               B IF NOT UNLOAD                             
         LI,R4    FCROFFMT                                                      
         LB,R6    TCBPOINT          STI INDEX                                   
         LW,R6    STIPRIO,R6                                                    
         LB,R13   R6                                                            
         LW,R6    1,R2              GET DCB WORD 1                              
         LB,R6    R6                R6= NUMBER OF RETRIES                       
         LW,R15   0,R3              FPT WORD 0                                  
         CW,R15    Y008             TEST FOR L BIT         /SIG7-2064/*C5732 C01
         BAZ      NOWAITFC          NO ADDITIONAL OPTIONS  /SIG7-2064/*C5732 C01
         ELSE                                              /SIG7-2064/*C5732 C01
         B        REWDX1            CALEXIT                                     
         FIN                                               /SIG7-2064/*C5732 C01
         DO       #MTAPE|#PTAPE|#CPUNCH|#LPRINT|#LPRNTLC   /SIG7-2064/*C5732 C01
EAWAITCK LI,R15   9                 CHECK FOR END ACTION   /SIG7-2064/*C5732 C01
         PUSH     R4                SAVE FUNCTION CODE     /SIG7-2064/*C5732 C01
         BAL,R4   CKENACT                                  /SIG7-2064/*C5732 C01
         B        EAERROR           ERROR IN USER END-ACTION DATA               
         PULL     R4                RESTORE FUNCTION CODE  /SIG7-2064/*C5732 C01
         BAL,R5   SETOVR            SET OVERRIDE IF REQUESTED                   
         LW,R9    R15               END ACTION INFO.       /SIG7-2064/*C5732 C01
         BEZ      WAITTEST          NO END ACTION          /SIG7-2064/*C5732 C01
         OR,R8    Y004              SET BIT 9 IN E.A. DATA /SIG7-2064/*C5732 C01
WAITTEST LW,R5    1,R3              FPT WORD 1             /SIG7-2064/*C5732 C01
         CI,R5    K10               WAIT BIT SET?          /SIG7-2064/*C5732 C01
         BANZ     WAITFC            YES/BRNCH ELSE NOWAITFC/SIG7-2064/*C5732 C01
         FIN                                               /SIG7-2064/*C5732 C01
NOWAITFC RES      0                 FUNCTION WITH NO WAIT  /SIG7-2064/*C5732 C01
         LW,R1    R2                DCB ADDR. TO R1                             
         LI,R15   -1                FLAG FOR NO REENTRANCE CHECK                
         BAL,R5   FMQUEUE           QUEUE THE REQUEST                           
         B        NOWAITER          ERROR, R9= ERROR CODE                       
         DO       #ECB                                                          
REWDX5   B        TESTWT4           EXIT                                        
         ELSE     #ECB                                                          
         B        REWDX1                                                        
         FIN      #ECB                                                          
WAITFC   RES      0                                                             
         LI,R15   -1                DON'T CHECK DIRECTORY REENTRANCE            
         BAL,R5   CALLQ             QUEUE AND WAIT FOR COMPLETION               
         B        CQERROR           PROCESS ERROR                               
         B        REWDX1            CALEXIT                                     
         SPACE 3                                                                
*                                                                               
*   MISCELLANEOUS EXITS                                                         
*                                                                               
CQERROR  RES      0                 PROCESS ERROR RET. FROM CALLQ               
         LW,R9    R6                ERROR CODE TO R9                            
REWDX3   B        DCBERR                                                        
*                                                                               
EAERROR  PULL     R4                                                            
REWDX4   B        TRAPX                                                         
*                                                                               
NOWAITER LW,R2    R1                DCB ADDR. TO R2                             
         B        REWDX3            ERROR EXIT                                  
*                                                                               
REWDX2   B        GETNRT                                                        
         TITLE    'WRITE END-OF-FILE ON A DEVICE'                               
***************                                                                 
*   WEOFDEV   *                                                                 
***************                                                                 
*                                                                               
*                                                                               
*   THIS ROUTINE PROCESSES WEOF SYSTEM CALLS FOR DEVICES                        
*   ENTRY IS VIA BRANCH FROM THE REWIND OVERLAY                                 
*                                                                               
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R7    DEVICE INDEX (DCT)                                      
*                 R8    WORD 0 OF DCB                                           
*                                                                               
*                                                                               
WEOFDEV  RES      0                                                             
         DO       #MTAPE|#PTAPE|#CPUNCH                    /SIG7-4730/*C5732 C01
         LW,R8    CUPCOD4           CODE TO NOT POST DCB,FPT                    
         LD,R10   ZEROS             BUFF ADD AND BYTES= 0                       
         LB,R4    DCT4,R7           DEVICE TYPE TO R4                           
         FIN                                                                    
         DO       #PTAPE                                                        
         CI,R4    3                 TEST IF PAPER PUNCH                         
         BE       WEOFPT                                                        
         FIN                                                                    
         DO       #CPUNLC                                                       
         CI,R4    10                IS IT A LC PUNCH                            
         BE       WEOFCP            YES                                         
         FIN      #CPUNLC           NO                                          
         DO #CPUNCH                                        /SIG7-4730/*C5732 C01
         CI,R4    K5                TEST FOR CP            /SIG7-4730/*C5732 C01
         BE       WEOFCP                                   /SIG7-4730/*C5732 C01
         FIN                                               /SIG7-4730/*C5732 C01
         CI,R4    18                SPECIAL HANDLER                             
         BE       WEOFSP            YES                                         
*                                   NO                                          
         CI,R4    19                IS IT A LOGICAL DEVICE                      
         BE       WEOFLD            YES                                         
*                                   NO                                          
         DO       #MTAPE                                                        
*                                                                               
         BAL,R15  MTTYPE            IS DEVICE A MAGNETIC TAPE                   
         B        REWDX1            NO                                          
*                                   YES                                         
WEOFMTAP LI,R4    FCWTMMT                                                       
         ELSE                                              /SIG7-2064/*C5732 C01
         B        REWDX1                                                        
         FIN                                               /SIG7-2064/*C5732 C01
*                                                                               
WEOFLTST RES      0                                                             
         LW,R15   0,R3              FPT WORD 0                                  
         CW,R15   Y008              TEST L BIT             /SIG7-2064/*C5732 C01
         BAZ      WAITFC            NO ADDITIONAL OPTIONS  /SIG7-2064/*C5732 C01
         LB,R6    TCBPOINT          STI INDEX                                   
         LW,R6    STIPRIO,R6                                                    
         LB,R13   R6                HARDWARE PRIORITY                           
         LW,R6    1,R2              GET DCB WORD 1                              
         LB,R6    R6                R6= NUMBER OF RETRIES                       
         B        EAWAITCK                                                      
*                                                                               
         DO       #PTAPE                                   /SIG7-4730/*C5732 C01
WEOFPT   LI,R4    FCWPTBCD                                 /SIG7-4730/*C5732 C01
         LI,R10   BA(EODREC)        BUFFER ADDR OF EOD RECORD                   
         LI,R11   4                 BYTE COUNT             /SIG7-4730/*C5732 C01
         B        WEOFLTST                                 /SIG7-2064/*C5732 C01
         FIN      #PTAPE                                                        
*                                                                               
         DO       (#CPUNCH+#CPUNLC)>0                                           
WEOFCP   LI,R4    FCWCPBCD                                 /SIG7-4730/*C5732 C01
         LI,R10   BA(EODREC)        BUFFER ADDR OF EOD RECORD                   
         LI,R11   4                 BYTE COUNT                                  
         B        WEOFLTST                                                      
         FIN                                               /SIG7-4730/*C5732 C01
*                                                                               
WEOFSP   RES      0                                                             
WEOFLD   RES      0                                                             
         LI,R4    3                 WEOF FUNCTION FOR THESE                     
         B        WEOFLTST                                                      
         TITLE    'POSITION RECORD ON A DEVICE'                                 
***************                                                                 
*   PRECDEV   *                                                                 
***************                                                                 
*                                                                               
*                                                                               
*   THIS ROUTINE PROCESSES PREC SYSTEM CALLS FOR DEVICES                        
*   ENTRY IS VIA BRANCH FROM THE REWIND OVERLAY                                 
*                                                                               
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R7    DEVICE INDEX (DCT)                                      
*                 R8    WORD 0 OF DCB                                           
*                                                                               
*                                                                               
PRECDEV  RES      0                                                             
         DO       #MTAPE                                                        
         LI,R15   1                                                             
         BAL,R5   GETFPTN                                                       
         LI,R15   1                 DEFAULT                /SIG7-2064/*C5732 C01
         BAL,R0   GETEFADR                                                      
         LW,R9    1,R3                                                          
         LW,R12   R15                                                           
         BEZ      REWDX1            CALEXIT                                     
*                                                                               
         BAL,R15  MTTYPE            IS DEVICE A MAGNETIC TAPE                   
         B        REWDX1            NO                                          
*                                   YES                                         
         BAL,R4   SETBUSY           SET DCB/FPT BUSY       /SIG7-2064/*C5732 C01
         LW,R11   R12               IBC= RECORD COUNT                           
         LI,R4    FCFSRMT           SPACE FWD FC                                
         CI,R9    K10                                                           
         BAZ      PRECDEV3          B IF POSITIONING FORWARD                    
         LI,R4    FCBSRMT           BACK SPACE FC                               
PRECDEV3 RES      0                                                             
         LI,R10   0                 SET BUFFER ADDRESS TO 0                     
         LB,R5    TCBPOINT          TASK ID                                     
         LW,R5    STIPRIO,R5                                                    
         LB,R13   R5                PRIORITY FOR QUEUE                          
         B        REWDX2            B TO GETNRT                                 
         ELSE                                                                   
         B        REWDX1            CALEXIT                                     
         FIN                                                                    
         TITLE    'POSITION FILE ON A DEVICE'                                   
***************                                                                 
*   PFILDEV   *                                                                 
***************                                                                 
*                                                                               
*                                                                               
*   THIS ROUTINE PROCESSES PFIL SYSTEM CALLS FOR DEVICES                        
*   ENTRY IS VIA BRANCH FROM THE REWIND OVERLAY                                 
*                                                                               
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R7    DEVICE INDEX (DCT)                                      
*                 R8    WORD 0 OF DCB                                           
*                                                                               
*                                                                               
PFILDEV  RES      0                                                             
         DO       #MTAPE                                                        
         BAL,R15  MTTYPE            IS DEVICE A MAGNETIC TAPE                   
         B        REWDX1            NO                                          
*                                   YES                                         
         LW,R6    1,R3              FPT WORD1              /SIG7-2064/*C5732 C01
         BAL,R4   SETBUSY           SET DCB/FPT BUSY                            
         LI,R12   0                                        /SIG7-2064/*C5732 C01
         SLS,R6   -4                SHIFT SKIP/DIR BITS    /SIG7-2064/*C5732 C01
         AND,R6   M2                MASK FOR INDEX TO      /SIG7-2064/*C5732 C01
         LB,R4    FUNCCODE,R6       APPROPRIATE FUNC. CODE /SIG7-2064/*C5732 C01
         LD,R10   ZEROS             BUFF ADD. AND BYTES=0                       
         LB,R5    TCBPOINT          TASK ID                                     
         LW,R5    STIPRIO,R5                                                    
         LB,R13   R5                PRIORITY                                    
         B        REWDX2            GETNRT                                      
FUNCCODE DATA,1   FCFSFMTS          SPACE FILE, BACKSPACE REC                   
         DATA,1   FCBSFMTS          BACKSPACE FILE, SPACE REC                   
         DATA,1   FCFSFMT           SPACE FILE                                  
         DATA,1   FCBSFMT           BACKSPACE FILE                              
*                                                                               
*                                                                               
*        THIS ROUTINE DETERMINES  IF THIS IS TYPE1 OR TYPE2 AND                 
*        SETS THE APPROPRIATE DCB OR FPT BUSY BIT IF NOT ALREADY SET            
*                                                                               
SETBUSY  RES      0                                                             
         LW,R15   0,R3              FPT WORD 0                                  
         CW,R15   Y008              IS L BIT SET                                
         BAZ      0,R4              NO, EXIT                                    
         PUSH     R4                SAVE LINK                                   
         LI,R15   KA                YES                                         
         BAL,R5   GETFPTN                                  /SIG7-2064/*C5732 C01
         B        SETBUSY1          TYPE I I/O                                  
         BAL,R4   FPTBSY            CHECK FPT BUSY                              
         PULL     R4                RESTORE LINK                                
         B        0,R4              RETURN                                      
SETBUSY1 RES      0                                                             
         BAL,R4   DCBBUSY           SET DCB BUSY                                
         B        SETBUSY2          ERROR, ALREADY BUSY                         
         PULL     R4                RESTORE LINK                                
         B        0,R4              RETURN                                      
SETBUSY2 PULL     R4                                                            
         LI,R9    K48               DCB ALREADY BUSY                            
         B        REWDX3            TAKE DCBERR EXIT                            
         ELSE                                                                   
         B        REWDX1            CALEXIT                                     
         FIN                                                                    
         TITLE    'MAGNETIC TAPE TYPE TEST'                                     
         DO       #MTAPE                                                        
*****************                                                               
*   MTTYPE      *                                                               
*****************                                                               
*                                                                               
*        THIS CHECKS FOR A MAGNETIC TAPE DEVICE TYPE                            
*                                                                               
*        AT  ENTRY:   R15 = LINK                                                
*                     R7  = DCT INDEX                                           
*                                                                               
*        AT  EXIT:    R4  = DEVICE TYPE (DCT4)                                  
*                     OTHER REGISTERS UNCHANGED                                 
*                                                                               
*        EXIT IF NOT A MAGNETIC TAPE TYPE                                       
*        SKIP EXIT IF IT IS A MAGNETIC TAPE TYPE                                
*                                                                               
MTTYPE   RES      0                                                             
         LB,R4    DCT4,R7           GET DEVICE TYPE                             
*                                                                               
         DO       #33TAPE                                                       
         CI,R4    16                IS IT A 33 TAPE                             
         BE       MTTYPEOK          YES                                         
         FIN                                                                    
*                                   NO                                          
         DO       #7TTAPE                                                       
         CI,R4    9                 IS IT A 7T                                  
         BE       MTTYPEOK          YES                                         
         FIN      #7TTAPE                                                       
*                                   NO                                          
         DO       #9TTAPE                                                       
         CI,R4    8                 IS IT A 9T                                  
         BE       MTTYPEOK          YES                                         
         FIN      #9TTAPE                                                       
*                                   NO                                          
         BNE     MTTYPEX1           NO, EXIT                                    
*                                   YES,                                        
MTTYPEOK AI,R15   1                 SKIP                                        
MTTYPEX1 B       *R15               EXIT                                        
         FIN      #MTAPE                                                        
         OLAYEND                                                                
         END                                                                    
