         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
         DEF      RWDEV                                                         
*   EXIT POINTS                                                                 
         DEF      RWDEVX0,RWDEVX1,RWDEVX2                                       
         DEF      RWDEVX3,RWDEVX4,RWDEVX5                                       
         DO1      #SIDEBUF                                                      
         DEF      RWDEVX7,RWDEVX8                                               
         PSYS     0                                                             
OLAYFLAG EQU      'RWDE'                                                        
         SYSTEM   CPRMON                                                        
         TITLE    '** RWDEV - READ/WRITE DEVICE **'                             
*************                                                                   
*   RWDEV   *                                                                   
*************                                                                   
*                                                                               
*   ENTRY IS FROM READWRIT                                                      
*                                                                               
*   AT ENTRY:     R1    FPT CODE                                                
*                 R2    DCB ADDRESS                                             
*                 R3    FPT ADDRESS                                             
*                 R7    DCT INDEX                                               
*                 R10   BUFFER ADDRESS                                          
*                 R11   BUFFER SIZE (BYTE COUNT)                                
*                 R13   PRIORITY                                                
*                                                                               
RWDEV    RES      0                                                             
         LB,R6    DCT4,R7           TYPE TO R6                                  
         LB,R15   *R3               FUNCTION CODE TO R3                         
         AI,R15   KNF               MAKE 1 FOR READ, 2 FOR WRITE         0709000
         LW,R12   RWBTAB,R6         GET B TABLE ENTRY FOR DEVICE TYPE    0710000
         CB,R15   R12               TYPE OF CALL OK?                     0711000
         BAZ      ERROR404                                                      
         LW,R0    0,R2              WORD 0 OF DCB TO R0                  0713000
         B        *R12              B TO DEVICE ROUTINE                  0714000
         PAGE                                                                   
*                                                                               
*                                                                               
*  RWBTAB IS THE TABLE WHICH IS USED TO B TO THE PROPER DEVICE ROUTINE          
*     BYTE 0 OF EACH ENTRY HAS THE ALLOWABLE FUNCTION CODE--1 FOR               
*          READ, 2 FOR WRITE, 3 FOR BOTH                                        
*        BYTES 1/2/3 COTAIN THE ADDRESS OF THE DEVICE I/O SETUP                 
*        ROUTINE                                                                
*                                                                               
* RWBTAB IS INDEXED BY DCT4 TYPE NUMBER                                         
*                                                                               
*                                                                               
RWBTAB   EQU      %-1                                                           
         GEN,8,24 3,RWKP            1  KEYBOARD PRINTER                         
         GEN,8,24 1,RPR             2  PAPER TAPE READER                        
         GEN,8,24 2,WPP             3  PAPER TAPE PUNCH                         
         GEN,8,24 1,RCR             4  CARD READER                              
         GEN,8,24 2,WCP             5  CARD PUNCH                               
         GEN,8,24 2,WLP             6  LINE PRINTER                             
         GEN,8,24 3,RWDP            7  FIXED HEAD DISC                          
         GEN,8,24 3,RW9T            8  9 TRACK TAPE                             
         GEN,8,24 3,RW7T            9  7 TRACK TAPE                             
         GEN,8,24 2,WCP             10 RESERVED                                 
         GEN,8,24 2,WLP             11 RESERVED                                 
         GEN,8,24 3,RWDP            12 DISC PACK                                
         GEN,8,24 2,WPL             13 PLOTTET                                  
         GEN,8,24 3,RWDP            14 DISC PACK                                
         GEN,8,24 2,WLP             15 RESERVED                                 
         GEN,8,24 3,RW9T            16 33XX 9 TRACK TAPE                        
         GEN,8,24 3,RWRB            17 RB DEVICES                               
         GEN,8,24 3,RWSPECIAL       18 SPECIAL HANDLER I/O                      
         GEN,8,24 3,RWLD            19 LOGICAL DEVICES                          
         PAGE                                                                   
         SPACE    2                                                             
REWERXIT RES      0         EXIT FOR ERROR IN CVT FILE, -DISC, -ETC             
         LW,R12   R15               COPY ERROR CODE                             
RWDEVX0  B        POST              POST ERROR                                  
*                                                                               
*                                                                               
ERROR404 CI,R1    K10               TEST IF READ                                
         BNE      RWDEVX2           NOT READ                                    
RWDEVX1  B        ERROR40           YES, ERROR 40                               
RWDEVX2  B        ERROR44           NO,  ERROR 44                               
RWDEVX3  B        GETNRT                                                        
RWDEVX4  B        POST05                                                        
RWDEVX5  B        POST10                                                        
         DO       #SIDEBUF                                                      
RWDEVX7  B        OUTSDBUF                                                      
RWDEVX8  B        INSDBUF                                                       
         ELSE                       #SIDEBUF                                    
RWDEVX7  EQU      RWDEVX3                                                       
RWDEVX8  EQU      RWDEVX3                                                       
         FIN                        #SIDEBUF                                    
         TITLE    '** RWDEV - DEVICE ROUTINES **'                               
***********************                                                  1611000
*   DEVICE ROUTINES   *                                                  1612000
***********************                                                  1613000
*                                                                        1614000
*                                                                        1615000
*   THESE ROUTINES FORMAT THE I/O DATA AND BUILD THE CALL TO QUEUE       1616000
*                                                                        1617000
*                                                                        1618000
*   AT ENTRY:  R0     WORD 0 OF-DCB                                      1619000
*              R1     FPT CODE X'11' FOR WRITE, X'10' FOR READ           1620000
*              R2     DCB ADDRESS                                        1621000
*              R3     FPT ADDRESS                                        1622000
*              R6     DEVICE TYPE CODE                                   1623000
*              R7     DCT INDEX                                          1624000
*              R13    PRIORITY                                           1625000
*              R15    TYPE OF CALL CODE, 1 FOR READ, 2 FOR WRITE         1626000
*              R10    BYTE ADDRESS OF START OF USERS BUFFER.             1627000
*              R11    BYTE COUNT                                         1628000
*              R8     WORD 1 OF END ACTION INFO                          1629000
*                                                                        1630000
         PAGE                                                                   
*  READ-WRITE KEYBOARD PRINTER                                           1631000
RWKP     RES      0                                                             
         CI,R11   0                 IS SIZE ZERO                                
         BNE      %+2               NO                                          
         LI,R11   TYSIZE            YES                                         
         CI,R11   TYSIZE            IS RECORD SIZE TOO LARGE                    
         BLE      %+2               NO                                          
         LI,R11   TYSIZE            YES, LOAD WITH MAX                          
         CI,R1    K10               IS THIS A READ CALL                         
         BE       RKP               YES, BRANCH                                 
*   WRITE KEYBOARD-PRINTER                                                      
WKP      RES      0                                                             
         LI,R4    FCWKP                                                         
         CI,R0    BIT21             IS IT TRANSPARENT MODE                      
         BAZ      WKP6              NO                                          
         DO       #LN                                                           
         CH,R7    DCT1              LNXXX                                       
         BLE      RWDEVX7           NO                                          
         CI,R0    BIT14             BIN                                         
         BAZ      RWDEVX7           NO                                          
         LI,R4    FCWLN             COC TRANSPARENT WRITE                       
         B        RWDEVX7                                                       
         FIN      #LN                                                           
WKP6     RES      0                                                             
*                                   NO, TEST VFC                                
         CI,R0    K100              TEST VFC                                    
         BAZ      WKP5              NOT ON, BRANCH                              
         AI,R10   1                 INCREMENT BUFF ADDR                         
         AI,R11   -1                DECREMENT BYTE COUNT                        
         BEZ      WKP4              IF ZERO, OUTPUT NL                          
WKP5     RES      0                                                             
         LW,R4    R10               BUFFER ADDRESS (BYTE)                       
         AW,R4    R11               PLUS BYTE COUNT                             
         B        WKP3                                                          
WKP2     LB,R5    0,R4              GET BYTE                                    
         CI,R5    ' '               TEST FOR SPACE                              
         BNE      WKP1              NOT, BRANCH                                 
WKP3     AI,R4    -1                DECREMENT ADDRESS                           
         BDR,R11  WKP2              LOOP IF NEXT BYTE NOT LAST                  
WKP1     AI,R11   1                 ADJUST BYTE COUNT                           
         LI,R4    FCWKPWNL          FUNCTION CODE                               
         B        RWDEVX7                                                       
*                                                                               
WKP4     RES      0                 ZERO BUFFER SIZE                            
         LI,R11   1                                                             
         LI,R10   BA(BLANKS)                                                    
         LI,R4    FCWNL             OUTPUT NL ONLY                              
         B        RWDEVX7                                                       
         PAGE                                                                   
         DO       #9TTAPE                                                       
*  READ-WRITE 9 TRACK MAGNETIC TAPE                                      1641000
RW9T     RES      0                                                             
         CI,R1    K10               IS IT A READ CALL                           
         BE       R9T               YES, BRANCH                          1643000
*  WRITE 9 TRACK MAG TAPE                                                1644000
W9T      LI,R4    FCWMT                                                         
         DO       #33TAPE                                                       
         LI,R12   (BIT1+BIT4)**-24  DEFAULT = NRZI & EBCDIC                     
         CI,R0    BIT22             1600 BPI                                    
         BAZ      %+2               NO                                          
         AI,R12   BIT1**-24         CHANGE TO PE                                
         CI,R0    BIT20             ASCII                                       
         BAZ      %+2               NO                                          
         AI,R12   BIT4**-24         CHANGE TO ASCII                             
         SLS,R12  24                MOVE BYTE TO TOP OF R12                     
         FIN      #33TAPE                                                       
         B        RWDEVX3                                                       
*                                                                        1647000
         FIN      #9TTAPE                                                       
         PAGE                                                                   
         DO       #7TTAPE                                                       
*  READ-WRITE 7 TRACK MAGNETIC TAPE                                      1648000
RW7T     CI,R1    K10               READ CALL                            1649000
         BE       R7T               YES, BRANCH                          1650000
*  WRITE 7 TRACK MAGNETIC TAPE                                           1651000
W7T      CI,R0    K20000            TEST MODE BIT (BIT 14)               1652000
         BANZ     %+3               B IF BINARY                          1653000
         LI,R4    FCW7TDEC                                               1654000
         B        RWDEVX3                                                       
         CI,R0    K200              TEST PACK BIT--BIT 22                1656000
         BAZ      %+3               NOT PACKED, BRANCH                   1657000
         LI,R4    FCWMT                                                         
         B        RWDEVX3                                                       
         LI,R4    FCW7TBIN                                               1660000
         B        RWDEVX3                                                       
         FIN                                                                    
         PAGE                                                                   
         DO       #CPUNCH|#CPUNLC                                               
*  WRITE CARD PUNCH                                                      1663000
WCP      RES      0                                                             
         CI,R11   0                 IS IT 0 (64000)                             
         BNE      %+2               NO                                          
         LI,R11   CPSIZE            YES                                         
         CI,R0    K20000            TEST MODE BIT                               
         BAZ      WCPBCD            BCD                                         
*                                   BINARY                                      
         CI,R11   120               IS IT TOO BIG                               
         BLE      %+2               NO                                          
         LI,R11   120               YES, TRUNCATE                               
         LI,R4    FCWCPBIN                                               1666000
         B        RWDEVX7                                                       
*                                                                               
WCPBCD   RES      0                                                             
         CI,R11   80                IS IT TOO BIG                               
         BLE      %+2               NO                                          
         LI,R11   80                YES, TRUNCATE                               
         LI,R4    FCWCPBCD                                               1668000
         B        RWDEVX7                                                       
         FIN                                                                    
         PAGE                                                                   
*  WRITE LINE PRINTER                                                    1671000
WLP      RES      0                                                             
*                                                                               
*        TEST FOR BACKGROUND PAGE OUTPUT LIMIT                                  
*                                                                               
         DO       #XRBM                                                         
         BIFFGD   %E                                                            
         LI,R5    1                                                             
         MTH,0    K:BPGLIM,R5                                                   
         BEZ      %E                B IF NOT COUNTING                           
         CI,R0    K100                                                          
         BAZ      %C                B IF NO VFC (ONLY ONE LINE)                 
         LW,R4    R10                                                           
         LB,R4    0,R4              GET FIRST BYTE (VFC CODE)                   
         LH,R5    K:BPGLIM          NR OF REMAINING LINES IN PAGE               
         CI,R4    X'F0'                                                         
         BE       %C                B IF SPACE TO BOTTOM OF FORM                
         AI,R5    1                 REMAINING LINES PLUS ONE                    
         CI,R4    X'F1'                                                         
         BE       %C                B IF SPACE TO TOP OF FORM                   
         AND,R4   X7F                                                           
         LI,R5    0                                                             
         CI,R4    X'60'                                                         
         BE       %C                B IF INHIBIT SPACE                          
         LI,R5    1                 SPACE ONE PLUS. . .                         
         CI,R4    X'40'                                                         
         BL       %C                B IF NOT SPACE ADDITIONAL LINES             
         CI,R4    X'4F'                                                         
         BG       %C                B IF NOT SPACE ADDITIONAL LINES             
         AND,R4   XF                GET NR OF ADDITIONAL LINES                  
         AW,R5    R4                ADD ON                                      
         PAGE                                                                   
%C       LH,R4    K:BPGLIM                                                      
         SW,R4    R5                REMAINING LINES IN PAGE                     
         STH,R4   K:BPGLIM          SAVE                                        
         BGEZ     %E                B IF NOT NEW PAGE                           
         LI,R5    1                                                             
         MTH,-1   K:BPGLIM,R5       DECREMENT PAGE COUNT                        
         BLEZ     %D                B IF EXHAUSTED                              
         LCW,R5   R4                GET NR LINES INTO NEXT PAGE                 
         LB,R4    K:PAGE            GET NR LINES TOTAL FOR NEXT PAGE            
         STH,R4   K:BPGLIM          SET IT                                      
         B        %C                REPEAT ACCOUNTING FOR REMAINING LINES       
%D       LI,R5    -2                                                            
         STW,R5   K:ABTLOC          INDICATOR OF PAGE ABORT                     
         LW,R4    Y08                                                           
         LW,R5    R4                                                            
         AI,R5    4                                                             
         STS,R4   K:CTST            FLAGS TO RUN ABEX FOR BKG ABORT             
         PUSH     R11                                                           
         BAL,R11  CTRIG             FORCE REDISPATCH                            
         PULL     R11               WONT GET MUCH PAST HERE                     
%E       RES      0                                                             
         FIN      #XRBM                                                         
         PAGE                                                                   
*                                                                               
*                                                                               
         CI,R11   0                 IS IT 0 (64000)                             
         BNE      %+2               NO                                          
         LI,R11   LPSIZE            YES                                         
         CI,R0    K100              TEST VFC BIT                                
         BAZ      WLPNOVFC          NO VFC                                      
*                                   VFC                                         
         CI,R11   LPSIZE            TOO BIG                                     
         BLE      %+2               NO                                          
         LI,R11   LPSIZE            YES, TRUNCATE                               
         LI,R4    FCWLPF                                                 1674000
         B        RWDEVX7                                                       
*                                                                               
WLPNOVFC RES      0                                                             
         CI,R11   LPSIZE-1          TOO BIG                                     
         BLE      %+2               NO                                          
         LI,R11   LPSIZE-1          YES, TRUNCATE                               
         LI,R4    FCWLPWOF                                               1676000
         B        RWDEVX7                                                       
         PAGE                                                                   
*                                                                        1678000
*  READ KEYBOARD PRINTER                                                 1679000
*                                                                               
RKP      RES      0                                                             
         LI,R4    FCRKPWE           READ WITH EDITING FUNCTION                  
         LB,R5    TCBPOINT          GET TASK ID                                 
         DO1      #TJE                                                          
         LB,R12   STIJID,R5         PUT JID IN R12                              
         LB,R5    STIJID,R5         AND R5                                      
         LW,R15   SJI1,R5           GET JCB ADDR                                
         LI,R5    JCBPRMPT          DISPLACEMENT OF PROMPT BYTE                 
         LB,R5    *R15,R5           GET PROMPT BYTE                             
         STB,R5   R12               PUT IT IN TOP OF R12                        
*                                                                               
         PUSH     R0                                                            
         LI,R15   7                 CHECK FOR A PROMPT PARAMETER                
         BAL,R5   GETPI             PARAMETER MAY BE INDIRECTED                 
         B        %+2               NONE                                        
         STB,R15  R12               YES, PUT INTO R12                           
         PULL     R0                                                            
*                                                                               
         CI,R0    BIT21             TRANSPARENT MODE                            
         BAZ      RWDEVX3           NO, READ WITH EDITING                       
         DO       #LN                                                           
         CH,R7    DCT1              LNXXX                                       
         BLE      RKP1              NO                                          
         LI,R4    FCRLN             COC TRANSPARENT READ                        
         CI,R0    BIT14             BIN                                         
         BANZ     RWDEVX3           YES                                         
RKP1     RES      0                                                             
         FIN      #LN                                                           
         LI,R4    FCRKPWOE                                                      
         B        RWDEVX3                                                       
         PAGE                                                                   
         DO       #9TTAPE                                                       
*  READ 9 TRACK MAGNETIC TAPE                                            1683000
R9T      RES      0                                                             
         DO       #33TAPE                                                       
         LI,R12   BIT4**-24         DEFAULT EBCDIC                              
         CI,R0    BIT20             ASCII                                       
         BAZ      %+2               NO                                          
         AI,R12   BIT4**-24         YES, CONVERT TO ASCII MODE                  
         SLS,R12  24                AND MOVE MODE TO TOP BYTE                   
         FIN      #33TAPE                                                       
         LW,R5    1,R3              GET WORD 1 OF FPT                           
         CI,R5    K20               TEST DIRECTION (F1--BIT 26)          1685000
         BAZ      %+3               B IF FORWARD                         1686000
         LI,R4    FCRB9T                                                 1687000
         B        RWDEVX3                                                       
         LI,R4    FCRMT                                                         
         B        RWDEVX3                                                       
         FIN      #9TTAPE                                                       
         PAGE                                                                   
         DO       #7TTAPE                                                       
*                                                                        1691000
*  READ 7 TRACK MAGNETIC TAPE                                            1692000
*                                                                        1693000
R7T      RES      0                                                             
         LW,R5    1,R3              GET FPT WORD 1                              
         CI,R5    BIT26             IS IT A BACKWARD READ                       
         BANZ     R7TB              YES                                         
*                                                                               
         LI,R4    FCR7TDEC                                                      
         CI,R0    BIT14             BINARY                                      
         BAZ      RWDEVX3           YES                                         
*                                   NO                                          
         LI,R4    FCRMT                                                         
         CI,R0    BIT22             PACKED                                      
         BANZ     RWDEVX3           YES                                         
*                                   NO                                          
         LI,R4    FCR7TBIN          DECIMAL                                     
         B        RWDEVX3                                                       
****                                                                            
R7TB     RES      0                                                             
         LI,R4    FCRB7TB                                                       
         CI,R0    BIT14             BINARY                                      
         BAZ      RWDEVX3           YES                                         
*                                   NO                                          
         LI,R4    FCRB9T                                                        
         CI,R0    BIT22             PACKED                                      
         BANZ     RWDEVX3           YES                                         
*                                   NO                                          
         LI,R4    FCRB7TD           DECIMAL                                     
         B        RWDEVX3                                                       
         FIN                                                                    
         PAGE                                                                   
         DO       #CREAD                                                        
*  READ CARD READER                                                      1694000
RCR      RES      0                                                             
         CI,R11   CPSIZE            IS RECORD SIZE OK                           
         BLE      %+2               YES                                         
         LI,R11   CPSIZE            NO, LOAD WITH MAX                           
         CI,R0    K20000            TEST MODE BIT                               
         BAZ      %+3               B IF BCD                             1696000
         LI,R4    FCRCRBIN                                               1697000
         B        RWDEVX8                                                       
         LI,R4    FCRCRAUT                                               1699000
         B        RWDEVX8                                                       
         FIN                                                                    
         PAGE                                                                   
         DO       #PTAPE                                                        
*   WRITE PAPER TAPE                                                            
WPP      CI,R0    K20000            TEST MODE BIT                               
         BAZ      WPT4              B IF EBCDIC                                 
         LI,R4    FCWPTBIN                                                      
         LW,R5    1,R3                                                          
         CI,R5    4                                                             
         BAZ      RWDEVX3           B IF NOT DIRECT                             
         LI,R4    FCWPTDIR                                                      
         B        RWDEVX3                                                       
WPT4     LW,R4    R10               BUFFER ADDRESS (BYTE)                       
         AW,R4    R11               PLUS BYTE COUNT                             
         B        WPT1                                                          
WPT2     LB,R5    0,R4              GET BYTE                                    
         CI,R5    ' '               TEST FOR SPACE                              
         BNE      WPT3                                                          
WPT1     AI,R4    -1                DECREMENT ADDRESS                           
         BDR,R11  WPT2              LOOP IF NEXT BYTE NOT LAST                  
WPT3     AI,R11   1                 ADJUST BYTE COUNT                           
         LI,R4    FCWPTBCD                                                      
         B        RWDEVX3                                                       
         FIN      #PTAPE                                                        
         PAGE                                                                   
         DO       #PTAPE                                                        
*                                                                               
*   READ PAPER TAPE                                                             
RPR      CI,R0    K20000            TEST MODE BIT                               
         BAZ      RPR1                                                          
         LI,R4    FCRPTAUT                                                      
         LW,R5    1,R3              FPT WORD 1                                  
         CI,R5    4                                                             
         BAZ      RWDEVX3                                                       
         LI,R4    FCRPTDIR                                                      
         CI,R5    2                                                             
         BAZ      RWDEVX3           B IF NOT IMMEDIATE                          
         LI,R4    FCRPTIM                                                       
         B        RWDEVX3                                                       
RPR1     LI,R4    FCRPTAUT                                                      
         B        RWDEVX3                                                       
         FIN                                                                    
         PAGE                                                                   
*                                                                               
*        WRITE PLOTTER                                                          
*                                                                               
         DO       #PLOTTER                                                      
WPL      LI,R4    0                 LOAD FUNCTION CODE                          
         B        RWDEVX3                                                       
         FIN                                                                    
         PAGE                                                                   
*                                                                               
*****************************                                                   
*   READ/WRITE DISC PACKS   *                                                   
*****************************                                                   
*                                                                               
*                                                                               
*   AT ENTRY:                                                                   
*        R1       FPT CODE                                                      
*        R2       DCB ADDRESS                                                   
*        R3       FPT ADDRESS                                                   
*        R7       DCT INDEX                                                     
*                                                                               
*                                                                               
RWDP     RES      0         READ OR WRITE A DISC PACK AS A DEVICE               
         LI,R15   K8                GET KEY (SECTOR NUMBER)                     
         BAL,R5   GETPI             INDIRECTLY SO IF NECESSARY                  
         B        ERROR404          MUST BE GIVEN - ERROR IF ABSENT             
         LW,R4    R15               SAVE START SECTOR                           
         LB,R5    DCTDISCI,R7       SET DISC INDEX                              
         LW,R15   R11               GET NUMBER OF SECTORS REQUIRED FOR          
         BAL,R8   SECTPERB          THE GIVEN BYTE COUNT                        
         AW,R15   R4                NUMBER OF SECTORS + BEGIN SECTOR            
         AI,R15   -1                = LAST SECTOR TO READ/WRITE                 
         CW,R15   DISCMAXS,R5       IS IT TOO LARGE FOR THE DISC ?              
         BG       RWDEVX4             YES, GIVE EOT ERROR                       
*                                                                               
         LW,R14   R4                SET SECTOR TO ACCESS                        
         BAL,R5   CVTDISC           GET SEEK ADDRESS OF IT IN R12               
         B        REWERXIT            ERROR OF SOME SORT: REPORT                
         LB,R5    TCBPOINT                                                      
         LW,R13   STIPRIO,R5                                                    
         LB,R13   R13               PRIORITY                                    
         PAGE                                                                   
*                                                                               
*                                                                               
*                                                                               
         LW,R5    1,R3              FPT WORD 1                                  
         CI,R1    K10               IS THIS A READ                              
         BE       RDDP              YES, BRANCH                                 
*   WRITE DISKPAK                                                               
WDP      RES      0                                                             
         BIFFGD   WDP1              ALLOW WRITE IF CALLER FGD                   
         LI,R4    JCBSY                                                         
         CW,R4    JCBBKG                                                        
         BAZ      RWDEVX5           B IF BKG AND NO SY                          
WDP1     RES      0                                                             
         LI,R4    FCWRAD            FUNCTION CODE                               
         CI,R5    K8                CHECK-WRITE REQUESTED                       
         BAZ      RWDEVX3           NO                                          
         LI,R4    FCWCWRAD          YES, SUBSTITUTE CODE                        
         B        RWDEVX3                                                       
         PAGE                                                                   
*                                                                               
*                                                                               
*                                                                               
*   READ DISKPAK                                                                
RDDP     LI,R4    FCRRAD            FUNCION CODE                                
         CI,R5    K8                CHECK-WRITE REQUESTED                       
         BAZ      RWDEVX3           NO                                          
         LI,R4    FCRCWRAD          YES, READ,CHECK-WRITE                       
         B        RWDEVX3                                                       
         PAGE                                                                   
*                                                                               
* SPECIAL READ/WRITE I/O HANDLER FOR USER HANDLERS                              
*                                                                               
RWSPECIAL RES     0                                                             
         LI,R15   16                P16 = IOQ12 VALUE                           
         BAL,R5   GETPI             IS THERE A IOQ12 VALUE                      
         NOP      0                 NO, USE ZERO                                
         LW,R12   R15               GET IOQ12 VALUE                             
*                                                                               
         LW,R4    R1                DEFAULT FUNCTION                            
         AND,R4   M1                (READ = 0, WRITE = 1)                       
*                                                                               
         LI,R15   17                P17 = FUNCTION CODE                         
         BAL,R5   GETPI             IS THERE A SUPPLIED FUNCTION                
         B        RWDEVX3           NO, USE DEFAULT                             
*                                   YES, USE IT                                 
         LW,R4    R15                                                           
         B        RWDEVX3                                                       
         PAGE                                                                   
*                                                                               
* HANDLER FOR LOGICAL DEVICES                                                   
*                                                                               
RWLD     RES      0                                                             
         CI,R1    K10               IS THIS A READ CALL                         
         BE       READLD            YES                                         
*                                   NO                                          
         LI,R4    1                 WRITE FUNCTION                              
         B        RWDEVX3                                                       
********                                                                        
READLD   RES      0                                                             
         LI,R4    0                 READ FUNCTION                               
         B        RWDEVX3                                                       
         PAGE                                                                   
*                                                                               
* REMOTE BATCH I/O HANDLER                                                      
*                                                                               
         DO       #RB                                                           
RWRB     RES      0                                                             
         BAL,R14  IOINC             CRASH FOR NOW                               
         FIN      #RB                                                           
         PAGE                                                                   
*                                                                               
* WHAT TO DO IF NOT ASSEMBLED IN                                                
*                                                                               
         DO1      #PLOTTER=0                                                    
WPL      BAL,R14  IOINC                                                         
*                                                                               
         DO1      #PTAPE=0                                                      
WPP      BAL,R14  IOINC                                                         
         DO1      #PTAPE=0                                                      
RPR      BAL,R14  IOINC                                                         
*                                                                               
         DO1      #7TTAPE=0                                                     
RW7T     BAL,R14  IOINC                                                         
*                                                                               
         DO1      (#CPUNCH+#CPUNLC)=0                                           
WCP      BAL,R14  IOINC                                                         
*                                                                               
         DO1      #9TTAPE=0                                                     
RW9T     BAL,R14  IOINC                                                         
*                                                                               
         DO1      #RB=0                                                         
RWRB     BAL,R14  IOINC                                                         
*                                                                               
*                                                                               
         OLAYEND                                                                
         END                                                                    
