Common COMCWTW

Library Member Format: MODIFY

Source

Seq #  *Modification Id* Act 
----------------------------+
00001  M00S00001.comcwtw +++|          CTEXT  COMCWTW - WRITE WORDS FROM WORKING BUFFER.
00002  M00S00002.comcwtw +++| WTW      SPACE  4
00003  M00S00003.comcwtw +++|          IF     -DEF,QUAL$,1
00004  M00S00004.comcwtw +++|          QUAL   COMCWTW
00005  M00S00005.comcwtw +++|          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.comcwtw +++| WTW      SPACE  4
00009  M00S00008.comcwtw +++|***       WTW - WRITE WORDS FROM WORKING BUFFER.
00010  M00S00009.comcwtw +++|*         D. A. CAHLANDER.   70/11/29.
00011  M00S00010.comcwtw +++|*         R. E. TATE.        73/11/04.
00012  M00S00011.comcwtw +++| WTW      SPACE  4
00013  M00S00012.comcwtw +++|***              WTW TRANSFERS DATA FROM A WORKING BUFFER TO A CIO
00014  M00S00013.comcwtw +++|*         BUFFER.  THIS DECK ALSO CONTAINS DCB=, AND WTX=.
00015  M00S00014.comcwtw +++|*         IF THE BUFFER BECOMES SUFFICIENTLY FULL TO REQUIRE WRITING,
00016  M00S00015.comcwtw +++|*         THE THRESHOLD CONDITION TO ISSUE WRITE FUNCTIONS
00017  M00S00016.comcwtw +++|*         IS BUFFER HALF FULL FOR BUFFERS LARGER
00018  M00S00017.comcwtw +++|*         THAN 511 DECIMAL WORDS, AND BUFFER TOTALLY
00019  M00S00018.comcwtw +++|*         FULL FOR SMALLER BUFFERS.  IF THE SYMBOL
00020  M00S00019.comcwtw +++|*         WTX$ IS DEFINED, THEN THE THRESHOLD IS
00021  M00S00020.comcwtw +++|*         BUFFER FULL FOR ALL BUFFER SIZES.
00022  M00S00021.comcwtw +++|*         WTW WILL PERFORM A *WRITE* FUNCTION UNLESS THE SYMBOL *WRIF$*
00023  M00S00022.comcwtw +++|*         IS DEFINED. IN THIS CASE, THE CIO FUNCTION THAT IS IN THE FET
00024  M00S00023.comcwtw +++|*         WILL BE REISSUED.  A *WRITEW* REQUEST MAY READ DATA FROM
00025  M00S00024.comcwtw +++|*         BEYOND THE END OF THE WORKING BUFFER, THUS CAUSING AN ABORT
00026  M00S00025.comcwtw +++|*         IF THE LAST WORD ADDRESS OF THE BUFFER IS WITHIN 4 WORDS OF
00027  M00S00026.comcwtw +++|*         FL.
00028  M00S00027.comcwtw +++|*
00029  M00S00028.comcwtw +++|*         WHEN CALLING CIO= FROM THIS ROUTINE B6 AND B7
00030  M00S00029.comcwtw +++|*         MUST CONTAIN WORKING STORAGE BUFFER ADDRESS,
00031  M00S00030.comcwtw +++|*         AND NUMBER OF WORDS TO TRANSFER RESPECTIVELY
00032  M00S00031.comcwtw +++|*         AS ERROR PROCESSING ROUTINES DEPEND UPON
00033  M00S00032.comcwtw +++|*         THESE REGISTERS.
00034  M00S00033.comcwtw +++|*
00035  M00S00034.comcwtw +++|*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.
00036  M00S00035.comcwtw +++|*                (B6) = FWA WORKING BUFFER.
00037  M00S00036.comcwtw +++|*                (B7) = WORD COUNT OF WORKING BUFFER.
00038  M00S00037.comcwtw +++|*                IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.
00039  M00S00038.comcwtw +++|*
00040  M00S00039.comcwtw +++|*         EXIT   (X2) = ADDRESS OF FET FOR FILE.
00041  M00S00040.comcwtw +++|*                (B6) = ADDRESS OF NEXT WORD TO BE TRANSFERRED FROM
00042  M00S00041.comcwtw +++|*                       WORKING BUFFER.
00043  M00S00042.comcwtw +++|*                (B7) = 0 IF TRANSFER COMPLETE.
00044  M00S00043.comcwtw +++|*                     = REMAINING WORD COUNT IF *CIO=* WAS CALLED TO
00045  M00S00044.comcwtw +++|*                       WRITE DATA AND RETURNED AN ERROR STATUS.
00046  M00S00045.comcwtw +++|*                (X7) = ERROR STATUS IF (B7) .NE. 0.
00047  M00S00046.comcwtw +++|*
00048  M00S00047.comcwtw +++|*         USES   X - 1, 2, 3, 4, 6, 7.
00049  M00S00048.comcwtw +++|*                B - 1, 2, 3, 4, 5, 6, 7.
00050  M00S00049.comcwtw +++|*                A - 1, 2, 3, 4, 6, 7.
00051  M00S00050.comcwtw +++|*
00052  M00S00051.comcwtw +++|*         CALLS  CIO=.
00053  M00S00052.comcwtw +++|
00054  M00S00053.comcwtw +++|
00055  M00S00054.comcwtw +++| WTW18    SX6    B3+B4       ADVANCE IN
00056  M00S00055.comcwtw +++|          SB3    B3+B4
00057  M00S00056.comcwtw +++|          SB6    B6+B4
00058  M00S00057.comcwtw +++|          SB7    B7-B4
00059  M00S00058.comcwtw +++|          NE     B3,B5,WTW19 IF IN " LIMIT
00060  M00S00059.comcwtw +++|          SA1    X2+B1       IN = FIRST
00061  M00S00060.comcwtw +++|          SX6    X1
00062  M00S00061.comcwtw +++| WTW19    SA6    X2+2        UPDATE IN
00063  M00S00062.comcwtw +++|          NZ     B7,WTW1     IF NOT END OF TRANSFER
00064  M00S00063.comcwtw +++|
00065  M00S00064.comcwtw +++| WTW=     PS                 ENTRY/EXIT
00066  M00S00065.comcwtw +++| WTW1     SA1    X2+3        (B4) = OUT
00067  M00S00066.comcwtw +++|          SA3    X2+2        (B3) = IN
00068  M00S00067.comcwtw +++|          IF     -DEF,B1=1,1
00069  M00S00068.comcwtw +++|          SB1    1
00070  M00S00069.comcwtw +++|          SA4    A1+B1       (B5) = LIMIT
00071  M00S00070.comcwtw +++|          ZR     B7,WTW=     IF WORKING BUFFER EMPTY
00072  M00S00071.comcwtw +++|          SB4    X1
00073  M00S00072.comcwtw +++|          SA1    X2+B1       (B2) = FIRST
00074  M00S00073.comcwtw +++|          SB3    X3
00075  M00S00074.comcwtw +++|          SB5    X4
00076  M00S00075.comcwtw +++|          SB2    X1
00077  M00S00076.comcwtw +++|          SA1    B6          READ FIRST WORD
00078  M00S00077.comcwtw +++|          NE     B2,B4,WTW2  IF OUT " FIRST
00079  M00S00078.comcwtw +++|          SB4    B5
00080  M00S00079.comcwtw +++| WTW2     LT     B3,B4,WTW3  IF NO END AROUND
00081  M00S00080.comcwtw +++|          SB4    B5+1
00082  M00S00081.comcwtw +++| WTW3     SB4    B4-B1       CALCULATE FREE DATA SPACE
00083  M00S00082.comcwtw +++|          SB4    B4-B3       (B4) = TRANSFER LENGTH
00084  M00S00083.comcwtw +++|          ZR     B4,WTW13    IF NO ROOM
00085  M00S00084.comcwtw +++|          BX7    X1
00086  M00S00085.comcwtw +++|          LE     B4,B7,WTW4  IF NOT ENOUGH ROOM
00087  M00S00086.comcwtw +++|          SB4    B7
00088  M00S00087.comcwtw +++|
00089  M00S00088.comcwtw +++|*         INITIALIZE REGISTERS FOR TRANSFER.
00090  M00S00089.comcwtw +++|
00091  M00S00090.comcwtw +++| WTWA     BSS    0
00092  M00S00091.comcwtw +++| WTW4     SA3    WTWC        PRESET CMU CODE AND VOID STACK
00093  M00S00092.comcwtw +++|          RJ     WTW16
00094  M00S00093.comcwtw +++|*         SA1    A1+B1       (NO CMU)
00095  M00S00094.comcwtw +++|*         SX4    B4-B1       (NO CMU)
00096  M00S00095.comcwtw +++|*         MX6    -3          (NO CMU)
00097  M00S00096.comcwtw +++|*         SA7    B3          (NO CMU)
00098  M00S00097.comcwtw +++|*
00099  M00S00098.comcwtw +++|*         GT     B4,B1,WTW14  IF MORE THAN 1 WORD  (CMU)
00100  M00S00099.comcwtw +++|*         BX4    X4-X4       (CMU)
00101  M00S00100.comcwtw +++|*         SA7    B3          (CMU)
00102  M00S00101.comcwtw +++|
00103  M00S00102.comcwtw +++| WTW5     BX3    -X6*X4      NUMBER OF ODD WORDS
00104  M00S00103.comcwtw +++|          AX4    3           NUMBER OF BLOCKS
00105  M00S00104.comcwtw +++|          ZR     X3,WTW7     IF NO ODD WORDS
00106  M00S00105.comcwtw +++|
00107  M00S00106.comcwtw +++|*         TRANSFER UP TO 7 WORDS.
00108  M00S00107.comcwtw +++|
00109  M00S00108.comcwtw +++| WTW6     SX3    X3-1
00110  M00S00109.comcwtw +++|          BX7    X1
00111  M00S00110.comcwtw +++|          SA1    A1+B1
00112  M00S00111.comcwtw +++|          SA7    A7+B1
00113  M00S00112.comcwtw +++|          NZ     X3,WTW6     LOOP
00114  M00S00113.comcwtw +++|
00115  M00S00114.comcwtw +++|*         PRE-READ REGISTERS.
00116  M00S00115.comcwtw +++|
00117  M00S00116.comcwtw +++| WTW7     ZR     X4,WTW18    IF NO BLOCKS
00118  M00S00117.comcwtw +++|          SB5    X2          (B5) = FET ADDRESS
00119  M00S00118.comcwtw +++|          SA2    A1+B1
00120  M00S00119.comcwtw +++|          SB2    B1+B1       (B2) = 2
00121  M00S00120.comcwtw +++|          SA3    A2+B1
00122  M00S00121.comcwtw +++|          SB3    X4          (B3) = BLOCK COUNT
00123  M00S00122.comcwtw +++|          SA4    A3+B1
00124  M00S00123.comcwtw +++|
00125  M00S00124.comcwtw +++|*         TRANSFER 8 WORD BLOCKS.
00126  M00S00125.comcwtw +++|
00127  M00S00126.comcwtw +++| WTW8     BX6    X1
00128  M00S00127.comcwtw +++|          LX7    X2
00129  M00S00128.comcwtw +++|          SA1    A3+B2
00130  M00S00129.comcwtw +++|          SA2    A4+B2
00131  M00S00130.comcwtw +++|          SA6    A7+B1
00132  M00S00131.comcwtw +++|          SB3    B3-B1
00133  M00S00132.comcwtw +++|          SA7    A6+B1
00134  M00S00133.comcwtw +++|          BX6    X3
00135  M00S00134.comcwtw +++|          LX7    X4
00136  M00S00135.comcwtw +++|          SA3    A1+B2
00137  M00S00136.comcwtw +++|          SA4    A2+B2
00138  M00S00137.comcwtw +++|          SA6    A6+B2
00139  M00S00138.comcwtw +++|          SA7    A7+B2
00140  M00S00139.comcwtw +++|          BX6    X1
00141  M00S00140.comcwtw +++|          LX7    X2
00142  M00S00141.comcwtw +++|          SA1    A3+B2
00143  M00S00142.comcwtw +++|          SA2    A4+B2
00144  M00S00143.comcwtw +++|          SA6    A6+B2
00145  M00S00144.comcwtw +++|          SA7    A7+B2
00146  M00S00145.comcwtw +++|          BX6    X3
00147  M00S00146.comcwtw +++|          LX7    X4
00148  M00S00147.comcwtw +++|          SA3    A1+B2
00149  M00S00148.comcwtw +++|          SA4    A2+B2
00150  M00S00149.comcwtw +++|          SA6    A6+B2
00151  M00S00150.comcwtw +++|          SA7    A7+B2
00152  M00S00151.comcwtw +++|          NZ     B3,WTW8     LOOP
00153  M00S00152.comcwtw +++|
00154  M00S00153.comcwtw +++|*         WRITE EXIT.
00155  M00S00154.comcwtw +++|
00156  M00S00155.comcwtw +++|          SA3    B5+B2       READ IN
00157  M00S00156.comcwtw +++|          SA1    A3+B2       (B5) = LIMIT
00158  M00S00157.comcwtw +++|          SX2    B5
00159  M00S00158.comcwtw +++|          SB5    X1
00160  M00S00159.comcwtw +++|          SA4    X2          CHECK BUFFER STATUS
00161  M00S00160.comcwtw +++| WTW9     SB6    B6+B4
00162  M00S00161.comcwtw +++|          SB7    B7-B4
00163  M00S00162.comcwtw +++|          SB3    X3+B4       ADVANCE IN
00164  M00S00163.comcwtw +++|          SX6    X3+B4
00165  M00S00164.comcwtw +++|          LX4    59-0
00166  M00S00165.comcwtw +++|          SA3    X2+B1       READ FIRST
00167  M00S00166.comcwtw +++|          NE     B3,B5,WTW10 IF IN " LIMIT
00168  M00S00167.comcwtw +++|          SX6    X3+         IN = FIRST
00169  M00S00168.comcwtw +++| WTX$     IF     DEF,WTX$
00170  M00S00169.comcwtw +++| WTW10    EQ     WTW19       CLEAN UP AND RETURN
00171  M00S00170.comcwtw +++| WTX$     ELSE
00172  M00S00171.comcwtw +++|
00173  M00S00172.comcwtw +++|*         TRY TO BUFFER AHEAD.
00174  M00S00173.comcwtw +++|
00175  M00S00174.comcwtw +++| WTW10    PL     X4,WTW19    IF BUFFER BUSY
00176  M00S00175.comcwtw +++|          SA1    X2+3        READ OUT
00177  M00S00176.comcwtw +++|          SA6    X2+2        STORE IN
00178  M00S00177.comcwtw +++|          SB2    X3          (LIMIT-FIRST)
00179  M00S00178.comcwtw +++|          IX6    X1-X6       (OUT-IN)
00180  M00S00179.comcwtw +++|          SX7    B5-B2
00181  M00S00180.comcwtw +++|          LX3    X6,B1       2*(OUT-IN)
00182  M00S00181.comcwtw +++|          AX6    60          SIGN OF (OUT-IN)
00183  M00S00182.comcwtw +++|          BX4    X6-X7       INVERT BUFFER IF IN \ OUT
00184  M00S00183.comcwtw +++|          IX6    X4-X3       BUFFER SIZE - 2*(OUT-IN)
00185  M00S00184.comcwtw +++|          NG     X6,WTW12    IF BUFFER THRESHOLD NOT REACHED
00186  M00S00185.comcwtw +++|          AX7    9
00187  M00S00186.comcwtw +++|          ZR     X7,WTW12    IF BUFFER NOT BIG ENOUGH TO WRITE AHEAD
00188  M00S00187.comcwtw +++| WTX$     ENDIF
00189  M00S00188.comcwtw +++| WRIF$    IF     DEF,WRIF$
00190  M00S00189.comcwtw +++| WTW11    SA1    X2          RE-ISSUE CURRENT WRITE FUNCTION
00191  M00S00190.comcwtw +++|          SX6    774B
00192  M00S00191.comcwtw +++|          BX7    X6*X1
00193  M00S00192.comcwtw +++|          RJ     =XCIO=
00194  M00S00193.comcwtw +++| WRIF$    ELSE   1
00195  M00S00194.comcwtw +++| WTW11    WRITE  X2
00196  M00S00195.comcwtw +++|          NZ     X7,WTW=     IF ERROR IN LAST *CIO* REQUEST
00197  M00S00196.comcwtw +++| WTW12    NZ     B7,WTW1     IF NOT DONE
00198  M00S00197.comcwtw +++|          JP     WTW=        RETURN
00199  M00S00198.comcwtw +++|
00200  M00S00199.comcwtw +++|*         DUMP CIRCULAR BUFFER.
00201  M00S00200.comcwtw +++|
00202  M00S00201.comcwtw +++| WTW13    SA1    X2          CHECK BUFFER STATUS
00203  M00S00202.comcwtw +++|          LX1    59-0
00204  M00S00203.comcwtw +++|          NG     X1,WTW11    IF NOT BUSY
00205  M00S00204.comcwtw +++|          ZR     X1,WTW11    IF BLANK FET
00206  M00S00205.comcwtw +++|          RECALL
00207  M00S00206.comcwtw +++|          JP     WTW1        CONTINUE WRITE
00208  M00S00207.comcwtw +++|
00209  M00S00208.comcwtw +++|*         MOVE DATA WITH CMU.
00210  M00S00209.comcwtw +++|
00211  M00S00210.comcwtw +++| WTW14    SX4    B4-819
00212  M00S00211.comcwtw +++|          PL     X4,WTW15    IF TOO BIG FOR CMU
00213  M00S00212.comcwtw +++|          SX4    B4          10 * WORDS = CHARACTERS
00214  M00S00213.comcwtw +++|          LX6    X4,B1
00215  M00S00214.comcwtw +++|          BX1    X0          SAVE X0
00216  M00S00215.comcwtw +++|          LX4    3
00217  M00S00216.comcwtw +++|          IX6    X4+X6
00218  M00S00217.comcwtw +++|          SX7    B6          SET SOURCE ADDRESS
00219  M00S00218.comcwtw +++|          SX4    B3          SET DESTINATION ADDRESS
00220  M00S00219.comcwtw +++|          LX7    30
00221  M00S00220.comcwtw +++|          BX4    X4+X7
00222  M00S00221.comcwtw +++|          MX7    -4
00223  M00S00222.comcwtw +++|          BX3    X7*X6       EXTRACT UPPER PORTION
00224  M00S00223.comcwtw +++|          BX6    -X7*X6      EXTRACT LOWER PORTION
00225  M00S00224.comcwtw +++|          LX3    48-4
00226  M00S00225.comcwtw +++|          BX4    X4+X3
00227  M00S00226.comcwtw +++|          LX6    26
00228  M00S00227.comcwtw +++|          BX6    X4+X6
00229  M00S00228.comcwtw +++|          AX3    51
00230  M00S00229.comcwtw +++|          SA6    WTWC        STORE DESCRIPTOR WORD
00231  M00S00230.comcwtw +++|          IM     WTWC        MOVE DATA
00232  M00S00231.comcwtw +++|          BX0    X1          RESTORE X0
00233  M00S00232.comcwtw +++|          ZR     X3,WTW18    IF NO WRITE EXIT
00234  M00S00233.comcwtw +++|          SA4    X2
00235  M00S00234.comcwtw +++|          SX3    B3          RESET IN
00236  M00S00235.comcwtw +++|          JP     WTW9
00237  M00S00236.comcwtw +++|
00238  M00S00237.comcwtw +++| WTWB     BSS    0
00239  M00S00238.comcwtw +++| WTW15    SA1    A1+B1       MOVE DATA WITHOUT CMU
00240  M00S00239.comcwtw +++|          SX4    B4-B1
00241  M00S00240.comcwtw +++|          MX6    -3
00242  M00S00241.comcwtw +++|          SA7    B3
00243  M00S00242.comcwtw +++|          JP     WTW5
00244  M00S00243.comcwtw +++|
00245  M00S00244.comcwtw +++|*         CMU PRESET CODE.
00246  M00S00245.comcwtw +++|*         WWTC IS READ UP AND THEN RETURN JUMPED TO IN ORDER TO VOID
00247  M00S00246.comcwtw +++|*         STACK.  WWTC IS ALSO USED AS THE CMU DESCRIPTOR WORD
00248  M00S00247.comcwtw +++|
00249  M00S00248.comcwtw +++| WTWC     GT     B4,B1,WTW14 IF MORE THAN 1 WORD TO MOVE  (CMU)
00250  M00S00249.comcwtw +++|          BX4    X4-X4
00251  M00S00250.comcwtw +++|          SA7    B3
00252  M00S00251.comcwtw +++| WTW16    EQU    WTWC        USED TO VOID STACK
00253  M00S00252.comcwtw +++|
00254  M00S00253.comcwtw +++|*         PRESET FOR CMU CODE.
00255  M00S00254.comcwtw +++|
00256  M00S00255.comcwtw +++|          SA4    CMUR        CHECK IF CMU AVAIALABLE
00257  M00S00256.comcwtw +++|          SB4    WTWA
00258  M00S00257.comcwtw +++|          NG     X4,WTW17    IF CMU
00259  M00S00258.comcwtw +++|          SA3    WTWB
00260  M00S00259.comcwtw +++| WTW17    BX6    X3
00261  M00S00260.comcwtw +++|          SA6    B4
00262  M00S00261.comcwtw +++|          JP     WTW1
00263  M00S00262.comcwtw +++|
00264  M00S00263.comcwtw +++| WTX      SPACE  4
00265  M00S00264.comcwtw +++|**        WTX - WRITE EXIT.
00266  M00S00265.comcwtw +++|*         IF BUFFER IS BUSY, RETURN.
00267  M00S00266.comcwtw +++|*         OTHERWISE, WORD COUNT OF BUFFER IS CHECKED, AND A WRITE
00268  M00S00267.comcwtw +++|*         FUNCTION IS REQUESTED IF NECESSARY.
00269  M00S00268.comcwtw +++|*
00270  M00S00269.comcwtw +++|*         ENTRY  (A2) = ADDRESS OF IN.
00271  M00S00270.comcwtw +++|*                (A3) = ADDRESS OF FIRST.
00272  M00S00271.comcwtw +++|*                (A4) = RETURN ADDRESS.
00273  M00S00272.comcwtw +++|*                (B3) = IN+1.
00274  M00S00273.comcwtw +++|*                (B4) = OUT.
00275  M00S00274.comcwtw +++|*                (B5) = LIMIT.
00276  M00S00275.comcwtw +++|*                (X2) = IN
00277  M00S00276.comcwtw +++|*
00278  M00S00277.comcwtw +++|*         EXIT   TO RETURN ADDRESS.
00279  M00S00278.comcwtw +++|*
00280  M00S00279.comcwtw +++|*         CALLS  NONE.
00281  M00S00280.comcwtw +++|
00282  M00S00281.comcwtw +++|
00283  M00S00282.comcwtw +++| WTX=     SA1    A3-B1       CHECK BUFFER STATUS
00284  M00S00283.comcwtw +++|          SX6    X2          STORE IN
00285  M00S00284.comcwtw +++|          LX1    59
00286  M00S00285.comcwtw +++|          SA6    A2
00287  M00S00286.comcwtw +++| WTX$     IF     -DEF,WTX$
00288  M00S00287.comcwtw +++|          PL     X1,WTX1     IF BUFFER BUSY
00289  M00S00288.comcwtw +++|
00290  M00S00289.comcwtw +++|*         IF BUFFER IS NOT BUSY, CHECK SIZE OF BUFFER.
00291  M00S00290.comcwtw +++|*         ISSUE WRITE IF THRESHOLD IS REACHED.
00292  M00S00291.comcwtw +++|
00293  M00S00292.comcwtw +++|          SA1    A2+B1       REREAD OUT
00294  M00S00293.comcwtw +++|          SA3    A3          FIRST
00295  M00S00294.comcwtw +++|          SB4    X1
00296  M00S00295.comcwtw +++|          SX6    B4-B3       (OUT-IN+1)
00297  M00S00296.comcwtw +++|          SB2    X3          (LIMIT-FIRST)
00298  M00S00297.comcwtw +++|          LX3    X6,B1       2*(OUT-IN+1)
00299  M00S00298.comcwtw +++|          SX7    B5-B2
00300  M00S00299.comcwtw +++|          AX6    60          SIGN OF (OUT-IN+1)
00301  M00S00300.comcwtw +++|          BX4    X6-X7       INVERT BUFFER IF IN+1 \ OUT
00302  M00S00301.comcwtw +++|          IX6    X4-X3       BUFFER SIZE - 2*(OUT-IN+1)
00303  M00S00302.comcwtw +++|          NG     X6,WTX1     IF BUFFER THRESHOLD NOT REACHED
00304  M00S00303.comcwtw +++|          AX7    9
00305  M00S00304.comcwtw +++|          ZR     X7,WTX1     IF BUFFER NOT BIG ENOUGH TO WRITE AHEAD
00306  M00S00305.comcwtw +++| WRIF$    IF     DEF,WRIF$
00307  M00S00306.comcwtw +++|          SA1    A3-B1       RE-ISSUE CURRENT WRITE FUNCTION
00308  M00S00307.comcwtw +++|          SX6    774B
00309  M00S00308.comcwtw +++|          BX7    X6*X1
00310  M00S00309.comcwtw +++|          SX2    A1          SET FET ADDRESS
00311  M00S00310.comcwtw +++|          RJ     =XCIO=
00312  M00S00311.comcwtw +++| WRIF$    ELSE   1
00313  M00S00312.comcwtw +++|          WRITE  A3-B1
00314  M00S00313.comcwtw +++|
00315  M00S00314.comcwtw +++| WTX$     ENDIF
00316  M00S00315.comcwtw +++| WTX1     SB2    A4          SET RETURN ADDRESS
00317  M00S00316.comcwtw +++|          SX2    A3-B1       RESET (X2)
00318  M00S00317.comcwtw +++|          JP     B2          RETURN
00319  M00S00318.comcwtw +++| DCB      SPACE  4
00320  M00S00319.comcwtw +++|**        DCB - DUMP CIRCULAR BUFFER.
00321  M00S00320.comcwtw +++|*         IF BUFFER IS BUSY, RECALL AND RETURN.
00322  M00S00321.comcwtw +++|*         IF BUFFER IS NOT BUSY, REQUEST WRITE FUNCTION AND RETURN.
00323  M00S00322.comcwtw +++|*
00324  M00S00323.comcwtw +++|*         ENTRY  (A2) = ADDRESS OF IN.
00325  M00S00324.comcwtw +++|*                (A3) = ADDRESS OF FIRST.
00326  M00S00325.comcwtw +++|*                (A4) = RETURN ADDRESS.
00327  M00S00326.comcwtw +++|*                (B2) = FET STATUS READ PRIOR TO READ OF OUT.
00328  M00S00327.comcwtw +++|*                (X2) = IN.
00329  M00S00328.comcwtw +++|*
00330  M00S00329.comcwtw +++|*         EXIT   TO RETURN ADDRESS - 1.
00331  M00S00330.comcwtw +++|*                (X2) = FET ADDRESS.
00332  M00S00331.comcwtw +++|
00333  M00S00332.comcwtw +++|
00334  M00S00333.comcwtw +++| DCB=     SX1    B2          CHECK BUFFER STATUS
00335  M00S00334.comcwtw +++|          SX6    X2          STORE IN
00336  M00S00335.comcwtw +++|          LX1    59
00337  M00S00336.comcwtw +++|          SA6    A2
00338  M00S00337.comcwtw +++|          NG     X1,DCB1     IF NOT BUSY
00339  M00S00338.comcwtw +++|          ZR     X1,DCB1     IF BLANK FET
00340  M00S00339.comcwtw +++|          SX2    A3-B1       RESET FET ADDRESS
00341  M00S00340.comcwtw +++|          RECALL
00342  M00S00341.comcwtw +++|          SB2    A4-B1       CONTINUE WRITE
00343  M00S00342.comcwtw +++|          JP     B2
00344  M00S00343.comcwtw +++| WRIF$    IF     DEF,WRIF$
00345  M00S00344.comcwtw +++| DCB1     SA1    A3-B1       RE-ISSUE CURRENT WRITE FUNCTION
00346  M00S00345.comcwtw +++|          SX6    774B
00347  M00S00346.comcwtw +++|          BX7    X6*X1
00348  M00S00347.comcwtw +++|          SX2    A1          SET FET ADDRESS
00349  M00S00348.comcwtw +++|          RJ     =XCIO=
00350  M00S00349.comcwtw +++| WRIF$    ELSE   1
00351  M00S00350.comcwtw +++| DCB1     WRITE  A3-B1
00352  M00S00351.comcwtw +++|          SB2    A4-B1       CONTINUE WRITE
00353  M00S00352.comcwtw +++|          JP     B2
00354  M00S00353.comcwtw +++|          SPACE  4
00355  M00S00354.comcwtw +++|          BASE   *
00356  M00S00355.comcwtw +++| QUAL$    IF     -DEF,QUAL$
00357  M00S00356.comcwtw +++|          QUAL   *
00358  M00S00357.comcwtw +++| WTW=     EQU    /COMCWTW/WTW=
00359  M00S00358.comcwtw +++| WTX=     EQU    /COMCWTW/WTX=
00360  M00S00359.comcwtw +++| DCB=     EQU    /COMCWTW/DCB=
00361  M00S00360.comcwtw +++| QUAL$    ENDIF
00362  M00S00361.comcwtw +++|          ENDX