User Tools

Site Tools


cdc:nos2.source:opl.opl871:common:comcrda

Common COMCRDA

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcrda +++|          CTEXT  COMCRDA - READ CODED LINE TO 6/12 STRING BUFFER.
00002  M00S00002.comcrda +++| RDA      SPACE  4
00003  M00S00003.comcrda +++|          IF     -DEF,QUAL$,1
00004  M00S00004.comcrda +++|          QUAL   COMCRDA
00005  M00S00005.comcrda +++|          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.comcrda +++| RDA      SPACE  4
00009  M00S00008.comcrda +++|***       RDA - READ CODED LINE TO 6/12 ASCII STRING BUFFER.
00010  M00S00009.comcrda +++|*         R. S. HORECK.      71/05/19.
00011  M00S00010.comcrda +++|*         S. R. MCPHERSON.   74/09/30.
00012  M00S00011.comcrda +++|*         A. F. SKJOLDEBRAND 84/08/09. ( ADAPTION FROM COMCRDS )
00013  M00S00012.comcrda +++| RDA      SPACE  4
00014  M00S00013.comcrda +++|***              RDA READS 1 CODED LINE FROM A CIO BUFFER TO A WORKING
00015  M00S00014.comcrda +++|*         BUFFER, ONE 6 OR 12 BIT CHARACTER/WORD.
00016  M00S00015.comcrda +++|*         WORDS IN THE CIRCULAR BUFFER ARE UNPACKED AND STORED 1
00017  M00S00016.comcrda +++|*         CHARACTER/WORD IN THE WORKING BUFFER UNTIL END OF LINE
00018  M00S00017.comcrda +++|*         (0000) BYTE IS DETECTED.  IF THE CODED LINE TERMINATES BEFORE
00019  M00S00018.comcrda +++|*         THE WORKING BUFFER IS FILLED, THE WORKING BUFFER IS PADDED
00020  M00S00019.comcrda +++|*         WITH SPACE CODES UNLESS UPON ENTRY THE COMPLEMENT OF THE
00021  M00S00020.comcrda +++|*         WORD COUNT OF THE WORKING BUFFER IS USED.  IN THIS CASE,
00022  M00S00021.comcrda +++|*         THE REMAINDER OF THE WORKING BUFFER IS NOT SPACE FILLED.
00023  M00S00022.comcrda +++|*         IF THE CODED LINE EXCEEDS THE SIZE OF THE
00024  M00S00023.comcrda +++|*         WORKING BUFFER THE EXCESS CHARACTERS ARE IGNORED.
00025  M00S00024.comcrda +++|*
00026  M00S00025.comcrda +++|*
00027  M00S00026.comcrda +++|*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.
00028  M00S00027.comcrda +++|*                (B6) = FWA WORKING BUFFER.
00029  M00S00028.comcrda +++|*                (B7) = WORD COUNT OF WORKING BUFFER.
00030  M00S00029.comcrda +++|*                       IF (B7) .LT.  0, IT IS THE COMPLEMENT OF THE
00031  M00S00030.comcrda +++|*                       BUFFER LENGTH AND THE STRING BUFFER WILL
00032  M00S00031.comcrda +++|*                       NOT BE SPACE FILLED.
00033  M00S00032.comcrda +++|*
00034  M00S00033.comcrda +++|*         EXIT   (X1) = 0 FOR TRANSFER COMPLETE.
00035  M00S00034.comcrda +++|*                (X1) = -1 IF EOF DETECTED ON FILE.
00036  M00S00035.comcrda +++|*                (X1) = -2 IF EOI DETECTED ON FILE.
00037  M00S00036.comcrda +++|*                (X1) = (B6) IF EOR WAS DETECTED ON FILE BEFORE
00038  M00S00037.comcrda +++|*                             TRANSFER WAS COMPLETED.
00039  M00S00038.comcrda +++|*                (B6) = ADDRESS PLUS ONE OF LAST CHARACTER FROM CODED
00040  M00S00039.comcrda +++|*                             LINE IN WORKING BUFFER.
00041  M00S00040.comcrda +++|*                (X2) = ADDRESS OF FET FOR FILE.
00042  M00S00041.comcrda +++|*
00043  M00S00042.comcrda +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00044  M00S00043.comcrda +++|*                B - 1, 2, 3, 4, 5, 6, 7.
00045  M00S00044.comcrda +++|*                A - 1, 2, 3, 4, 6, 7.
00046  M00S00045.comcrda +++|*
00047  M00S00046.comcrda +++|*         CALLS  LCB=, RDX=.
00048  M00S00047.comcrda +++|
00049  M00S00048.comcrda +++|
00050  M00S00049.comcrda +++| +        EQ     RDA2        ENTRY FROM LCB= ON A CONTINUATION READ
00051  M00S00050.comcrda +++|
00052  M00S00051.comcrda +++|*         SPACE FILL REMAINDER OF BUFFER.
00053  M00S00052.comcrda +++|
00054  M00S00053.comcrda +++| RDA18    EQ     B6,B7,RDA=  IF WORKING BUFFER FULL
00055  M00S00054.comcrda +++|          SX6    1R          * *
00056  M00S00055.comcrda +++|          SX4    B7-B6       (X4) = COUNT OF WORDA REMAINING IN BUFFER
00057  M00S00056.comcrda +++|          MX3    59          (X3) = -1
00058  M00S00057.comcrda +++|          SA6    B6          INITIALIZE (A6)
00059  M00S00058.comcrda +++|          SB2    X4
00060  M00S00059.comcrda +++|          LX7    X6          (X7) = * *
00061  M00S00060.comcrda +++|          EQ     B2,B1,RDA=  IF ONLY 1 WORD REMAINING
00062  M00S00061.comcrda +++|          BX2    -X3*X4      (X2) = 0 IF EVEN WORD COUNT
00063  M00S00062.comcrda +++|          AX4    1           COUNT/2
00064  M00S00063.comcrda +++|          NZ     X2,RDA19    IF ODD WORD COUNT
00065  M00S00064.comcrda +++|          SA6    A6+B1       STORE NEXT WORD
00066  M00S00065.comcrda +++|          IX4    X4+X3       DECREMENT LOOP COUNT
00067  M00S00066.comcrda +++|          SX2    A3-B1       RESET FET ADDRESS
00068  M00S00067.comcrda +++|          ZR     X4,RDA=     IF WORD COUNT = 2
00069  M00S00068.comcrda +++|
00070  M00S00069.comcrda +++| RDA19    IX4    X4+X3       DECREMENT LOOP COUNT
00071  M00S00070.comcrda +++|          SA7    A6+1
00072  M00S00071.comcrda +++|          SA6    A7+B1
00073  M00S00072.comcrda +++|          NZ     X4,RDA19    LOOP TO END OF BUFFER
00074  M00S00073.comcrda +++|          SX2    A3-1        RESET FET ADDRESS
00075  M00S00074.comcrda +++|          EQ     RDA=        EXIT
00076  M00S00075.comcrda +++|
00077  M00S00076.comcrda +++| +        EQ     RDA2        ENTRY FROM LCB= ON A CONTINUATION READ
00078  M00S00077.comcrda +++|
00079  M00S00078.comcrda +++| RDA=     PS                 ENTRY/EXIT
00080  M00S00079.comcrda +++|          SA4    RDA18       SET RETURN ADDRESS
00081  M00S00080.comcrda +++|
00082  M00S00081.comcrda +++|          IF     -DEF,B1=1,1
00083  M00S00082.comcrda +++|          SB1    1
00084  M00S00083.comcrda +++|
00085  M00S00084.comcrda +++|          SA1    X2+4        (B5) = LIMIT
00086  M00S00085.comcrda +++|          PL     B7,RDA1     IF BUFFER TO BE SPACE FILLED
00087  M00S00086.comcrda +++|          SA4    RDA=        SKIP SPACE FILLING THE BUFFER
00088  M00S00087.comcrda +++|          SB7    -B7
00089  M00S00088.comcrda +++| RDA1     SA3    X2+B1       (X3) = FIRST, (A3) = ADDRESS OF FIRST
00090  M00S00089.comcrda +++|          SB7    B6+B7       (B7) = LWA+1
00091  M00S00090.comcrda +++|          SX7    0
00092  M00S00091.comcrda +++|          SX4    B6          (X4) = FWA WORKING STORAGE
00093  M00S00092.comcrda +++|          SB5    X1
00094  M00S00093.comcrda +++|          SA7    RDAA        CLEAR ESCAPE CODE
00095  M00S00094.comcrda +++|
00096  M00S00095.comcrda +++|*         INITIALIZE REGISTERS FOR TRANSFER.
00097  M00S00096.comcrda +++|
00098  M00S00097.comcrda +++| RDA2     SA1    A3+B1       IN
00099  M00S00098.comcrda +++|          SA2    A1+B1       (B4) = OUT
00100  M00S00099.comcrda +++|          SB4    X2
00101  M00S00100.comcrda +++|          IX6    X1-X2       IN - OUT
00102  M00S00101.comcrda +++|          SX1    B5          LIMIT
00103  M00S00102.comcrda +++|          PL     X6,RDA3     IF IN \ OUT
00104  M00S00103.comcrda +++|          IX6    X1-X2       LIMIT - OUT
00105  M00S00104.comcrda +++| RDA3     ZR     X6,=XLCB=   IF NO FREE BUFFER SPACE
00106  M00S00105.comcrda +++|          MX2    -6          (X2) = CHARACTER MASK
00107  M00S00106.comcrda +++|          SB3    X6          (B3) = FREE BUFFER SPACE
00108  M00S00107.comcrda +++|
00109  M00S00108.comcrda +++|
00110  M00S00109.comcrda +++| RDA4     NE     B4,B5,RDA5  IF OUT .NE. LIMIT
00111  M00S00110.comcrda +++|          SA1    A3
00112  M00S00111.comcrda +++|          SB4    X1          OUT = FIRST
00113  M00S00112.comcrda +++| RDA5     SX6    B4          RESET OUT
00114  M00S00113.comcrda +++|          SA6    A2
00115  M00S00114.comcrda +++|          ZR     B3,RDA2     IF FREE BUFFER SPACE EXHAUSTED
00116  M00S00115.comcrda +++|
00117  M00S00116.comcrda +++|*         READ WORD FROM BUFFER.
00118  M00S00117.comcrda +++|
00119  M00S00118.comcrda +++|          SA1    RDAA
00120  M00S00119.comcrda +++|          BX7    X1          (X7) = PREVIOUS ESCAPE CODE
00121  M00S00120.comcrda +++|          SA1    B4
00122  M00S00121.comcrda +++|          SB4    B4+B1
00123  M00S00122.comcrda +++|          EQ     B7,B6,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00124  M00S00123.comcrda +++|          SB2    B0+         INITIALIZE CHARACTER COUNT
00125  M00S00124.comcrda +++|          NG     X1,RDA6     IF POSSIBLY 10 SEMI-COLONS
00126  M00S00125.comcrda +++|          ZR     X1,RDA13    IF ZERO WORD SKIP UNPACKING
00127  M00S00126.comcrda +++|
00128  M00S00127.comcrda +++|*         UNPACK WORD TO WORKING BUFFER
00129  M00S00128.comcrda +++|
00130  M00S00129.comcrda +++| RDA6     LX1    6
00131  M00S00130.comcrda +++|          SB2    B2+B1       BUMP CHARACTER COUNT
00132  M00S00131.comcrda +++|          BX6    -X2*X1      PICK UP CHARACTER
00133  M00S00132.comcrda +++|          BX1    X2*X1       ERASE CHARACTER
00134  M00S00133.comcrda +++|          LX7    6
00135  M00S00134.comcrda +++|          BX6    X7+X6
00136  M00S00135.comcrda +++|          NZ     X7,RDA7     IF ESCAPE CODE PRESENT
00137  M00S00136.comcrda +++|          SX7    X6-76B
00138  M00S00137.comcrda +++|          ZR     X7,RDA8     IF ESCAPE 76 IS PRESENT
00139  M00S00138.comcrda +++|          SX7    X6-74B
00140  M00S00139.comcrda +++|          ZR     X7,RDA8     IF ESCAPE 74 IS PRESENT
00141  M00S00140.comcrda +++| RDA7     SA6    B6+
00142  M00S00141.comcrda +++|          SB6    B6+1
00143  M00S00142.comcrda +++|          EQ     B6,B7,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00144  M00S00143.comcrda +++|          SX6    0           CLEAR ESCAPE CHARACTER
00145  M00S00144.comcrda +++| RDA8     BX7    X6          USE NEW ESCAPE CODE
00146  M00S00145.comcrda +++|          NZ     X1,RDA6     IF MORE CHARACTERS IN THIS WORD
00147  M00S00146.comcrda +++|          SA7    RDAA        SAVE ESCAPE CODE FOR NEXT WORD
00148  M00S00147.comcrda +++|          SX6    B2-9
00149  M00S00148.comcrda +++|          EQ     RDA10
00150  M00S00149.comcrda +++|
00151  M00S00150.comcrda +++| RDA9     SA6    B6
00152  M00S00151.comcrda +++|          SB6    B6+B1
00153  M00S00152.comcrda +++|          EQ     B6,B7,RDA15 IF MAXIMUM CHARACTERS PROCESSED
00154  M00S00153.comcrda +++|          NZ     X1,RDA6     IF MORE CHARACTERS THIS WORD
00155  M00S00154.comcrda +++|          SX6    B2-9
00156  M00S00155.comcrda +++| RDA10    SB2    B0          RESET CHARACTER COUNT
00157  M00S00156.comcrda +++|          SB3    B3-B1       DECREMENT FREE BUFFER SPACE
00158  M00S00157.comcrda +++|          NG     X6,RDA15    IF END OF LINE
00159  M00S00158.comcrda +++|          ZR     B3,RDA12    IF FREE BUFFER SPACE EXHAUSTED
00160  M00S00159.comcrda +++|          SA1    B4          GET NEXT WORD TO BE UNPACKED
00161  M00S00160.comcrda +++|          SB4    B4+B1
00162  M00S00161.comcrda +++|          NG     X1,RDA11    IF POSSIBLY 10 SEMI-COLONS
00163  M00S00162.comcrda +++|          ZR     X1,RDA15    IF ZERO WORD, END OF LINE
00164  M00S00163.comcrda +++| RDA11    NZ     X6,RDA6     IF WORD COMPLETLY PROCESSED
00165  M00S00164.comcrda +++|          EQ     RDA9        PROCESS LAST CHARACTER
00166  M00S00165.comcrda +++|
00167  M00S00166.comcrda +++| RDA12    NZ     X6,RDA4     IF LAST CHARACTER PROCESSED
00168  M00S00167.comcrda +++|          SA6    B6          PROCESS LAST CHARACTER
00169  M00S00168.comcrda +++|          SB6    B6+B1
00170  M00S00169.comcrda +++|          EQ     RDA4
00171  M00S00170.comcrda +++|
00172  M00S00171.comcrda +++| RDA13    SB2    X4
00173  M00S00172.comcrda +++|          NE     B6,B2,RDA14 IF AT LEAST 1 CHARACTER IN WORKING BUFFER
00174  M00S00173.comcrda +++|          SX6    1R          ASSURE 1 BLANK IN STRING BUFFER
00175  M00S00174.comcrda +++|          SB6    B2+B1
00176  M00S00175.comcrda +++|          SA6    B2
00177  M00S00176.comcrda +++| RDA14    SA1    B6-B1       CHECK LAST CHARACTER IN BUFFER
00178  M00S00177.comcrda +++|          NZ     X1,RDA15    IF NOT BEGINNING OF END OF LINE
00179  M00S00178.comcrda +++|          SB6    B6-1        ERASE CHARACTER
00180  M00S00179.comcrda +++|
00181  M00S00180.comcrda +++|*         SEARCH FOR END OF LINE
00182  M00S00181.comcrda +++|
00183  M00S00182.comcrda +++| RDA15    SA1    B4-1        READ LAST WORD PROCESSED
00184  M00S00183.comcrda +++|          MX7    -12
00185  M00S00184.comcrda +++|          BX7    -X7*X1      CHECK FOR END OF LINE
00186  M00S00185.comcrda +++|          SB3    B3-1        DECREMENT FREE BUFFER SPACE
00187  M00S00186.comcrda +++|          NZ     X7,RDA4     IF END OF LINE NOT FOUND
00188  M00S00187.comcrda +++|          NE     B4,B5,RDA16 IF OUT .NE. LIMIT
00189  M00S00188.comcrda +++|          SB4    X3+         OUT .EQ. FIRST
00190  M00S00189.comcrda +++| RDA16    SA1    A3+B1       RESET IN
00191  M00S00190.comcrda +++|          SB2    X4          FWA WORKING BUFFER
00192  M00S00191.comcrda +++|          SB3    X1+         (B3) = IN
00193  M00S00192.comcrda +++|          GE     B6,B2,=XRDX=
00194  M00S00193.comcrda +++|          SB6    B2+
00195  M00S00194.comcrda +++|          EQ     =XRDX=      EXIT
00196  M00S00195.comcrda +++|
00197  M00S00196.comcrda +++| RDAA     DATA   0           ESCAPE CODE TEMPORARY STORAGE
00198  M00S00197.comcrda +++|
00199  M00S00198.comcrda +++|          SPACE  4
00200  M00S00199.comcrda +++|          BASE   *
00201  M00S00200.comcrda +++| QUAL$    IF     -DEF,QUAL$
00202  M00S00201.comcrda +++|          QUAL   *
00203  M00S00202.comcrda +++| RDA=     EQU    /COMCRDA/RDA=
00204  M00S00203.comcrda +++| QUAL$    ENDIF
00205  M00S00204.comcrda +++|          ENDX
cdc/nos2.source/opl.opl871/common/comcrda.txt ยท Last modified: (external edit)