         SYSTEM   SIG9P                                                         
         SYSTEM   OPTIONS                                                       
*                                                                               
*                                                                               
*                                                                               
         DEF      A:READWR,DCBBUSY,FPTBSY,OPEN,CLOSE                            
         DEF      OPENDCB,CLOSEDCB                                              
*                                                                               
*                                                                               
*    EXIT POINTS                                                                
         DEF      RWX0,RWX1,RWX2,RWX3,RWX4,RWX5                                 
         DEF      RWX6,RWX7,RWX9,RWX10,RWX11,RWX12                              
         DEF      RWX13,RWX23,RWX24,RWX25,FPTBSYX                               
         DEF      RWX26                                                         
         PSYS     0                                                             
OLAYFLAG EQU      'READ'                                                        
         SYSTEM   CPRMON                                                        
         PAGE                                                                   
         SPACE    2                                                             
RWX0     B        POST07                                                        
RWX4     B        POST01                                                        
RWX5     B        RWDEV                                                         
RWX9     B        ERROR54                                                       
RWX11    B        CLOSEX                                                        
RWX13    B        OPENX                                                         
RWX23    B        ERROR4A                                                       
RWX25    B        RWFILE                                                        
RWX26    B        POST06            EOD TYC                                     
         TITLE    'READ AND WRITE'                                              
****************                                                         0653000
*   READWRIT   *                                                         0654000
****************                                                         0655000
*                                                                        0656000
*   ROUTINE RECEIVES ALL READ AND WRITE REQUESTS                         0657000
*   ENTRY IS FROM THE CAL1 PROCESSOR                                     0658000
*                                                                        0659000
*   AT ENTRY:   FPT ADDRESS IN R0                                        0660000
*               USER PSD ON TOP OF USER TEMP STACK                       0661000
*   ROUTINE EXITS THROUGH CALEXIT FOR NORMAL                             0663000
*                                                                        0664000
*                                                                        0665000
READWRIT RES      0                 FPT ADDRESS IN R3                           
A:READWR EQU      READWRIT                                                      
         BAL,R4   GETDCBAD          GET DCB ADDRESS IN R2                0666500
         BAL,R4   OPENDCB           OPEN DCB IF CLOSED                   0668000
RWX1     B        DCBERR            ERROR IN OPEN                               
         LW,R9    R1                FPT CODE                             0669000
         LI,R15   KA                N = -0                                      
         BAL,R5   GETFPTN           GET STATUS ADDRESS PARAMETER                
         B        %0001              B IF NOT REAL TIME                         
         BAL,R4   FPTBSY            TEST FPT BUSY                               
         B        %0003                                                         
%0001    EQU      %                                                             
         BAL,R4   DCBBUSY           DCB BEING USED?        /SIG7-2064/*C5732 C01
RWX2     B        ERROR48           ERROR, DCB BUSY                             
%0003    BAL,R4   GETBUFSZ          GET BUFFER ADDR & SIZE IN R10,R11           
         BAL,R5   TESTBUF           TEST USER'S BUFFER ADDRESS                  
         B        RWX23             ERROR4A, BAD BUFFER ADDRESS                 
         LB,R7    TCBPOINT          STI INDEX                                   
         LW,R13   STIPRIO,R7                                                    
         LB,R13   R13               PRIORITY                                    
         LW,R7    1,R2              WORD 1 OF DCB TO R7                  0697000
         LW,R8    0,R2              WORD 0 OF DCB TO R8                  0698000
         CI,R8    K1                IS DCB ASSIGNED TO NULL (ASN=0)             
         BAZ      %0005             YES, BRANCH                                 
         CI,R8    K2                TEST BIT 30                          0699000
         BAZ      %0009              B IF RAD FILE                              
         BAL,R4   GETDCTX           GET DCT INDEX IN R7                  0701000
RWX3     B        ERROR59           ERROR                                       
         CI,R7    0                 TEST FOR NULL ASSIGNMENT                    
         BNE      %0007             NOT NULL, BRANCH                            
%0005    RES      0                                                             
         CI,R1    K10               IS THIS A READ REQUEST                      
         BE       RWX26             YES, POST EOD TYC                           
         B        RWX4              WRITE, POST NORMAL TYC                      
*                                                                               
%0007    CI,R1    K10               TEST IF READ                                
         BNE      %0008                                                         
         LI,R4    C                 INDEX FOR C OPLB                            
         CB,R7    OPLBS3,R4         IS R7 THE BKGD C DEVICE/FILE INDEX          
         BE       CREAD             YES, BRANCH                                 
         DO       #SYMB                                                         
         CI,R7    K80               IS IT A FILE                                
         BAZ      %0008             B IF NOT A FILE                             
         LW,R4    R7                                                            
         AND,R4   M7                R4= RFT INDEX                               
         CW,R4    SM:C              IS THIS THE SYMBIONT C FILE                 
         BE       CREAD             YES, BRANCH                                 
         B        RWX25             NOT COOP, GO TO RWFILE                      
         FIN      #SYMB                                                         
%0008    CI,R7    X'80'                                                         
         BANZ     RWX25             B TO RWFILE IF RAD FILE                     
         B        RWX5              OTHERWISE GO TO RWDEV                       
* AT %0009 WE HAVE A RAD FILE.  WE WILL TEST IT TO SEE IF IT                    
*   IT IS THE FILE TO WHICH C IS ASSIGNED.                               0714410
%0009    AND,R7   M8                EXTRACT RFT INDEX                           
         OR,R7    X80               SET HI ORDER BIT OF BYTE3            0714430
         B        %0007             BRANCH TO TEST FOR C                 0714440
         PAGE                                                                   
***************                                                                 
*   DCBBUSY   *                                                                 
***************                                                                 
*                                                                               
*                                                                               
*        ROUTINE TO CHECK IF DCB IS BUSY AND EITHER SET IT BUSY OR              
*         ERROR.                                                                
*        IF THE DCB IS BUSY, THE ECB BEING USED FOR THE I/O REQUEST             
*         WILL BE LOCATED. IF THE ECB IS NOT BUSY, AN                           
*         IMPLICIT CHECK WILL BE DONE IN ORDER TO CLEANUP THE ECB.              
*         IF THE ECB IS STILL BUSY                                              
*         THE ROUTINE WILL TAKE THE ERROR EXIT                                  
*                                                                               
*        BAL,R4   DCBBUSY                                                       
*                                                                               
*        AT ENTRY:  R2   DCB ADDRESS                                            
*                   R3   FPT ADDRESS                                            
*                   R4   LINK                                                   
*                                                                               
*        RETURNS +2 IF DCB IS NOT BUSY                                          
*        RETURNS +1 IF DCB IS BUSY                                              
*                                                                               
*        REGISTERS USED:   R0,R5,R10,R11,R14,R15                                
*                                                                               
*                                                                               
DCBBUSY  LI,R14   K1000                                    /SIG7-2064/*C5732 C01
         DISABLE                                           /SIG7-2064/*C5732 C01
         CW,R14   0,R2              TEST BUSY BIT IN DCB                        
         BAZ      DCBBUSY1          B IF NOT BUSY          /SIG7-2064/*C5732 C01
         DO       #ECB                                                          
         ENABLE                                            /SIG7-2064/*C5732 C01
         LW,R5    1,R3              GET FPT WORD 1                              
         CI,R5    K100              IS DELETE-ON-POST REQUESTED                 
         BANZ     RWX6              YES, DON'T SET DCB BUSY                     
         LW,R10   R2                DCB ADDRESS TO R10                          
         LW,R11   M24               MASK FOR SELECTIVE COMPARE                  
         LB,R5    TCBPOINT          STI INDEX                                   
         DISABLE                                                                
         LB,R5    STILMID,R5        LMI INDEX                                   
         LW,R5    LMISECB,R5        R5= 1ST ECB IN S-CHAIN                      
DCBBUSY2 CW,R5    M24                                                           
         BAZ      DCBBUSY4          B IF END OF CHAIN (NO MATCH)                
         CS,R10   ECBFPT,R5         DID WE FIND A MATCH                         
         BE       DCBBUSY3          YES, BRANCH                                 
         LW,R5    ECBSECB,R5        NO, GET NEXT ECB IN THE CHAIN               
         B        DCBBUSY2                                                      
*   HERE WE HAVE A MATCH. SEE IF THE ECB IS BUSY                                
DCBBUSY3 LW,R0    ECBFPT,R5         GET WORD 1 OF THE ECB                       
         CW,R0    XECBBUSY          IS BUSY BIT SET                             
         BANZ     DCBBUSY5          YES, ERROR                                  
         CW,R0    XECBDP            NO, IS IT DELETE-ON-POST                    
         BANZ     DCBBUSY5          YES, ERROR                                  
         ENABLE                                                                 
*   HERE THE ECB IS NOT BUSY, DO AN IMPLICIT CHECK                              
         LW,R15   6,R5              R6= COMPLETION STATUS                       
         LB,R15   R15               R15= TYC                                    
         PUSH     9,R1              SAVE R1-R9                                  
         LW,R1    R2                DCB ADDR. TO R1                             
         LW,R2    R5                ECB ID TO R2                                
         LB,R4    TCBPOINT          R4= TASK ID                                 
         BAL,R8   FMCK3             CALL CHECK ROUTINE                          
         NOP                                                                    
         PULL     9,R1                                                          
         LI,R14   K1000             GET READY TO SET BUSY BIT                   
         ELSE     #ECB                                                          
         B        DCBBUSY5                                                      
         FIN      #ECB                                                          
DCBBUSY1 AWM,R14  0,R2              SET DCB BUSY                                
DCBBUSY4 RES      0                                                             
         ENABLE                                            /SIG7-2064/*C5732 C01
RWX6     B        1,R4              RETURN +2 (NORMAL)                          
*                                                                               
DCBBUSY5 ENABLE                                                                 
RWX7     B        0,R4              TAKE ERROR EXIT (+1)                        
         PAGE                                                                   
***************                                                                 
*   FPTBSY    *                                                                 
***************                                                                 
*                                                                               
*   ROUTINE TO CHECK IF FPT IS BUSY (TYPE II I/O) AND EITHER                    
*   SET IT BUSY OR WAIT FOR THE PREVIOUS REQUEST TO COMPLETE.                   
*                                                                               
*        BAL,R4   FPTBSY                                                        
*        AT ENTRY:   R1   FPT CODE                                              
*                    R2   DCB ADDRESS                                           
*                    R3   FPT ADDRESS                                           
*                    R4   LINK                                                  
*                    R14  COMPLETION STATUS WORD ADDRESS                        
*                                                                               
*   ROUTINE RETURNS +1                                                          
FPTBSY   RES      0                                                             
         LW,R15   Y008                                                          
         DO       #ECB                                                          
         CW,R15   *R14              IS FPT BUSY                                 
         BANZ     FPTBSY1           YES, BRANCH                                 
FPTBSY0  RES      0                                                             
         FIN      #ECB                                                          
         STW,R15  *R14              NO, SET BUSY BIT                            
FPTBSYX  B        0,R4              EXIT                                        
*   HERE THE FPT IS BUSY:  IF THE REQUEST IS NOT A DELTE-ON-POST                
*   REQUEST, THE I/O WILL BE CHECKED WITH WAIT                                  
         DO       #ECB                                                          
FPTBSY1  RES      0                                                             
         LW,R8    1,R3              FPT WORD 1                                  
         CLM,R1   DATA1C1D          IS THIS A PFIL/PREC                         
         BCR,9    FPTBSY6           B IF YES                                    
         CI,R8    K10               NO, IS WAIT REQUESTED                       
FPTBSY1A BANZ     FPTBSYX           B IF WAIT SPECIFIED                         
         CI,R8    K100              NO, TEST F8 (DELETE-ON-POST)                
         BANZ     FPTBSYX           F8 IS SET, DON'T CALL CHECK                 
*   HERE WE KNOW THE ECB WILL NOT BE DELETED AT ECB POST TIME.  THE             
*   S-ECB CHAIN WILL BE SEARCHED AND IF A MATCH IS FOUND,                       
*   THE REQUEST WILL BE CHECKED WITH WAIT.                                      
         LW,R10   R3                R10= FPT ADDRESS                            
         LW,R11   M17               MASK FOR COMPARE                            
         LB,R5    TCBPOINT          TASK ID                                     
         DISABLE                                                                
         LB,R5    STILMID,R5        R5= LM ID                                   
         LW,R5    LMISECB,R5        R5= 1ST ECB IN CHAIN                        
FPTBSY3  CW,R5    M17                                                           
         BAZ      FPTBSY5           B IF END OF CHAIN                           
         CS,R10   ECBFPT,R5         DID WE FIND A MATCH                         
         BE       FPTBSY4           YES, BRACNH                                 
         LW,R5    ECBSECB,R5        NO, GET NEXT IN CHAIN                       
         B        FPTBSY3                                                       
*   HERE WE HAVE FOUND A MATCH.                                                 
*   R5= ECB I.D.                                                                
FPTBSY4  RES      0                                                             
         LW,R0    ECBFPT,R5         R0= ECB WORD 1                              
         CW,R0    Y04               IS ECB IN A CHECKABLE STATE (CHK=0)         
         BANZ     FPTBSY5           NO, EXIT                                    
         OR,R0    Y04               YES, SET CHK                                
         STW,R0   ECBFPT,R5         STORE BACK INTO ECB WORD 1                  
         ENABLE                                                                 
         PUSH     7,R14             SAVE R14-R4                                 
         LB,R4    TCBPOINT          R4= TASK ID                                 
         LW,R7    R5                R7= ECB ID                                  
         BAL,R8   FMCK1             CHECK THE REQUEST                           
         NOP                                                                    
         PULL     7,R14                                                         
         B        FPTBSY0           EXIT                                        
*                                                                               
*                                                                               
FPTBSY5  ENABLE                                                                 
         B        FPTBSYX                                                       
*                                                                               
*                                                                               
FPTBSY6  RES      0                                                             
         LW,R0    0,R3              PFIL/PREC FPT WORD 0                        
         CW,R0    Y008              IS P0 (L) BIT SET                           
         BAZ      FPTBSYX           NO, THIS IS A WAIT REQUEST                  
         CI,R8    K8                YES, TEST WAIT BIT IN WORD 1 OF FPT         
         B        FPTBSY1A                                                      
         FIN      #ECB                                                          
         PAGE                                                            0729095
*************                                                            0729100
*   CREAD   *                                                            0729105
*************                                                            0729110
*                                                                        0729115
*   THIS ROUTINE CONTROLS READING OF THE C DEVICE                        0729120
*                                                                        0729145
*                                                                        0729150
*   ENTRY TO CREAD IS FROM READWRIT                                      0729155
*   AT ENTRY:  R1     FPT CODE                                           0729160
*              R2     USER DCB ADDRESS                                   0729165
*              R3     USER FPT ADDRESS                                   0729170
*              R7     DEV/FILE INDEX AS IN OP LABEL TABLE                0729175
*              R8     WORD 0 OF DCB                                             
*              R10    USER BUFFER ADDRESS                                0729180
*              R11    USER BYTE COUNT                                    0729185
*              R13    PRIORITY                                           0729190
*                                                                        0729195
*                                                                        0729200
CREAD    RES      0                                                             
         LW,R9    1,R3              FPT WORD 1                                  
         CI,R9    F1                IS CALLER A DIAGNOSTIC                      
         BANZ     %0008             YES, NOT A REAL CREAD SO DON'T              
*                                     CHANGE MODE BIT IN DCB.                   
         BIFFGD   %0008             CAN'T BE CREAD IF FGD, SO EXIT              
         DO       #SYMB                                                         
         CI,R7    K80               RAD FILE                                    
         BANZ     CREAD1            YES, BRANCH                                 
         LB,R9    DCTSYM1,R7        GET SYMBIONT FLAGS                          
         CI,R9    DCTSYMSM          IS IT A SYMBIONT DEDICATED DEV.             
         BANZ     %0008             YES, THIS IS NOT A REAL CREAD               
CREAD1   RES      0                                                             
         FIN      #SYMB                                                         
         DO       #7TTAPE                                                       
         LI,R4    C                                                             
         LB,R4    OPLBS3,R4         GET C DEVICE ASSIGNMENT                     
         CI,R4    X'80'             IS IT A RAD FILE                            
         BANZ     CREAD3            YES, BRANCH                                 
         LB,R4    DCT4,R4           NO, GET DEVICE TYPE                         
         CI,R4    9                 IS IT A 7T TAPE                             
         BE       CREAD5            YES, DON'T RESET MODE IN DCB                
         FIN      #7TTAPE                                                       
CREAD3   RES      0                                                             
         LW,R9    0,R2              DCB WORD 0                                  
         AND,R9   FFFDFFFF          RESET MODE (BCD)                            
         STW,R9   0,R2              STORE BACK                                  
CREAD5   RES      0                                                             
         LCF      K:JCP1                                                        
         BCS,8    CREADJCP          B IF JCP                                    
         MTW,0    CFLAG                                                         
         BEZ      CREAD7            SET DCB INDICATOR                           
         BLZ      RWX9                                                          
         MTW,-2   CFLAG                                                         
         B        RWX0              POST TYC = 07 (EOF)                         
*                                                                               
CREAD7   RES      0                                                             
         OR,R2    Y8                SET R2 BIT 0                                
         B        %0008                                                         
CREADJCP LW,R9    CFLAG                                                         
         BEZ      %0008             B IF CC NOT IN SYSTEM BUFFER                
         LI,R6    BA(CCBUF)         FROM ADDRESS                                
         LW,R4    R10               TO ADDRESS                                  
         LI,R14   80                                                            
         BAL,R9   MOVEBYTS          MOVE COMMAND                                
         LI,R4    0                                                             
         STW,R4   CFLAG             RESET CFLAG                                 
         B        RWX4              POST NORMAL COMPLETION STATUS               
         PAGE                                                            0808000
************                                                             0809000
*   OPEN   *                                                             0810000
************                                                             0811000
*                                                                        0812000
*   ROUTINE RECEIVES ALL OPEN REQUESTS (EXPLICIT)                        0813000
*   ENTRY IS FROM CAL1 PROCESSOR                                         0814000
*                                                                        0815000
*   AT ENTRY:     R1    FPT CODE                                                
*                 R3    FPT ADDRESS                                             
*                                                                        0819000
*                                                                        0820000
OPEN     RES      0                 R3= FPT CODE                                
         BAL,R4   GETDCBAD          DCB ADDRESS TO R2,CODE TO R1         0821500
*   VERIFY THAT THE DCB IS WRITEABLE                                            
         LW,R9    R2                R9=DCB FWA                                  
         LB,R10   *R2               GET DCB LENGTH                              
         AW,R10   R9                                                            
         AI,R10   -1                R10=DCB LWA                                 
         LI,R11   0                 REQUIRE ACCESS='WRITEABLE'                  
         BAL,R8   TMCKADP           VERIFY DCB                                  
         B        OPEN4             ERROR                                       
         LI,R15   K1                N = 1                                0823000
         BAL,R5   GETFPTN           GET ERROR ADDRESS FROM FPT IN R14    0824000
         B        OPEN2             NOT PRESENT,TRY ABNORMAL                    
         LW,R14   R15               ERROR ADR TO R14                     0826000
         LI,R15   K1FFFF            ADDRESS MASK TO R15                  0827000
         STS,R14  3,R2              SET ERROR ADDRESS IN DCB WORD 3      0828000
OPEN2    RES      0                                                             
         LI,R15   K2                GET P2 PARAMETER                            
         BAL,R5   GETFPTN           GET ABNORMAL ADDRESS FROM FPT IN R14 0830000
         B        %+2               NOT PRESENT, BRANCH                         
         STW,R15  4,R2              SET ABNORMAL ADDRESS IN DCB WORD 4   0832000
         LI,R15   4                                                             
         BAL,R5   GETPI             GET RSIZE PARAMETER                         
         B        OPEN3             B IF RSIZE NOT SPECIFIED                    
*        LW,R14   R14                                                           
         LW,R14   R15               R14 = RSIZE                                 
         SLS,R14  17                POSITION RSIZE FOR DCB                      
         LW,R15   YFFFE                                                         
         STS,R14  3,R2              INSERT RSIZE IN DCB                         
OPEN3    RES      0                                                             
         BAL,R4   OPENDCB                                                0833000
         B        RWX1              ERROR, R9= ERROR CODE                       
RWX10    B        CALEXIT                                                       
*                                                                               
*                                                                               
*                                                                               
OPEN4    RES      0                                                             
         LI,R15   TYC8B             BAD DCB ADDRESS                             
         BAL,R8   TMSETERR          SET REGS AND RETURN ADDR                    
RWX24    B        CALSTDX           EXIT                                        
         PAGE                                                            0835000
*************                                                            0836000
*   CLOSE   *                                                            0837000
*************                                                            0838000
*                                                                        0839000
*   ROUTINE RECEIVES ALL CLOSE REQUESTS                                  0840000
*   ENTRY IS FROM THE CALI PROCESSOR                                     0841000
*   AT ENTRY:     R1    FPT CODE                                                
*                 R3    FPT ADDRESS                                             
*                                                                        0845000
*                                                                        0846000
CLOSE    RES      0                 R3= FPT CODE                                
         BAL,R4   GETDCBAD          DCB ADDRESS TO R2                           
         BAL,R5   CLOSEDCB          CLOSE THE DCB                        0849000
         B        RWX1              B DCBERR, R9= ERROR CODE                    
         B        RWX10             B CALEXIT                                   
         PAGE                                                            0851000
****************                                                         0852000
*   CLOSEDCB   *                                                         0853000
****************                                                         0854000
*                                                                        0855000
*   ROUTINE CLOSES A DCB                                                 0856000
*                                                                        0857000
*   AT ENTRY:     R2    DCB ADDRESS                                      0859000
*                 R3    FPT ADDRESS                                      0860000
*                 R5    LINK                                             0861000
*                                                                               
*   ROUTINE EXITS +2 NORMALLY, +1 IF ERROR(R9=ERROR CODE)                       
*                                                                               
*                                                                        0862000
CLOSEDCB RES      0                                                             
         LW,R8    0,R2              DCB WORD 0                                  
         CW,R8    Y002              IS DCB OPEN                                 
         BANZ     RWX11             YES, CLOSE IT                               
         LI,R9    X'A'              ERROR, DCB ALREADY CLOSED                   
RWX12    B        0,R5              RETURN +1 (ERROR)                           
         PAGE                                                            0907000
***************                                                          0908000
*   OPENDCB   *                                                          0909000
***************                                                          0910000
*                                                                        0911000
*   ROUTINE IS CALLED BY READ,WRITE, OR OPEN FUNCTIONS TO OPEN A DCB     0912000
*   ROUTINE OPENS DCB IF IT IS CLOSED                                    0913000
*   ROUTINE TESTS FOR ERRORS IN OPLB INDEX OR DCT INDEX                  0914000
*   ROUTINE SETS UP RFT WHEN DCB IS ASSIGNED TO A RAD FILE               0915000
*   ROUTINE SETS DCB TO PACK IF ASSIGNED TO 7T BIN THROUGH AN OP LABEL   0916000
*                                                                        0917000
*   AT ENTRY:  R3  FPT ADDRESS                                           0918000
*              R1  FPT CODE                                              0919000
*              R2  DCB ADDRESS                                           0920000
*              R4  LINK                                                  0921000
*                                                                        0922000
*   REGISTERS USED: R5,R7,R8,R9                                          0923000
*                                                                               
*   ROUTINE EXITS +2 NORMALLY, +1 IF ERROR(R9=ERROR CODE)                       
*                                                                               
*                                                                        0924000
*                                                                        0925000
OPENDCB  RES      0                                                             
         LW,R8    0,R2              DCB WORD 0                                  
         CW,R8    Y002              IS IT CLOSED                                
         BAZ      RWX13             YES, OPEN IT                                
         CI,R1    K14               NO, TEST FPT CODE                           
         BNE      RWX6              B IF CALL NOT FROM OPEN                     
         LW,R5    K:JCP1            IS JCP EXECUTING                            
         BLZ      RWX6              YES, NOT AN ERROR                           
         LI,R9    X'2E'             ERROR, DCB ALREADY OPEN                     
         B        RWX7              RETURN +1 (ERROR)                           
         PAGE                                                            1778000
****************                                                         1779000
*   GETBUFSZ   *                                                         1780000
****************                                                         1781000
*                                                                        1782000
*                                                                        1783000
*    ROUTINE RETURNS THE USER BUFFER ADDRESS AND BYTE COUNT FOR          1784000
*       A READ OR WRITE CALL                                             1785000
*                                                                        1786000
*                                                                        1787000
*    AT ENTRY:   R1   FPT CODE                                           1788000
*                R2   DCB ADDRESS                                        1789000
*                R3   FPT ADDRESS                                        1790000
*                R4   LINK                                               1791000
*                                                                        1792000
*    AT EXIT:    R10  USER BUFFER ADDRESS (BYTE RESOLUTION)              1793000
*                R11  BYTE COUNT                                         1794000
*                                                                        1795000
*    REGISTERS USED: R14,R15,R5,R0  (R0 USED IN GETFPTN)                 1796000
*                                                                        1797000
*                                                                        1798000
GETBUFSZ LI,R15   K3                SET N=3                              1799000
         BAL,R5   GETFPTN           GET BUFFER ADDR (P3 PARAMETER)       1800000
         B        %0301             NOT PRESENT IN FPT, BRANCH           1801000
         BAL,R0   GETEFADR                                                      
%0302    LI,R10   K1FFFF            ADDRESS MASK                         1802000
         AND,R10  R15               BUFFER ADDRESS TO R10                1803000
         SLS,R10  2                 BECOMES BYTE ADDRESS                 1804000
         LI,R15   K6                SET N=6                              1805000
         BAL,R5   GETFPTN           GET BTD FROM FPT                     1806000
         B        %0303             NOT PRESENT IN FPT, BRANCH           1807000
         BAL,R0   GETEFADR                                                      
%0304    AND,R15  M2                EXTRACT BTD                                 
         OR,R10   R15               MERGE INTO BUFFER ADDRESS            1809000
         LI,R15   K4                SET N=4                              1810000
         BAL,R5   GETFPTN           GET BYTE COUNT FROM FPT              1811000
         B        %0305             NOT PRESENT IN FPT, BRANCH           1812000
         BAL,R0   GETEFADR                                                      
%0306    LI,R11   K1FFFF            MASK FOR BYTE COUNT                         
         AND,R11  R15               EXTRACT BYTE COUNT                   1814000
         BEZ      RWX23             ERROR 4A                                    
         B        0,R4              RETURN                                      
*                                                                        1816000
%0301    LW,R15   2,R2              WORD 2 OF DCB TO R15 (INCLUDES--     1817000
         B        %0302                     --BUFFER ADDRESS)            1818000
*                                                                        1819000
%0303    LW,R15   0,R2              WORD 0 OF DCB TO R15                 1820000
         SLS,R15  -4                RT JUSTIFY BTD                       1821000
         B        %0304                                                  1822000
*                                                                        1823000
%0305    LW,R15   3,R2              WORD 3 OF DCB TO R15                 1824000
         SLS,R15  -17               RT JUSTIFY RECORD SIZE               1825000
         B        %0306                                                  1826000
         OLAYEND                                                                
         END                                                                    
