*COMDECK COMFRDW                                                         DECK2
          CTEXT  COMFRDW     READ WORDS TO WORKING BUFFER                DECK2
          QUAL   COMFRDW                                                 DECK2
          BASE   D                                                       DECK2
          SPACE  4                                                       DECK2
 COMFRDW  TITLE  RDW - READ WORDS TO WORKING BUFFER                      DECK2
**        RDW    READ WORDS FROM SEQUENTIAL FILE.                        DECK2
*                                                                        DECK2
*                                                                        DECK2
*         ENTRY  (X2) = PSEUDO-FET WORD 1.                               DECK2
*                (A2) = PSEUDO-FET ADDRESS.                              DECK2
*                (B1) = 1                                                DECK2
*                (B6) = WSA ADDRESS                                      DECK2
*                (B7) = WSA LENGTH (WORDS)                               DECK2
*                                                                        DECK2
*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.                         DECK2
*                (X1) = -1 IF EOP/EOI DETECTED ON FILE.                  DECK2
*                (X1) = (B6) IF EOS DETECTED ON FILE BEFORE TRANSFER     DECK2
*                            WAS COMPLETED.                              DECK2
*                (X2) = ADDRESS OF FIT FOR FILE.                         DECK2
*                (B1) = 1                                                DECK2
*                (B6) = ADDRESS PLUS ONE OF LAST WORD TRANSFERRED TO     DECK2
*                            WORKING STORAGE AREA.                       DECK2
*                                                                        DECK2
*         USES   X - 1, 2, 3, 4, 6, 7                                    DECK2
*                A - 2, 3, 4, 6, 7                                       DECK2
*                B - 2, 3, 4, 6, 7                                       DECK2
*                                                                        DECK2
*         CALLS  MOVE, RECORD MANAGER                                    DECK2
                                                                         DECK2
                                                                         DECK2
 RDW=     JP     *+1S17                                                  DECK2
                                                                         DECK2
                                                                         DECK2
          SB2    A2          (B2) = PSEUDO-FET ADDRESS                   DECK2
          SB3    B7+         (B3) = NR UNTRANSFERRED WORDS               DECK2
          SB4    B6          (B4) = FWA OF TRANSFER                      DECK2
 RDW2     SA3    B2+I.IN     (X3) = HOLDING BUFFER -IN- POINTER          DECK2
          SA2    A3+B1       (X2) = HOLDING BUFFER -OUT- POINTER         DECK2
          SX6    B3          NR WORDS REQUESTED                          DECK2
          IX7    X3-X2       NR WORDS IN HOLDING BUFFER                  DECK2
          ZR     X7,RDW5     IF HOLDING BUFFER EMPTY                     DECK2
                                                                         DECK2
*         COMPUTE MINIMUM OF NUMBER OF WORDS REQUESTED VS. WORDS IN      DECK2
*         HOLDING BUFFER.  TRANSFER *MIN* WORDS TO WORKING STORAGE AREA. DECK2
                                                                         DECK2
          IX1    X6-X7                                                   DECK2
          SX3    B6          (X3) = FWA OF TRANSFER                      DECK2
          AX1    59D                                                     DECK2
          BX6    X1*X6                                                   DECK2
          BX7    -X1*X7                                                  DECK2
          IX1    X6+X7       (X1) = MIN (REQUESTED, AVAILABLE) NR WORDS  DECK2
          SB7    X1                                                      DECK2
          IX6    X2+X1                                                   DECK2
          SB3    B3-B7                                                   DECK2
          SB6    B6+X1       (B6) = LWA+1 OF TRANSFER                    DECK2
          SA6    A2          UPDATE -OUT-                                DECK2
          MOVE   X1,X2,X3                                                DECK2
          SA2    B2          RESTORE (X2) = FILE CONTROL WORD            DECK2
          MX1    0           *TRANSFER COMPLETE* STATUS                  DECK2
          ZR     B3,RDW=     IF TRANSFER COMPLETE, EXIT.                 DECK2
          LX3    X2,B1       LEFT ADJUST SPILL FLAG                      DECK2
          SX1    B6          *EOS DETECTED* STATUS                       DECK2
          PL     X3,RDW=     IF FILE NOT SPILLED TO DISK, EXIT.          DECK2
          FETCH  X2,FP=X3                                                DECK2
          FETCH  X2,RT,X4 
+         ZR     X4,*+1      IF RT = W
          SX4    #EOR#
+         SX4    X4+#EOS#+#EOP#+#EOI# 
          BX3    X4*X3                                                   DECK2
          NZ     X3,RDW4     IF FILE AT EOS,EOP,EOI                      DECK2
                                                                         DECK2
*         REFILL HOLDING BUFFER.                                         DECK2
                                                                         DECK2
 RDW3     SA3    B2+B1       -FIRST-                                     DECK2
          SA4    B2+I.LIMIT  -LIMIT-                                     DECK2
          IX1    X4-X3       HOLDING BUFFER LENGTH                       DECK2
          GETWP  X2,X3,X1,RDW6     RETURN (X1) = TRANSFER LENGTH
 RDW3A    ZR     X1,RDW4     IF NO DATA RECEIVED                         DECK2
          BX4    X1 
          SX1    X1          DISCARD UNUSED BIT COUNT 
          BX6    X3                                                      DECK2
          AX4    18 
          IX7    X3+X1                                                   DECK2
          SA6    A4-B1       RESET -OUT- = -FIRST-                       DECK2
          SA7    A3+B1       SET NEW -IN-                                DECK2
          ZR     X4,RDW2     IF NO UNUSED BITS
          SB7    X4-59
          SA4    X7-1        PICK UP LAST WORD
          MX7    1
          AX7    -B7
          BX7    X7*X4
          SA7    A4          RESTORE LAST WORD
          EQ     RDW2                                                    DECK2
                                                                         DECK2
*         PROCESS END-OF-DATA CONDITION.                                 DECK2
                                                                         DECK2
 RDW4     SA3    B2+B1       -FIRST-                                     DECK2
          SX1    B6          *EOS DETECTED* STATUS                       DECK2
          BX6    X3                                                      DECK2
          SA6    A3+B1       RESET -IN- = -FIRST-                        DECK2
          SA6    A6+B1       RESET -OUT- = -FIRST-                       DECK2
          GT     B6,B4,RDW=  IF ANY DATA TRANSFERRED TO WSA              DECK2
          FETCH  X2,FP=X3 
          SX4    #EOS#
          BX4    X4-X3
          ZR     X4,RDW=
          MX1    -1          *EOP/EOI* STATUS                            DECK2
          EQ     RDW=                                                    DECK2
                                                                         DECK2
*         PROCESS EMPTY HOLDING BUFFER.                                  DECK2
                                                                         DECK2
 RDW5     SA2    B2          RESTORE (X2) = FILE CONTROL WORD            DECK2
          LX1    X2,B1       LEFT ADJUST SPILL FLAG                      DECK2
          PL     X1,RDW4     IF FILE NOT SPILLED TO DISK                 DECK2
          EQ     RDW3        GO REFILL HOLDING BUFFER                    DECK2
                                                                         DECK2
*         PROCESS RECORD MANAGER DATA EXIT                               DECK2
                                                                         DECK2
 RDW6     JP     *+1S17      RECORD MGR SIMULATES AN RJ HERE IF DATA EXI DECK2
          EQ     RDW3A       RESUME NORMAL PROCESSING                    DECK2
 FA=RDW   SPACE  4,8                                                     DECK2
          QUAL   *                                                       DECK2
 RDW=     EQU    /COMFRDW/RDW=                                           DECK2
          ENDX                                                           DECK2
