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