Seq # *Modification Id* Act
----------------------------+
00001 M01S00001.comcrda +++| CTEXT COMCRDA - READ CODED LINE TO 6/12 STRING BUFFER.
00002 M01S00002.comcrda +++| RDA SPACE 4
00003 M01S00003.comcrda +++| IF -DEF,QUAL$,1
00004 M01S00004.comcrda +++| QUAL COMCRDA
00005 M01S00005.comcrda +++| BASE D
Line S00006 Modification History |
M01 (Added by) | comcrda |
M02 (Updated by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00006 M02S00006.281l803 ---|* COMMENT COPYRIGHT CONTROL DATA CORP. 1970.
00007 M01S00001.281l803 +++|* COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
00008 M01S00007.comcrda +++| RDA SPACE 4
00009 M01S00008.comcrda +++|*** RDA - READ CODED LINE TO 6/12 ASCII STRING BUFFER.
00010 M01S00009.comcrda +++|* R. S. HORECK. 71/05/19.
00011 M01S00010.comcrda +++|* S. R. MCPHERSON. 74/09/30.
00012 M01S00011.comcrda +++|* A. F. SKJOLDEBRAND 84/08/09. ( ADAPTION FROM COMCRDS )
00013 M01S00012.comcrda +++| RDA SPACE 4
00014 M01S00013.comcrda +++|*** RDA READS 1 CODED LINE FROM A CIO BUFFER TO A WORKING
00015 M01S00014.comcrda +++|* BUFFER, ONE 6 OR 12 BIT CHARACTER/WORD.
00016 M01S00015.comcrda +++|* WORDS IN THE CIRCULAR BUFFER ARE UNPACKED AND STORED 1
00017 M01S00016.comcrda +++|* CHARACTER/WORD IN THE WORKING BUFFER UNTIL END OF LINE
00018 M01S00017.comcrda +++|* (0000) BYTE IS DETECTED. IF THE CODED LINE TERMINATES BEFORE
00019 M01S00018.comcrda +++|* THE WORKING BUFFER IS FILLED, THE WORKING BUFFER IS PADDED
00020 M01S00019.comcrda +++|* WITH SPACE CODES UNLESS UPON ENTRY THE COMPLEMENT OF THE
00021 M01S00020.comcrda +++|* WORD COUNT OF THE WORKING BUFFER IS USED. IN THIS CASE,
00022 M01S00021.comcrda +++|* THE REMAINDER OF THE WORKING BUFFER IS NOT SPACE FILLED.
00023 M01S00022.comcrda +++|* IF THE CODED LINE EXCEEDS THE SIZE OF THE
00024 M01S00023.comcrda +++|* WORKING BUFFER THE EXCESS CHARACTERS ARE IGNORED.
00025 M01S00024.comcrda +++|*
00026 M01S00025.comcrda +++|*
00027 M01S00026.comcrda +++|* ENTRY (X2) = ADDRESS OF FET FOR FILE.
00028 M01S00027.comcrda +++|* (B6) = FWA WORKING BUFFER.
00029 M01S00028.comcrda +++|* (B7) = WORD COUNT OF WORKING BUFFER.
00030 M01S00029.comcrda +++|* IF (B7) .LT. 0, IT IS THE COMPLEMENT OF THE
00031 M01S00030.comcrda +++|* BUFFER LENGTH AND THE STRING BUFFER WILL
00032 M01S00031.comcrda +++|* NOT BE SPACE FILLED.
00033 M01S00032.comcrda +++|*
00034 M01S00033.comcrda +++|* EXIT (X1) = 0 FOR TRANSFER COMPLETE.
00035 M01S00034.comcrda +++|* (X1) = -1 IF EOF DETECTED ON FILE.
00036 M01S00035.comcrda +++|* (X1) = -2 IF EOI DETECTED ON FILE.
00037 M01S00036.comcrda +++|* (X1) = (B6) IF EOR WAS DETECTED ON FILE BEFORE
00038 M01S00037.comcrda +++|* TRANSFER WAS COMPLETED.
00039 M01S00038.comcrda +++|* (B6) = ADDRESS PLUS ONE OF LAST CHARACTER FROM CODED
00040 M01S00039.comcrda +++|* LINE IN WORKING BUFFER.
00041 M01S00040.comcrda +++|* (X2) = ADDRESS OF FET FOR FILE.
00042 M01S00041.comcrda +++|*
00043 M01S00042.comcrda +++|* USES X - 1, 2, 3, 4, 6, 7.
00044 M01S00043.comcrda +++|* B - 1, 2, 3, 4, 5, 6, 7.
00045 M01S00044.comcrda +++|* A - 1, 2, 3, 4, 6, 7.
00046 M01S00045.comcrda +++|*
00047 M01S00046.comcrda +++|* CALLS LCB=, RDX=.
00048 M01S00047.comcrda +++|
00049 M01S00048.comcrda +++|
00050 M01S00049.comcrda +++| + EQ RDA2 ENTRY FROM LCB= ON A CONTINUATION READ
00051 M01S00050.comcrda +++|
00052 M01S00051.comcrda +++|* SPACE FILL REMAINDER OF BUFFER.
00053 M01S00052.comcrda +++|
00054 M01S00053.comcrda +++| RDA18 EQ B6,B7,RDA= IF WORKING BUFFER FULL
00055 M01S00054.comcrda +++| SX6 1R * *
00056 M01S00055.comcrda +++| SX4 B7-B6 (X4) = COUNT OF WORDA REMAINING IN BUFFER
00057 M01S00056.comcrda +++| MX3 59 (X3) = -1
00058 M01S00057.comcrda +++| SA6 B6 INITIALIZE (A6)
00059 M01S00058.comcrda +++| SB2 X4
00060 M01S00059.comcrda +++| LX7 X6 (X7) = * *
00061 M01S00060.comcrda +++| EQ B2,B1,RDA= IF ONLY 1 WORD REMAINING
00062 M01S00061.comcrda +++| BX2 -X3*X4 (X2) = 0 IF EVEN WORD COUNT
00063 M01S00062.comcrda +++| AX4 1 COUNT/2
00064 M01S00063.comcrda +++| NZ X2,RDA19 IF ODD WORD COUNT
00065 M01S00064.comcrda +++| SA6 A6+B1 STORE NEXT WORD
00066 M01S00065.comcrda +++| IX4 X4+X3 DECREMENT LOOP COUNT
00067 M01S00066.comcrda +++| SX2 A3-B1 RESET FET ADDRESS
00068 M01S00067.comcrda +++| ZR X4,RDA= IF WORD COUNT = 2
00069 M01S00068.comcrda +++|
00070 M01S00069.comcrda +++| RDA19 IX4 X4+X3 DECREMENT LOOP COUNT
00071 M01S00070.comcrda +++| SA7 A6+1
00072 M01S00071.comcrda +++| SA6 A7+B1
00073 M01S00072.comcrda +++| NZ X4,RDA19 LOOP TO END OF BUFFER
00074 M01S00073.comcrda +++| SX2 A3-1 RESET FET ADDRESS
00075 M01S00074.comcrda +++| EQ RDA= EXIT
00076 M01S00075.comcrda +++|
00077 M01S00076.comcrda +++| + EQ RDA2 ENTRY FROM LCB= ON A CONTINUATION READ
00078 M01S00077.comcrda +++|
00079 M01S00078.comcrda +++| RDA= PS ENTRY/EXIT
00080 M01S00079.comcrda +++| SA4 RDA18 SET RETURN ADDRESS
00081 M01S00080.comcrda +++|
00082 M01S00081.comcrda +++| IF -DEF,B1=1,1
00083 M01S00082.comcrda +++| SB1 1
00084 M01S00083.comcrda +++|
00085 M01S00084.comcrda +++| SA1 X2+4 (B5) = LIMIT
00086 M01S00085.comcrda +++| PL B7,RDA1 IF BUFFER TO BE SPACE FILLED
00087 M01S00086.comcrda +++| SA4 RDA= SKIP SPACE FILLING THE BUFFER
00088 M01S00087.comcrda +++| SB7 -B7
00089 M01S00088.comcrda +++| RDA1 SA3 X2+B1 (X3) = FIRST, (A3) = ADDRESS OF FIRST
00090 M01S00089.comcrda +++| SB7 B6+B7 (B7) = LWA+1
00091 M01S00090.comcrda +++| SX7 0
00092 M01S00091.comcrda +++| SX4 B6 (X4) = FWA WORKING STORAGE
00093 M01S00092.comcrda +++| SB5 X1
00094 M01S00093.comcrda +++| SA7 RDAA CLEAR ESCAPE CODE
00095 M01S00094.comcrda +++|
00096 M01S00095.comcrda +++|* INITIALIZE REGISTERS FOR TRANSFER.
00097 M01S00096.comcrda +++|
00098 M01S00097.comcrda +++| RDA2 SA1 A3+B1 IN
00099 M01S00098.comcrda +++| SA2 A1+B1 (B4) = OUT
00100 M01S00099.comcrda +++| SB4 X2
00101 M01S00100.comcrda +++| IX6 X1-X2 IN - OUT
00102 M01S00101.comcrda +++| SX1 B5 LIMIT
00103 M01S00102.comcrda +++| PL X6,RDA3 IF IN \ OUT
00104 M01S00103.comcrda +++| IX6 X1-X2 LIMIT - OUT
00105 M01S00104.comcrda +++| RDA3 ZR X6,=XLCB= IF NO FREE BUFFER SPACE
00106 M01S00105.comcrda +++| MX2 -6 (X2) = CHARACTER MASK
00107 M01S00106.comcrda +++| SB3 X6 (B3) = FREE BUFFER SPACE
00108 M01S00107.comcrda +++|
00109 M01S00108.comcrda +++|
00110 M01S00109.comcrda +++| RDA4 NE B4,B5,RDA5 IF OUT .NE. LIMIT
00111 M01S00110.comcrda +++| SA1 A3
00112 M01S00111.comcrda +++| SB4 X1 OUT = FIRST
00113 M01S00112.comcrda +++| RDA5 SX6 B4 RESET OUT
00114 M01S00113.comcrda +++| SA6 A2
00115 M01S00114.comcrda +++| ZR B3,RDA2 IF FREE BUFFER SPACE EXHAUSTED
00116 M01S00115.comcrda +++|
00117 M01S00116.comcrda +++|* READ WORD FROM BUFFER.
00118 M01S00117.comcrda +++|
00119 M01S00118.comcrda +++| SA1 RDAA
00120 M01S00119.comcrda +++| BX7 X1 (X7) = PREVIOUS ESCAPE CODE
00121 M01S00120.comcrda +++| SA1 B4
00122 M01S00121.comcrda +++| SB4 B4+B1
00123 M01S00122.comcrda +++| EQ B7,B6,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00124 M01S00123.comcrda +++| SB2 B0+ INITIALIZE CHARACTER COUNT
00125 M01S00124.comcrda +++| NG X1,RDA6 IF POSSIBLY 10 SEMI-COLONS
00126 M01S00125.comcrda +++| ZR X1,RDA13 IF ZERO WORD SKIP UNPACKING
00127 M01S00126.comcrda +++|
00128 M01S00127.comcrda +++|* UNPACK WORD TO WORKING BUFFER
00129 M01S00128.comcrda +++|
00130 M01S00129.comcrda +++| RDA6 LX1 6
00131 M01S00130.comcrda +++| SB2 B2+B1 BUMP CHARACTER COUNT
00132 M01S00131.comcrda +++| BX6 -X2*X1 PICK UP CHARACTER
00133 M01S00132.comcrda +++| BX1 X2*X1 ERASE CHARACTER
00134 M01S00133.comcrda +++| LX7 6
00135 M01S00134.comcrda +++| BX6 X7+X6
00136 M01S00135.comcrda +++| NZ X7,RDA7 IF ESCAPE CODE PRESENT
00137 M01S00136.comcrda +++| SX7 X6-76B
00138 M01S00137.comcrda +++| ZR X7,RDA8 IF ESCAPE 76 IS PRESENT
00139 M01S00138.comcrda +++| SX7 X6-74B
00140 M01S00139.comcrda +++| ZR X7,RDA8 IF ESCAPE 74 IS PRESENT
00141 M01S00140.comcrda +++| RDA7 SA6 B6+
00142 M01S00141.comcrda +++| SB6 B6+1
00143 M01S00142.comcrda +++| EQ B6,B7,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00144 M01S00143.comcrda +++| SX6 0 CLEAR ESCAPE CHARACTER
00145 M01S00144.comcrda +++| RDA8 BX7 X6 USE NEW ESCAPE CODE
00146 M01S00145.comcrda +++| NZ X1,RDA6 IF MORE CHARACTERS IN THIS WORD
00147 M01S00146.comcrda +++| SA7 RDAA SAVE ESCAPE CODE FOR NEXT WORD
00148 M01S00147.comcrda +++| SX6 B2-9
00149 M01S00148.comcrda +++| EQ RDA10
00150 M01S00149.comcrda +++|
00151 M01S00150.comcrda +++| RDA9 SA6 B6
00152 M01S00151.comcrda +++| SB6 B6+B1
00153 M01S00152.comcrda +++| EQ B6,B7,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00154 M01S00153.comcrda +++| NZ X1,RDA6 IF MORE CHARACTERS THIS WORD
00155 M01S00154.comcrda +++| SX6 B2-9
00156 M01S00155.comcrda +++| RDA10 SB2 B0 RESET CHARACTER COUNT
00157 M01S00156.comcrda +++| SB3 B3-B1 DECREMENT FREE BUFFER SPACE
00158 M01S00157.comcrda +++| NG X6,RDA15 IF END OF LINE
00159 M01S00158.comcrda +++| ZR B3,RDA12 IF FREE BUFFER SPACE EXHAUSTED
00160 M01S00159.comcrda +++| SA1 B4 GET NEXT WORD TO BE UNPACKED
00161 M01S00160.comcrda +++| SB4 B4+B1
00162 M01S00161.comcrda +++| NG X1,RDA11 IF POSSIBLY 10 SEMI-COLONS
00163 M01S00162.comcrda +++| ZR X1,RDA15 IF ZERO WORD, END OF LINE
00164 M01S00163.comcrda +++| RDA11 NZ X6,RDA6 IF WORD COMPLETLY PROCESSED
00165 M01S00164.comcrda +++| EQ RDA9 PROCESS LAST CHARACTER
00166 M01S00165.comcrda +++|
00167 M01S00166.comcrda +++| RDA12 NZ X6,RDA4 IF LAST CHARACTER PROCESSED
00168 M01S00167.comcrda +++| SA6 B6 PROCESS LAST CHARACTER
00169 M01S00168.comcrda +++| SB6 B6+B1
00170 M01S00169.comcrda +++| EQ RDA4
00171 M01S00170.comcrda +++|
00172 M01S00171.comcrda +++| RDA13 SB2 X4
00173 M01S00172.comcrda +++| NE B6,B2,RDA14 IF AT LEAST 1 CHARACTER IN WORKING BUFFER
00174 M01S00173.comcrda +++| SX6 1R ASSURE 1 BLANK IN STRING BUFFER
00175 M01S00174.comcrda +++| SB6 B2+B1
00176 M01S00175.comcrda +++| SA6 B2
00177 M01S00176.comcrda +++| RDA14 SA1 B6-B1 CHECK LAST CHARACTER IN BUFFER
00178 M01S00177.comcrda +++| NZ X1,RDA15 IF NOT BEGINNING OF END OF LINE
00179 M01S00178.comcrda +++| SB6 B6-1 ERASE CHARACTER
00180 M01S00179.comcrda +++|
00181 M01S00180.comcrda +++|* SEARCH FOR END OF LINE
00182 M01S00181.comcrda +++|
00183 M01S00182.comcrda +++| RDA15 SA1 B4-1 READ LAST WORD PROCESSED
00184 M01S00183.comcrda +++| MX7 -12
00185 M01S00184.comcrda +++| BX7 -X7*X1 CHECK FOR END OF LINE
00186 M01S00185.comcrda +++| SB3 B3-1 DECREMENT FREE BUFFER SPACE
00187 M01S00186.comcrda +++| NZ X7,RDA4 IF END OF LINE NOT FOUND
00188 M01S00187.comcrda +++| NE B4,B5,RDA16 IF OUT .NE. LIMIT
00189 M01S00188.comcrda +++| SB4 X3+ OUT .EQ. FIRST
00190 M01S00189.comcrda +++| RDA16 SA1 A3+B1 RESET IN
00191 M01S00190.comcrda +++| SB2 X4 FWA WORKING BUFFER
00192 M01S00191.comcrda +++| SB3 X1+ (B3) = IN
00193 M01S00192.comcrda +++| GE B6,B2,=XRDX=
00194 M01S00193.comcrda +++| SB6 B2+
00195 M01S00194.comcrda +++| EQ =XRDX= EXIT
00196 M01S00195.comcrda +++|
00197 M01S00196.comcrda +++| RDAA DATA 0 ESCAPE CODE TEMPORARY STORAGE
00198 M01S00197.comcrda +++|
00199 M01S00198.comcrda +++| SPACE 4
00200 M01S00199.comcrda +++| BASE *
00201 M01S00200.comcrda +++| QUAL$ IF -DEF,QUAL$
00202 M01S00201.comcrda +++| QUAL *
00203 M01S00202.comcrda +++| RDA= EQU /COMCRDA/RDA=
00204 M01S00203.comcrda +++| QUAL$ ENDIF
00205 M01S00204.comcrda +++| ENDX