User Tools

Site Tools


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

Common COMCRDA

1 Modification

Source

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
cdc/nos2.source/opl.opl871/common/comcrda.txt ยท Last modified: by 127.0.0.1