Common COMCRDW

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcrdw +++|          CTEXT  COMCRDW - READ WORDS TO WORKING BUFFER.
00002  M00S00002.comcrdw +++| RDW      SPACE  4
00003  M00S00003.comcrdw +++|          IF     -DEF,QUAL$,1
00004  M00S00004.comcrdw +++|          QUAL   COMCRDW
00005  M00S00005.comcrdw +++|          BASE   D
Line S00006 Modification History
M01 (Removed by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00006  M01S00006.281l803 ---|*         COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
Line S00001 Modification History
M01 (Added by) 281l803
Seq #  *Modification Id* Act 
----------------------------+
00007  M01S00001.281l803 +++|*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992.
00008  M00S00007.comcrdw +++| RDW      SPACE  4
00009  M00S00008.comcrdw +++|***       RDW - READ WORDS TO WORKING BUFFER.
00010  M00S00009.comcrdw +++|*         D. A. CAHLANDER.   70/11/29.
00011  M00S00010.comcrdw +++|*         R. E. TATE.        73/11/04.
00012  M00S00011.comcrdw +++| RDW      SPACE  4
00013  M00S00012.comcrdw +++|***              RDW READS A GIVEN NUMBER OF WORDS FROM A CIO BUFFER TO
00014  M00S00013.comcrdw +++|*         A WORKING BUFFER.  THIS DECK ALSO CONTAINS LCB=, RDX=.
Line S00001 Modification History
M01 (Added by) ns2340
Seq #  *Modification Id* Act 
----------------------------+
00015  M01S00001.ns2340  +++|*
00016  M01S00002.ns2340  +++|*         A *READW* REQUEST MAY ACCESS DATA FROM BEYOND THE END OF THE
00017  M01S00003.ns2340  +++|*         *CIO* BUFFER, THUS CAUSING AN ABORT IF THE LAST WORD ADDRESS
00018  M01S00004.ns2340  +++|*         OF THE *CIO* BUFFER IS WITHIN 4 WORDS OF THE PROGRAM-S FIELD
00019  M01S00005.ns2340  +++|*         LENGTH.
00020  M00S00014.comcrdw +++|*
00021  M00S00015.comcrdw +++|*         THE THRESHOLD CONDITION TO ISSUE READ FUNCTIONS
00022  M00S00016.comcrdw +++|*         IS BUFFER HALF EMPTY FOR BUFFERS LARGER
00023  M00S00017.comcrdw +++|*         THAN 511 DECIMAL WORDS, AND BUFFER TOTALLY
00024  M00S00018.comcrdw +++|*         EMPTY FOR SMALLER BUFFERS.  IF THE SYMBOL
00025  M00S00019.comcrdw +++|*         RDX$ IS DEFINED, THEN THE THRESHOLD IS
00026  M00S00020.comcrdw +++|*         BUFFER EMPTY FOR ALL BUFFER SIZES.
00027  M00S00021.comcrdw +++|*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.
00028  M00S00022.comcrdw +++|*                (B6) = FWA WORKING BUFFER.
00029  M00S00023.comcrdw +++|*                (B7) = WORD COUNT OF WORKING BUFFER.
00030  M00S00024.comcrdw +++|*                IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.
00031  M00S00025.comcrdw +++|*
00032  M00S00026.comcrdw +++|*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.
00033  M00S00027.comcrdw +++|*                (X1) = -1 IF EOF DETECTED ON FILE.
00034  M00S00028.comcrdw +++|*                (X1) = -2 IF EOI DETECTED ON FILE.
00035  M00S00029.comcrdw +++|*                (X1) = -3 IF *CIO=* WAS CALLED TO READ MORE DATA AND
00036  M00S00030.comcrdw +++|*                       RETURNED AN ERROR STATUS.
00037  M00S00031.comcrdw +++|*                (X1) = (B6) IF EOR WAS DETECTED ON FILE BEFORE
00038  M00S00032.comcrdw +++|*                             TRANSFER WAS COMPLETED.
00039  M00S00033.comcrdw +++|*                (B6) = ADDRESS PLUS ONE OF LAST WORD TRANSFERRED TO
00040  M00S00034.comcrdw +++|*                             WORKING BUFFER.
00041  M00S00035.comcrdw +++|*                (B7) = WORD COUNT REMAINING TO BE TRANSFERRED.
00042  M00S00036.comcrdw +++|*                (X2) = ADDRESS OF FET FOR FILE.
00043  M00S00037.comcrdw +++|*                (X7) = ERROR STATUS IF (X1) = -3.
00044  M00S00038.comcrdw +++|*
00045  M00S00039.comcrdw +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00046  M00S00040.comcrdw +++|*                B - 1, 2, 3, 4, 5, 6, 7.
00047  M00S00041.comcrdw +++|*                A - 1, 2, 3, 4, 6, 7.
00048  M00S00042.comcrdw +++|*
00049  M00S00043.comcrdw +++|*         CALLS  CIO=.
00050  M00S00044.comcrdw +++|
00051  M00S00045.comcrdw +++|
00052  M00S00046.comcrdw +++|*         PROCESS 1 WORD OR BUFFER EMPTY.
00053  M00S00047.comcrdw +++|
00054  M00S00048.comcrdw +++| RDW18    ZR     B3,RDW11    IF NO DATA
00055  M00S00049.comcrdw +++|          BX7    X1          STORE 1 WORD
00056  M00S00050.comcrdw +++|          SA7    B6
00057  M00S00051.comcrdw +++| RDW19    SX6    B4+B3       ADVANCE OUT
00058  M00S00052.comcrdw +++|          SB4    B4+B3
00059  M00S00053.comcrdw +++|          SB6    B6+B3
00060  M00S00054.comcrdw +++|          SB7    B7-B3
00061  M00S00055.comcrdw +++|          NE     B4,B5,RDW20 IF OUT " LIMIT
00062  M00S00056.comcrdw +++|          SA1    X2+B1       READ FIRST
00063  M00S00057.comcrdw +++|          SX6    X1          OUT = FIRST
00064  M00S00058.comcrdw +++| RDW20    SA6    A3          UPDATE OUT
00065  M00S00059.comcrdw +++|          BX1    X1-X1       RESPONSE = 0
00066  M00S00060.comcrdw +++|          NZ     B7,RDW1     IF NOT END OF TRANSFER
00067  M00S00061.comcrdw +++|
00068  M00S00062.comcrdw +++| RDW=     PS                 ENTRY/EXIT
00069  M00S00063.comcrdw +++| RDW0     SX1    B0+
00070  M00S00064.comcrdw +++|          LE     B7,RDW=     IF NO WORDS TO TRANSFER
00071  M00S00065.comcrdw +++| RDW1     SA3    X2+3        (B4) = OUT
00072  M00S00066.comcrdw +++|          SA1    X2+2        (B3) = IN
00073  M00S00067.comcrdw +++|          IF     -DEF,B1=1,1
00074  M00S00068.comcrdw +++|          SB1    1
00075  M00S00069.comcrdw +++|          SA4    A3+B1       (B5) = LIMIT
00076  M00S00070.comcrdw +++|          SB4    X3
00077  M00S00071.comcrdw +++|          SB3    X1
00078  M00S00072.comcrdw +++|          SA1    X3          READ FIRST WORD
00079  M00S00073.comcrdw +++|          SB5    X4
00080  M00S00074.comcrdw +++|          GE     B3,B4,RDW2  IF NO END AROUND
00081  M00S00075.comcrdw +++|          SB3    B5
00082  M00S00076.comcrdw +++| RDW2     SB3    B3-B4       FREE DATA LENGTH
00083  M00S00077.comcrdw +++|          LE     B3,B7,RDW3  IF NOT ENOUGH ROOM
00084  M00S00078.comcrdw +++|          SB3    B7
00085  M00S00079.comcrdw +++| RDWA     BSS    0
00086  M00S00080.comcrdw +++| RDW3     SA3    RDWB        PRESET CMU CODE
00087  M00S00081.comcrdw +++|          RJ     RDW16       PRESET CMU CODE
00088  M00S00082.comcrdw +++|*         LE     B3,B1,RDW18 IF 1 WORD OR LESS OF DATA (NO CMU)
00089  M00S00083.comcrdw +++|*         BX7    X1          (NO CMU)
00090  M00S00084.comcrdw +++|*         SA1    A1+B1       (NO CMU)
00091  M00S00085.comcrdw +++|*
00092  M00S00086.comcrdw +++|*         LE     B3,B1,RDW18 IF 1 WORD OR LESS OF DATA (CMU)
00093  M00S00087.comcrdw +++|*         JP     RDW14       (CMU)
00094  M00S00088.comcrdw +++|
00095  M00S00089.comcrdw +++|*         INITIALIZE REGISTERS FOR TRANSFER.
00096  M00S00090.comcrdw +++|
00097  M00S00091.comcrdw +++| RDW4     SX4    B3-B1
00098  M00S00092.comcrdw +++|          MX6    -3
00099  M00S00093.comcrdw +++|          SA7    B6
00100  M00S00094.comcrdw +++|          BX3    -X6*X4      NUMBER OF ODD WORDS
00101  M00S00095.comcrdw +++|          AX4    3           NUMBER OF BLOCKS
00102  M00S00096.comcrdw +++|
00103  M00S00097.comcrdw +++|*         TRANSFER UP TO 7 WORDS.
00104  M00S00098.comcrdw +++|
00105  M00S00099.comcrdw +++|          ZR     X3,RDW6     IF NO ODD WORDS
00106  M00S00100.comcrdw +++|          SB2    X3
00107  M00S00101.comcrdw +++| RDW5     SB2    B2-B1
00108  M00S00102.comcrdw +++|          BX7    X1
00109  M00S00103.comcrdw +++|          SA1    A1+B1
00110  M00S00104.comcrdw +++|          SA7    A7+B1
00111  M00S00105.comcrdw +++|          NZ     B2,RDW5     IF MORE WORDS
00112  M00S00106.comcrdw +++|
00113  M00S00107.comcrdw +++|*         PRE-READ REGISTERS.
00114  M00S00108.comcrdw +++|
00115  M00S00109.comcrdw +++| RDW6     ZR     X4,RDW19    IF NO BLOCKS
00116  M00S00110.comcrdw +++|          SB5    X2
00117  M00S00111.comcrdw +++|          SA2    A1+B1
00118  M00S00112.comcrdw +++|          SB2    B1+B1       (B2) = 2
00119  M00S00113.comcrdw +++|          SA3    A2+B1
00120  M00S00114.comcrdw +++|          SB4    X4          (B4) = LOOP COUNT
00121  M00S00115.comcrdw +++|          SA4    A3+B1
00122  M00S00116.comcrdw +++|
00123  M00S00117.comcrdw +++|*         TRANSFER 8 WORD BLOCKS.
00124  M00S00118.comcrdw +++|
00125  M00S00119.comcrdw +++| RDW7     BX6    X1
00126  M00S00120.comcrdw +++|          LX7    X2
00127  M00S00121.comcrdw +++|          SA1    A3+B2
00128  M00S00122.comcrdw +++|          SA2    A4+B2
00129  M00S00123.comcrdw +++|          SA6    A7+B1
00130  M00S00124.comcrdw +++|          SB4    B4-B1
00131  M00S00125.comcrdw +++|          SA7    A6+B1
00132  M00S00126.comcrdw +++|          BX6    X3
00133  M00S00127.comcrdw +++|          LX7    X4
00134  M00S00128.comcrdw +++|          SA3    A1+B2
00135  M00S00129.comcrdw +++|          SA4    A2+B2
00136  M00S00130.comcrdw +++|          SA6    A6+B2
00137  M00S00131.comcrdw +++|          SA7    A7+B2
00138  M00S00132.comcrdw +++|          BX6    X1
00139  M00S00133.comcrdw +++|          LX7    X2
00140  M00S00134.comcrdw +++|          SA1    A3+B2
00141  M00S00135.comcrdw +++|          SA2    A4+B2
00142  M00S00136.comcrdw +++|          SA6    A6+B2
00143  M00S00137.comcrdw +++|          SA7    A7+B2
00144  M00S00138.comcrdw +++|          BX6    X3
00145  M00S00139.comcrdw +++|          LX7    X4
00146  M00S00140.comcrdw +++|          SA3    A1+B2
00147  M00S00141.comcrdw +++|          SA4    A2+B2
00148  M00S00142.comcrdw +++|          SA6    A6+B2
00149  M00S00143.comcrdw +++|          SA7    A7+B2
00150  M00S00144.comcrdw +++|          NZ     B4,RDW7     LOOP
00151  M00S00145.comcrdw +++|
00152  M00S00146.comcrdw +++|*         READ EXIT.
00153  M00S00147.comcrdw +++|
00154  M00S00148.comcrdw +++|          SX2    B5          RESET FET ADDRESS
00155  M00S00149.comcrdw +++|          SA3    B5+3        OUT
00156  M00S00150.comcrdw +++|          SA1    A3+B1       (B5) = LIMIT
00157  M00S00151.comcrdw +++|          SB5    X1
00158  M00S00152.comcrdw +++| RDW8     SA4    X2          CHECK BUFFER STATUS
00159  M00S00153.comcrdw +++|          SB6    B6+B3
00160  M00S00154.comcrdw +++|          SB7    B7-B3
00161  M00S00155.comcrdw +++|          SB4    X3+B3       ADVANCE OUT
00162  M00S00156.comcrdw +++|          SX6    X3+B3
00163  M00S00157.comcrdw +++|          LX4    59-0
00164  M00S00158.comcrdw +++|          SA1    X2+1        READ FIRST
00165  M00S00159.comcrdw +++|          NE     B4,B5,RDW9  IF OUT " LIMIT
00166  M00S00160.comcrdw +++|          SX6    X1+         OUT = FIRST
00167  M00S00161.comcrdw +++| RDX$     IF     DEF,RDX$
00168  M00S00162.comcrdw +++| RDW9     EQ     RDW20       CLEAN UP AND RETURN
00169  M00S00163.comcrdw +++| RDX$     ELSE
00170  M00S00164.comcrdw +++|
00171  M00S00165.comcrdw +++|*         TRY TO BUFFER AHEAD.
00172  M00S00166.comcrdw +++|
00173  M00S00167.comcrdw +++| RDW9     PL     X4,RDW20    IF BUFFER BUSY
00174  M00S00168.comcrdw +++|          LX4    0-4
00175  M00S00169.comcrdw +++|          NG     X4,RDW20    IF EOR/EOF SET
00176  M00S00170.comcrdw +++|          SA4    X2+2        READ IN
00177  M00S00171.comcrdw +++|          SB2    X1          (LIMIT - FIRST)
00178  M00S00172.comcrdw +++|          SX1    B5-B2
00179  M00S00173.comcrdw +++|          IX7    X4-X6       (IN-OUT)
00180  M00S00174.comcrdw +++|          LX3    X7,B1       2*(IN-OUT)
00181  M00S00175.comcrdw +++|          AX7    60          SIGN OF (IN-OUT)
00182  M00S00176.comcrdw +++|          BX4    X7-X1       INVERT BUFFER IF OUT \ IN
00183  M00S00177.comcrdw +++|          IX7    X4-X3       BUFFER SIZE - 2*(IN-OUT)
00184  M00S00178.comcrdw +++|          AX1    9
00185  M00S00179.comcrdw +++|          NG     X7,RDW20    IF BUFFER THRESHOLD NOT REACHED
00186  M00S00180.comcrdw +++|          ZR     X1,RDW20    IF BUFFER NOT BIG ENOUGH TO READ AHEAD
00187  M00S00181.comcrdw +++|          SA6    A3+         UPDATE OUT
00188  M00S00182.comcrdw +++| RDX$     ENDIF
00189  M00S00183.comcrdw +++| RDW10    SA1    X2          ISSUE PREVIOUS READ FUNCTION
00190  M00S00184.comcrdw +++|          SX7    740770B/2
00191  M00S00185.comcrdw +++|          LX4    X7,B1
00192  M00S00186.comcrdw +++|          BX7    X4*X1
00193  M00S00187.comcrdw +++|          RJ     =XCIO=
00194  M00S00188.comcrdw +++|          ZR     X7,RDW0     IF NO ERROR
00195  M00S00189.comcrdw +++|          SA3    X2+3        OUT
00196  M00S00190.comcrdw +++|          SA4    X2+2        IN
00197  M00S00191.comcrdw +++|          MX1    -2
00198  M00S00192.comcrdw +++|          IX3    X3-X4
00199  M00S00193.comcrdw +++|          NZ     X3,RDW0     IF BUFFER NOT EMPTY
00200  M00S00194.comcrdw +++|          JP     RDW=        RETURN
00201  M00S00195.comcrdw +++|
00202  M00S00196.comcrdw +++|*         LOAD CIRCULAR BUFFER.
00203  M00S00197.comcrdw +++|
00204  M00S00198.comcrdw +++| RDW11    SA1    X2          CHECK BUFFER STATUS
00205  M00S00199.comcrdw +++|          SA3    X2+2        READ IN
00206  M00S00200.comcrdw +++|          LX1    59-0
00207  M00S00201.comcrdw +++|          PL     X1,RDW13    IF BUFFER BUSY
00208  M00S00202.comcrdw +++|          SB3    X3
00209  M00S00203.comcrdw +++|          LX1    0-4
00210  M00S00204.comcrdw +++|          NE     B3,B4,RDW1  IF BUFFER NOT EMPTY
00211  M00S00205.comcrdw +++|          PL     X1,RDW10    IF NOT EOR SET
00212  M00S00206.comcrdw +++|          SA3    X2+B1       SET IN = OUT = FIRST
00213  M00S00207.comcrdw +++|          LX6    X1,B1
00214  M00S00208.comcrdw +++|          SX1    B6+0
00215  M00S00209.comcrdw +++|          PL     X6,RDW12    IF NOT EOF
00216  M00S00210.comcrdw +++|          LX6    3-9
00217  M00S00211.comcrdw +++|          MX1    -1
00218  M00S00212.comcrdw +++|          PL     X6,RDW12    IF NOT EOI
00219  M00S00213.comcrdw +++|          SX1    -2
00220  M00S00214.comcrdw +++| RDW12    SX7    X3+
00221  M00S00215.comcrdw +++|          SA7    A3+B1
00222  M00S00216.comcrdw +++|          SA7    A7+B1
00223  M00S00217.comcrdw +++|          JP     RDW=        RETURN
00224  M00S00218.comcrdw +++|
00225  M00S00219.comcrdw +++|*         RECALL WAITING FOR I/O.
00226  M00S00220.comcrdw +++|
00227  M00S00221.comcrdw +++| RDW13    RECALL
00228  M00S00222.comcrdw +++|          JP     RDW1
00229  M00S00223.comcrdw +++|
00230  M00S00224.comcrdw +++|*         MOVE DATA WITH CMU.
00231  M00S00225.comcrdw +++|
00232  M00S00226.comcrdw +++| RDW14    SX4    B3-819
00233  M00S00227.comcrdw +++|          PL     X4,RDW15    IF MOVE TOO BIG FOR CMU
00234  M00S00228.comcrdw +++|          SX4    B3          10 * WORDS = CHARACTERS
00235  M00S00229.comcrdw +++|          LX6    X4,B1
00236  M00S00230.comcrdw +++|          BX1    X0          SAVE X0
00237  M00S00231.comcrdw +++|          LX4    3
00238  M00S00232.comcrdw +++|          IX6    X4+X6
00239  M00S00233.comcrdw +++|          SX7    B6          SET DESTINATION ADDRESS
00240  M00S00234.comcrdw +++|          LX3    30
00241  M00S00235.comcrdw +++|          MX4    -4
00242  M00S00236.comcrdw +++|          BX7    X7+X3
00243  M00S00237.comcrdw +++|          BX3    X4*X6       EXTRACT UPPER PORTION OF CHARACTER COUNT
00244  M00S00238.comcrdw +++|          LX3    48-4
00245  M00S00239.comcrdw +++|          BX4    -X4*X6
00246  M00S00240.comcrdw +++|          BX7    X3+X7
00247  M00S00241.comcrdw +++|          LX4    26
00248  M00S00242.comcrdw +++|          BX7    X4+X7
00249  M00S00243.comcrdw +++|          AX3    51
00250  M00S00244.comcrdw +++|          SA7    RDWB        STORE DESCRIPTOR WORD
00251  M00S00245.comcrdw +++|          IM     RDWB        MOVE DATA
00252  M00S00246.comcrdw +++|          BX0    X1          RESTORE X0
00253  M00S00247.comcrdw +++|          ZR     X3,RDW19    IF NO READ EXIT CHECK
00254  M00S00248.comcrdw +++|          SX3    B4          SET OUT
00255  M00S00249.comcrdw +++|          JP     RDW8
00256  M00S00250.comcrdw +++|
00257  M00S00251.comcrdw +++| RDW15    BX7    X1
00258  M00S00252.comcrdw +++|          SA1    A1+B1
00259  M00S00253.comcrdw +++|          JP     RDW4
00260  M00S00254.comcrdw +++|
00261  M00S00255.comcrdw +++|*         PRESET FOR CMU.
00262  M00S00256.comcrdw +++|*         RDWB IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
00263  M00S00257.comcrdw +++|*         THE INSTRUCTION STACK.
00264  M00S00258.comcrdw +++|
00265  M00S00259.comcrdw +++| RDWB     LE     B3,B1,RDW18  IF 1 WORD OR LESS (CMU)
00266  M00S00260.comcrdw +++|          JP     RDW14
00267  M00S00261.comcrdw +++|
00268  M00S00262.comcrdw +++| RDW16    EQU    RDWB        USED TO VOID STACK AT PRESET
00269  M00S00263.comcrdw +++|
00270  M00S00264.comcrdw +++|*         PRESET FOR CMU.
00271  M00S00265.comcrdw +++|
00272  M00S00266.comcrdw +++|          SA4    CMUR        CHECK IF CMU AVAIALABLE
00273  M00S00267.comcrdw +++|          SB3    RDWA
00274  M00S00268.comcrdw +++|          NG     X4,RDW17    IF CMU
00275  M00S00269.comcrdw +++|          SA3    RDWC
00276  M00S00270.comcrdw +++| RDW17    BX6    X3
00277  M00S00271.comcrdw +++|          SA6    B3
00278  M00S00272.comcrdw +++|          JP     RDW1
00279  M00S00273.comcrdw +++|
00280  M00S00274.comcrdw +++| RDWC     LE     B3,B1,RDW18  IF 1 WORD OR LESS (NO CMU)
00281  M00S00275.comcrdw +++|          BX7    X1
00282  M00S00276.comcrdw +++|          SA1    A1+B1
00283  M00S00277.comcrdw +++| RDX      SPACE  4
00284  M00S00278.comcrdw +++|**        RDX - READ EXIT.
00285  M00S00279.comcrdw +++|*         EXIT FROM READ SUBROUTINE TO CALLER.
00286  M00S00280.comcrdw +++|*         IF CIRCULAR BUFFER IS BUSY, OR EOR/EOF IS SENSED, NO ACTION
00287  M00S00281.comcrdw +++|*         IS TAKEN.
00288  M00S00282.comcrdw +++|*         OTHERWISE, THE WORD COUNT REMAINING IN THE BUFFER IS CHECKED
00289  M00S00283.comcrdw +++|*         AND PREVIOUS READ FUNCTION ISSUED IF NECESSARY.
00290  M00S00284.comcrdw +++|*
00291  M00S00285.comcrdw +++|*         ENTRY  (A2) = ADDRESS OF OUT.
00292  M00S00286.comcrdw +++|*                (A3) = ADDRESS OF FIRST.
00293  M00S00287.comcrdw +++|*                (A4) = RETURN ADDRESS.
00294  M00S00288.comcrdw +++|*                (X3) = FIRST.
00295  M00S00289.comcrdw +++|*                (B3) = IN.
00296  M00S00290.comcrdw +++|*                (B4) = OUT.
00297  M00S00291.comcrdw +++|*                (B5) = LIMIT.
00298  M00S00292.comcrdw +++|*
00299  M00S00293.comcrdw +++|*         EXIT   TO RETURN ADDRESS.
00300  M00S00294.comcrdw +++|*
00301  M00S00295.comcrdw +++|*         USES   A - 1, 6.
00302  M00S00296.comcrdw +++|*                B - 2.
00303  M00S00297.comcrdw +++|*                X - 1, 2, 3, 6, 7.
00304  M00S00298.comcrdw +++|*
00305  M00S00299.comcrdw +++|*         CALLS  CIO=.
00306  M00S00300.comcrdw +++|
00307  M00S00301.comcrdw +++|
00308  M00S00302.comcrdw +++| RDX=     SA1    A3-B1       CHECK BUFFER STATUS
00309  M00S00303.comcrdw +++|          SX6    B4          STORE OUT
00310  M00S00304.comcrdw +++|          LX1    59
00311  M00S00305.comcrdw +++|          SA6    A2
00312  M00S00306.comcrdw +++|          SX2    A3-B1       RESET (X2)
00313  M00S00307.comcrdw +++| RDX$     IF     -DEF,RDX$
00314  M00S00308.comcrdw +++|          PL     X1,RDX1     IF BUFFER BUSY
00315  M00S00309.comcrdw +++|          LX1    -4
00316  M00S00310.comcrdw +++|          NG     X1,RDX1     IF EOR/EOF SET
00317  M00S00311.comcrdw +++|
00318  M00S00312.comcrdw +++|*         IF BUFFER IS NOT BUSY, CHECK BUFFER SIZE.
00319  M00S00313.comcrdw +++|*         ISSUE READ IF BUFFER THRESHOLD IS REACHED.
00320  M00S00314.comcrdw +++|
00321  M00S00315.comcrdw +++|          SA1    A2-B1       REREAD IN
00322  M00S00316.comcrdw +++|          SB3    X1
00323  M00S00317.comcrdw +++|          SX6    B3-B4       (IN-OUT)
00324  M00S00318.comcrdw +++|          SB2    X3          (LIMIT-FIRST)
00325  M00S00319.comcrdw +++|          LX3    X6,B1       2*(IN-OUT)
00326  M00S00320.comcrdw +++|          SX7    B5-B2
00327  M00S00321.comcrdw +++|          AX6    60          SIGN OF (IN-OUT)
00328  M00S00322.comcrdw +++|          BX6    X6-X7       INVERT BUFFER IF OUT .GE. IN
00329  M00S00323.comcrdw +++|          IX6    X6-X3       BUFFER SIZE - 2 * ( IN - OUT )
00330  M00S00324.comcrdw +++|          AX7    9
00331  M00S00325.comcrdw +++|          NG     X6,RDX1     IF BUFFER THRESHOLD NOT REACHED
00332  M00S00326.comcrdw +++|          ZR     X7,RDX1     IF BUFFER NOT BIG ENOUGH TO READ AHEAD
00333  M00S00327.comcrdw +++|          SA1    X2          ISSUE PREVIOUS READ FUNCTION
00334  M00S00328.comcrdw +++|          SX6    740770B/2
00335  M00S00329.comcrdw +++|          LX6    1
00336  M00S00330.comcrdw +++|          BX7    X6*X1
00337  M00S00331.comcrdw +++|          RJ     =XCIO=
00338  M00S00332.comcrdw +++| RDX1     SX1    B0          RESPONSE = 0
00339  M00S00333.comcrdw +++| RDX$     ELSE
00340  M00S00334.comcrdw +++|          SX1    B0+         RESPONSE = 0
00341  M00S00335.comcrdw +++| RDX$     ENDIF
00342  M00S00336.comcrdw +++|          SB2    A4          SET RETURN ADDRESS
00343  M00S00337.comcrdw +++|          JP     B2          RETURN
00344  M00S00338.comcrdw +++| LCB      SPACE  4
00345  M00S00339.comcrdw +++|**        LCB - LOAD CIRCULAR BUFFER.
00346  M00S00340.comcrdw +++|*         REQUEST READ IF BUFFER IS EMPTY, NOT BUSY AND NOE EOR/EOF.
00347  M00S00341.comcrdw +++|*         IF BUFFER IS BUSY, RECALL AND RETURN.
00348  M00S00342.comcrdw +++|*
00349  M00S00343.comcrdw +++|*         ENTRY  (A2) = ADDRESS OF OUT.
00350  M00S00344.comcrdw +++|*                (A3) = ADDRESS OF FIRST.
00351  M00S00345.comcrdw +++|*                (A4) = RETURN ADDRESS.
00352  M00S00346.comcrdw +++|*                (B4) = OUT.
00353  M00S00347.comcrdw +++|*
00354  M00S00348.comcrdw +++|*         EXIT   TO RETURN ADDRESS - 1 IF CONTINUATION READ.
00355  M00S00349.comcrdw +++|*                TO RETURN ADDRESS IF EOR/EOF.
00356  M00S00350.comcrdw +++|*                (X1) = LAST WORD ADDRESS OF WORKING BUFFER.
00357  M00S00351.comcrdw +++|*                (X1) = -1 IF EOF.
00358  M00S00352.comcrdw +++|*                (X1) = -2 IF EOI.
00359  M00S00353.comcrdw +++|*
00360  M00S00354.comcrdw +++|*         CALLS  CIO=.
00361  M00S00355.comcrdw +++|
00362  M00S00356.comcrdw +++|
00363  M00S00357.comcrdw +++| LCB=     SA1    A3-B1       CHECK BUFFER STATUS
00364  M00S00358.comcrdw +++|          SX6    B4          STORE OUT
00365  M00S00359.comcrdw +++|          LX1    59
00366  M00S00360.comcrdw +++|          SA6    A2
00367  M00S00361.comcrdw +++|          NG     X1,LCB2     IF BUFFER NOT BUSY
00368  M00S00362.comcrdw +++|          RECALL
00369  M00S00363.comcrdw +++| LCB1     SB2    A4-B1       CONTINUE READ
00370  M00S00364.comcrdw +++|          JP     B2
00371  M00S00365.comcrdw +++|
00372  M00S00366.comcrdw +++| LCB2     SA1    A2-B1       RE-READ IN
00373  M00S00367.comcrdw +++|          SB3    X1
00374  M00S00368.comcrdw +++|          NE     B3,B4,LCB1  IF BUFFER NOT EMPTY
00375  M00S00369.comcrdw +++|          SA1    A3-B1       CHECK BUFFER STATUS
00376  M00S00370.comcrdw +++|          LX1    59-4
00377  M00S00371.comcrdw +++|          NG     X1,LCB3     IF EOR SET
00378  M00S00372.comcrdw +++|          SX6    740770B/2   ISSUE PREVIOUS READ FUNCTION
00379  M00S00373.comcrdw +++|          LX1    4
00380  M00S00374.comcrdw +++|          SX2    A3-B1
00381  M00S00375.comcrdw +++|          BX7    X6*X1
00382  M00S00376.comcrdw +++|          LX7    1
00383  M00S00377.comcrdw +++|          RJ     =XCIO=
00384  M00S00378.comcrdw +++|          SB2    A4-B1       CONTINUE READ
00385  M00S00379.comcrdw +++|          JP     B2
00386  M00S00380.comcrdw +++|
00387  M00S00381.comcrdw +++| LCB3     LX6    B1,X1
00388  M00S00382.comcrdw +++|          SA1    A3          SET IN = OUT = FIRST
00389  M00S00383.comcrdw +++|          SX7    X1
00390  M00S00384.comcrdw +++|          SA7    A1+B1
00391  M00S00385.comcrdw +++|          SX1    -B1         RESPONSE = -1
00392  M00S00386.comcrdw +++|          SB2    A4          SET RETURN ADDRESS
00393  M00S00387.comcrdw +++|          NG     X6,LCB4     IF EOF
00394  M00S00388.comcrdw +++|          MX2    -4
00395  M00S00389.comcrdw +++|          SX1    B6          RESPONSE = LAST WORD ADDRESS
00396  M00S00390.comcrdw +++|          LX6    -14+4
00397  M00S00391.comcrdw +++|          BX2    -X2*X6
00398  M00S00392.comcrdw +++|          SB3    X2+
00399  M00S00393.comcrdw +++|          EQ     B3,B1,LCB6  IF LEVEL 1
00400  M00S00394.comcrdw +++| LCB4     SX2    A3-B1       RESET (X2)
00401  M00S00395.comcrdw +++|          SA7    A7+B1
00402  M00S00396.comcrdw +++|          NG     X1,LCB7     IF EOF/EOI
00403  M00S00397.comcrdw +++| LCB5     JP     B2          RETURN
00404  M00S00398.comcrdw +++|
00405  M00S00399.comcrdw +++| LCB6     SA7    A7+B1       STORE OUT
00406  M00S00400.comcrdw +++|          READ   A3-B1       RESTART READ
00407  M00S00401.comcrdw +++|          SB2    A4-B1       CONTINUE
00408  M00S00402.comcrdw +++|          JP     B2
00409  M00S00403.comcrdw +++|
00410  M00S00404.comcrdw +++| LCB7     LX6    3-9
00411  M00S00405.comcrdw +++|          PL     X6,LCB5     IF NOT EOI
00412  M00S00406.comcrdw +++|          LX1    1           RESPONSE= -2
00413  M00S00407.comcrdw +++|          JP     B2          RETURN
00414  M00S00408.comcrdw +++|          SPACE  4
00415  M00S00409.comcrdw +++|          BASE   *
00416  M00S00410.comcrdw +++| QUAL$    IF     -DEF,QUAL$
00417  M00S00411.comcrdw +++|          QUAL   *
00418  M00S00412.comcrdw +++| RDW=     EQU    /COMCRDW/RDW=
00419  M00S00413.comcrdw +++| RDX=     EQU    /COMCRDW/RDX=
00420  M00S00414.comcrdw +++| LCB=     EQU    /COMCRDW/LCB=
00421  M00S00415.comcrdw +++| QUAL$    ENDIF
00422  M00S00416.comcrdw +++|          ENDX