User Tools

Site Tools


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

Common COMCWTS

1 Modification

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M01S00001.comcwts +++|          CTEXT  COMCWTS - WRITE CODED LINE FROM STRING BUFFER.
00002  M01S00002.comcwts +++| WTS      SPACE  4
00003  M01S00003.comcwts +++|          IF     -DEF,QUAL$,1
00004  M01S00004.comcwts +++|          QUAL   COMCWTS
00005  M01S00005.comcwts +++|          BASE   D
Line S00006 Modification History
M01 (Added by) comcwts
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.comcwts +++| WTS      SPACE  4
00009  M01S00008.comcwts +++|***       WTS - WRITE CODED LINE FROM STRING BUFFER.
00010  M01S00009.comcwts +++|*         R. S. HORECK.      71/05/19.
00011  M01S00010.comcwts +++|*         S. R. MCPHERSON.   74/09/30.
00012  M01S00011.comcwts +++| WTS      SPACE  4
00013  M01S00012.comcwts +++|***              WTS TRANSFERS 1 CODED LINE FROM A STRING BUFFER TO
00014  M01S00013.comcwts +++|*         A CIO BUFFER WITH TRAILING SPACE SUPPRESSION.
00015  M01S00014.comcwts +++|*         CHARACTERS IN THE WORKING BUFFER ARE PACKED AND STORED IN
00016  M01S00015.comcwts +++|*         THE CIRCULAR BUFFER.
00017  M01S00016.comcwts +++|*         IF THE BUFFER BECOMES SUFFICIENTLY FULL TO REQUIRE WRITING,
00018  M01S00017.comcwts +++|*         WTS WILL PERFORM A *WRITE* FUNCTION UNLESS THE SYMBOL *WRIF$*
00019  M01S00018.comcwts +++|*         IS DEFINED. IN THIS CASE, THE CIO FUNCTION THAT IS IN THE FET
00020  M01S00019.comcwts +++|*         WILL BE RE-ISSUED.
00021  M01S00020.comcwts +++|*
00022  M01S00021.comcwts +++|*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.
00023  M01S00022.comcwts +++|*                (B6) = FWA WORKING BUFFER.
00024  M01S00023.comcwts +++|*                (B7) = WORD COUNT OF WORKING BUFFER.
00025  M01S00024.comcwts +++|*                IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.
00026  M01S00025.comcwts +++|*
00027  M01S00026.comcwts +++|*         EXIT   (X2) = ADDRESS OF FET FOR FILE.
00028  M01S00027.comcwts +++|*                (B6) = WORD COUNT OF DATA WRITTEN.
00029  M01S00028.comcwts +++|*
00030  M01S00029.comcwts +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00031  M01S00030.comcwts +++|*                B - 1, 2, 3, 4, 5, 6, 7.
00032  M01S00031.comcwts +++|*                A - 1, 2, 3, 4, 6, 7.
00033  M01S00032.comcwts +++|*
00034  M01S00033.comcwts +++|*         CALLS  DCB=, WTX=.
00035  M01S00034.comcwts +++|
00036  M01S00035.comcwts +++|
00037  M01S00036.comcwts +++| +        EQ     WTS3        ENTRY FROM DCB= ON A WRITE REQUEST
00038  M01S00037.comcwts +++|
00039  M01S00038.comcwts +++| WTS=     PS                 ENTRY/EXIT
00040  M01S00039.comcwts +++|          SA4    WTS=
00041  M01S00040.comcwts +++|          ZR     B7,WTS=     IF WORKING BUFFER EMPTY
00042  M01S00041.comcwts +++|
00043  M01S00042.comcwts +++|          IF     -DEF,B1=1,1
00044  M01S00043.comcwts +++|          SB1    1
00045  M01S00044.comcwts +++|
00046  M01S00045.comcwts +++|          SA1    X2+4        (B5) = LIMIT
00047  M01S00046.comcwts +++|          SB4    B6+B7
00048  M01S00047.comcwts +++|          SB5    X1
00049  M01S00048.comcwts +++|          SX7    1R
00050  M01S00049.comcwts +++|          SA1    B4-B1       READ LAST CHARACTER
00051  M01S00050.comcwts +++|          SB2    B1+B1       (2)
00052  M01S00051.comcwts +++| WTS1     BX6    X1-X7       CHECK FOR BLANKS
00053  M01S00052.comcwts +++|          SA1    A1-B1       DECREMENT CHARACTER POSITION
00054  M01S00053.comcwts +++|          ZR     X6,WTS1     IF BLANK
00055  M01S00054.comcwts +++|          SB7    A1+B2       (B7) = LWA + 1
00056  M01S00055.comcwts +++|          LT     B6,B7,WTS2  IF NOT TO PAST START OF BUFFER
00057  M01S00056.comcwts +++|          SB7    B6+B1
00058  M01S00057.comcwts +++| WTS2     SA3    X2+1        (A3) = ADDRESS OF FIRST
00059  M01S00058.comcwts +++|          SX4    0           (X4) = WORD COUNT TRANSFERED TO BUFFER
00060  M01S00059.comcwts +++|
00061  M01S00060.comcwts +++|*         INITIALIZE REGISTERS FOR TRANSFER.
00062  M01S00061.comcwts +++|
00063  M01S00062.comcwts +++| WTS3     SA1    A3-B1       SAVE FET STATUS
00064  M01S00063.comcwts +++|          SA2    A3+B1       (X2) = IN
00065  M01S00064.comcwts +++|          BX6    X1
00066  M01S00065.comcwts +++|          SA1    A2+B1       OUT
00067  M01S00066.comcwts +++|          SA6    WTSA
00068  M01S00067.comcwts +++|          SB3    X2+B1       (B3) = IN+1
00069  M01S00068.comcwts +++|          SB4    X1
00070  M01S00069.comcwts +++|          SX6    B4-B3       OUT - IN+1
00071  M01S00070.comcwts +++|          PL     X6,WTS4     IF OUT \ IN+1
00072  M01S00071.comcwts +++|          SX6    B5-B3       LIMIT - IN+1
00073  M01S00072.comcwts +++| WTS4     SB4    X6          (B4) = FREE BUFFER SPACE
00074  M01S00073.comcwts +++|          SX3    X2          (X3) = IN
00075  M01S00074.comcwts +++|          NZ     X6,WTS6     IF SPACE AVAILABLE
00076  M01S00075.comcwts +++|
00077  M01S00076.comcwts +++|*         PROCESS EXHAUSTED FREE BUFFER SPACE.
00078  M01S00077.comcwts +++|
00079  M01S00078.comcwts +++| WTS5     SA1    WTSA        GET FET STATUS
00080  M01S00079.comcwts +++|          SA2    A3+B1       (A2) = ADDRESS OF IN
00081  M01S00080.comcwts +++|          SB2    X1          (B2) = FET STATUS
00082  M01S00081.comcwts +++|          SX2    X3          (X2) = IN
00083  M01S00082.comcwts +++|          NE     B3,B5,=XDCB=  IF IN+1 " LIMIT
00084  M01S00083.comcwts +++|          SA1    A3          (X1) = FIRST
00085  M01S00084.comcwts +++|          SX6    X1
00086  M01S00085.comcwts +++|          SA1    A3-B1       FET+0
00087  M01S00086.comcwts +++|          SB2    X1          (B2) = FET STATUS
00088  M01S00087.comcwts +++|          SA1    A2+B1       OUT
00089  M01S00088.comcwts +++|          IX7    X1-X6       OUT - IN+1
00090  M01S00089.comcwts +++|          SB3    X6          IN+1 = FIRST
00091  M01S00090.comcwts +++|          ZR     X7,=XDCB=   IF IN+1 = OUT
00092  M01S00091.comcwts +++|          SB4    X7          (B4) = FREE BUFFER SPACE
00093  M01S00092.comcwts +++|
00094  M01S00093.comcwts +++|*         CHECK ASSEMBLY BUFFER.
00095  M01S00094.comcwts +++|
00096  M01S00095.comcwts +++| WTS6     SB2    B6+10       SET LAST CHARACTER
00097  M01S00096.comcwts +++|          MX6    0           CLEAR ASSEMBLY
00098  M01S00097.comcwts +++|          SA1    B6          GET FIRST CHARACTER
00099  M01S00098.comcwts +++|          LT     B7,B2,WTS8  IF ASSEMBLY OVERRUNS WORKING BUFFER
00100  M01S00099.comcwts +++|          SA2    A1+B1       GET SECOND CHARACTER
00101  M01S00100.comcwts +++|          SB6    A2+B1       INCREMENT CHARACTER ADDRESS
00102  M01S00101.comcwts +++|
00103  M01S00102.comcwts +++|
00104  M01S00103.comcwts +++|*         ASSEMBLE WORD.
00105  M01S00104.comcwts +++|
00106  M01S00105.comcwts +++| WTS7     LX1    6           POSITION ODD CHARACTER
00107  M01S00106.comcwts +++|          SB6    B6+2        ADVANCE CHARACTER ADDRESS
00108  M01S00107.comcwts +++|          BX6    X6+X1       ASSEMBLE CHARACTER
00109  M01S00108.comcwts +++|          SA1    A2+B1       GET NEXT ODD CHARACTER
00110  M01S00109.comcwts +++|          BX6    X6+X2       ASSEMBLE CHARACTER
00111  M01S00110.comcwts +++|          SA2    A1+B1       GET NEXT EVEN CHARACTER
00112  M01S00111.comcwts +++|          LX6    12          POSITION ASSEMBLY
00113  M01S00112.comcwts +++|          NE     B6,B2,WTS7  LOOP FOR 10 CHARACTERS
00114  M01S00113.comcwts +++|          LX1    6           POSITION 9TH CHARACTER
00115  M01S00114.comcwts +++|          BX6    X6+X2       ASSEMBLE CHARACTER
00116  M01S00115.comcwts +++|          SB3    B3+B1       IN+1 = IN+1 + 1
00117  M01S00116.comcwts +++|          BX6    X6+X1       ASSEMBLE CHARACTER
00118  M01S00117.comcwts +++|          SB4    B4-B1       DECREMENT FREE BUFFER SPACE
00119  M01S00118.comcwts +++|          SA6    X3          STORE WORD
00120  M01S00119.comcwts +++|          SX4    X4+B1       COUNT WORD
00121  M01S00120.comcwts +++|          SX3    B3-B1       IN = IN+1
00122  M01S00121.comcwts +++|          NZ     B4,WTS6     LOOP TO LAST CHARACTER OF FULL BUFFER
00123  M01S00122.comcwts +++|          EQ     WTS5        CHECK BUFFER POINTERS
00124  M01S00123.comcwts +++|
00125  M01S00124.comcwts +++|*         PROCESS LAST .LE. 9 CHARACTERS
00126  M01S00125.comcwts +++|
00127  M01S00126.comcwts +++| WTS8     SX7    0           SET ADD-ON CHARACTER
00128  M01S00127.comcwts +++|          SB2    54          (B2) = SHIFT COUNT
00129  M01S00128.comcwts +++|          EQ     B6,B7,WTS10 IF WORKING BUFFER EMPTY
00130  M01S00129.comcwts +++|          SX2    B7-B6       SET CHARACTER COUNT REMAINING
00131  M01S00130.comcwts +++|          LX2    59-0        CHECK FOR ODD OR EVEN CHARACTER COUNT
00132  M01S00131.comcwts +++|          PL     X2,WTS9     IF EVEN CHARACTER COUNT
00133  M01S00132.comcwts +++|          SX7    1R
00134  M01S00133.comcwts +++| WTS9     LX1    X1,B2       POSITION CHARACTER
00135  M01S00134.comcwts +++|          SB6    B6+B1       ADVANCE CHARACTER ADDRESS
00136  M01S00135.comcwts +++|          SB2    B2-6        DECREMENT SHIFT COUNT
00137  M01S00136.comcwts +++|          BX6    X6+X1       ASSEMBLE CHARACTER
00138  M01S00137.comcwts +++|          SA1    B6          GET NEXT CHARACTER
00139  M01S00138.comcwts +++|          NE     B6,B7,WTS9  LOOP TO END OF BUFFER
00140  M01S00139.comcwts +++|
00141  M01S00140.comcwts +++|*         PROCESS LAST WORD.
00142  M01S00141.comcwts +++|
00143  M01S00142.comcwts +++| WTS10    NZ     X7,WTS11    IF ODD NUMBER OF CHARACTERS
00144  M01S00143.comcwts +++|          ZR     B2,WTS11    IF WORD FULL
00145  M01S00144.comcwts +++|          SA1    A1-1        GET LAST CHARACTER IN BUFFER
00146  M01S00145.comcwts +++|          NZ     X1,WTS11    IF NOT *00* CHARACTER
00147  M01S00146.comcwts +++|          SX7    2R          PRESERVE *00* CHARACTER WITH *  *
00148  M01S00147.comcwts +++|          SB2    B2-6        REVISE SHIFT COUNT
00149  M01S00148.comcwts +++| WTS11    LX7    X7,B2       ADD LAST CHARACTER(S)
00150  M01S00149.comcwts +++|          SA2    A3+B1       SET (A2) = IN
00151  M01S00150.comcwts +++|          MX1    -12
00152  M01S00151.comcwts +++|          BX6    X6+X7
00153  M01S00152.comcwts +++|          SX4    X4+B1       COUNT WORD
00154  M01S00153.comcwts +++|          SA6    X3          STORE LAST WORD
00155  M01S00154.comcwts +++|          BX7    -X1*X6
00156  M01S00155.comcwts +++|          SX2    B3          IN = IN+1
00157  M01S00156.comcwts +++|          SB6    X4          SET WORD COUNT TRANSFERRED
00158  M01S00157.comcwts +++|          SA3    A3          (X3) = FIRST
00159  M01S00158.comcwts +++|          ZR     X7,WTS13    IF VALID END OF LINE, EXIT
00160  M01S00159.comcwts +++|          SB3    B3+B1       ADVANCE IN+1
00161  M01S00160.comcwts +++|          SB4    B4-B1       DECREMENT FREE BUFFER SPACE
00162  M01S00161.comcwts +++|          MX1    -6
00163  M01S00162.comcwts +++|          BX1    -X1*X7      GET LAST CHARACTER
00164  M01S00163.comcwts +++|          SX3    X2+         (X3) = IN
00165  M01S00164.comcwts +++|          SB6    B7+         RESET CHARACTER POSITION
00166  M01S00165.comcwts +++|          ZR     B4,WTS5     IF FREE SPACE EXHAUSTED
00167  M01S00166.comcwts +++|          SX6    B0+
00168  M01S00167.comcwts +++|          NZ     X1,WTS12    IF NOT *00* CHARACTER
00169  M01S00168.comcwts +++|          SX6    2R          PRESERVE *00* CHARACTER WITH *  *
00170  M01S00169.comcwts +++| WTS12    LX6    48
00171  M01S00170.comcwts +++|          SB6    X4+B1       RESET WORD COUNT
00172  M01S00171.comcwts +++|          SA6    X2
00173  M01S00172.comcwts +++|          SX2    B3          IN=IN+1
00174  M01S00173.comcwts +++| WTS13    SA1    A2+B1       SET OUT
00175  M01S00174.comcwts +++|          SB4    X1
00176  M01S00175.comcwts +++|          EQ     =XWTX=      EXIT
00177  M01S00176.comcwts +++|
00178  M01S00177.comcwts +++|
00179  M01S00178.comcwts +++| WTSA     CON    0           FET STATUS PRIOR TO READING OUT
00180  M01S00179.comcwts +++|          SPACE  4
00181  M01S00180.comcwts +++|          BASE   *
00182  M01S00181.comcwts +++| QUAL$    IF     -DEF,QUAL$
00183  M01S00182.comcwts +++|          QUAL   *
00184  M01S00183.comcwts +++| WTS=     EQU    /COMCWTS/WTS=
00185  M01S00184.comcwts +++| QUAL$    ENDIF
00186  M01S00185.comcwts +++|          ENDX
cdc/nos2.source/opl.opl871/common/comcwts.txt · Last modified: by 127.0.0.1