*COMDECK  COMCWTH            WRITE CODED LINE, *H* FORMAT.               COMCWTH
 WTH      CTEXT  COMCWTH - WRITE CODED LINE, -H- FORMAT.                 COMCWTH
 WTH      SPACE  4,10                                                    COMCWTH
          IF     -DEF,QUAL$,1                                            COMCWTH
          QUAL   COMCWTH                                                 COMCWTH
          BASE   D                                                       COMCWTH
*         COMMENT COPYRIGHT CONTROL DATA CORPORATION. 1970, 1978.        COMCWTH
 WTH      SPACE  4,10                                                    COMCWTH
***       WTH - WRITE CODED LINE, *H* FORMAT.                            COMCWTH
*                                                                        COMCWTH
*         G. R. MANSFIELD.   70/10/09.                                   COMCWTH
*         S. R. MCPHERSON.   74/09/30.                                   COMCWTH
*         C. J. CONRAD.      81/08/06.
* 
*         ******************************************************* 
*         * THIS COMMON DECK IS PART OF THE COMMON COMMON DECKS * 
*         * RESIDING ON THE COMPASS PROGRAM LIBRARY, AND BEING  * 
*         * MAINTAINED BY THE COMPASS PROJECT.  ANY CHANGES     * 
*         * REQUIRED SHOULD BE DIRECTED TO THE COMPASS PROJECT  * 
*         * THROUGH THE PROPER PROCEDURE.                       * 
*         ******************************************************* 
* 
*                                                                        COMCWTH
*         WTH TRIMS TRAILING SPACES AND WRITES A LINE TO A FILE.         COMCWTH
 WTH      SPACE  4,10                                                    COMCWTH
***       WTH TRANSFERS 1 CODED LINE IN -H- FORMAT FROM A                COMCWTH
*         WORKING BUFFER TO A CIO BUFFER.  TRAILING SPACES ARE DELETED.  COMCWTH
*         IF THE BUFFER BECOMES SUFFICIENTLY FULL TO REQUIRE WRITING,    COMCWTH
*         OR THE DEVICE TYPE INDICATES A NOS/BE TERMINAL,                COMCWTH
*         WTH WILL PERFORM A *WRITE* FUNCTION UNLESS THE SYMBOL *WRIF$*  COMCWTH
*         IS DEFINED. IN THIS CASE, THE CIO FUNCTION THAT IS IN THE FET  COMCWTH
*         WILL BE RE-ISSUED.                                             COMCWTH
*         IF THE LINE TO BE WRITTEN TERMINATES WITH 6 BITS OF ZERO A     COMCWTH
*         WORD CONTAINING A BLANK BYTE WILL BE APPENDED TO PRESERVE      COMCWTH
*         THE  *00*  CHARACTER AS A COLON.  IF THE LINE TERMINATES       COMCWTH
*         ON AN END-OF-LINE IT WILL BE WRITTEN AS IS.                    COMCWTH
*                                                                        COMCWTH
*         ENTRY  (X2) = ADDRESS OF FET FOR FILE.                         COMCWTH
*                (B6) = FWA WORKING BUFFER.                              COMCWTH
*                (B7) = WORD COUNT OF WORKING BUFFER.                    COMCWTH
*                IF (B7) = 0, NO TRANSFER WILL BE PERFORMED.             COMCWTH
*                                                                        COMCWTH
*         EXIT   (X2) = ADDRESS OF FET FOR FILE.                         COMCWTH
*                (B1) = 1.                                               COMCWTH
*                                                                        COMCWTH
*         USES   X - 1, 2, 3, 4, 6, 7.                                   COMCWTH
*                B - 1, 2, 3, 4, 5, 6, 7.                                COMCWTH
*                A - 1, 2, 3, 4, 6, 7.                                   COMCWTH
*                                                                        COMCWTH
*         CALLS  DCB=, WTX=.                                             COMCWTH
                                                                         COMCWTH
                                                                         COMCWTH
 +        EQ     WTH3        ENTRY FROM DCB= ON A WRITE REQUEST          COMCWTH
                                                                         COMCWTH
 WTH=     SUBR               ENTRY/EXIT                                  COMCWTH
          SA4    WTH=        SET RETURN ADDRESS                          CPSA104
          ZR     B7,WTH=     IF WORKING BUFFER EMPTY, RETURN             CPSA104
          IF     -DEF,B1=1,1                                             COMCWTH
          SB1    1                                                       COMCWTH
                                                                         COMCWTH
*         DELETE TRAILING BLANK WORDS.                                   COMCWTH
                                                                         COMCWTH
          SA3    WTHA        =1H                                         COMCWTH
          SA1    B6+B7       PRESET (A1)                                 COMCWTH
          SB7    B7+B1                                                   COMCWTH
 WTH1     SA1    A1-B1                                                   COMCWTH
          IX6    X1-X3                                                   COMCWTH
          SB7    B7-B1                                                   COMCWTH
          EQ     B7,B1,WTH2                                              COMCWTH
          ZR     X6,WTH1                                                 COMCWTH
 WTH2     SA1    X2+4        (B5) = LIMIT                                COMCWTH
          SA3    X2+B1       (X3) = FIRST                                COMCWTH
          SB5    X1                                                      COMCWTH
                                                                         COMCWTH
*         INITIALIZE REGISTERS FOR TRANSFER.                             COMCWTH
                                                                         COMCWTH
 WTH3     SA2    X2          (B2) = FET STATUS
          SA1    A3+2        (B4) = OUT 
          SB2    X2 
          SA2    A3+B1       (X2) = IN                                   COMCWTH
          SB4    X1                                                      COMCWTH
                                                                         COMCWTH
*         TRANSFER DATA FROM WORKING BUFFER TO CIRCULAR BUFFER.          COMCWTH
                                                                         COMCWTH
 WTH4     SB3    X2+1        (IN+1)                                      COMCWTH
          EQ     B3,B5,WTH9  IF (IN+1) = LIMIT                           COMCWTH
 WTH5     EQ     B3,B4,=XDCB= DUMP CIRCULAR BUFFER IF (IN+1) = OUT       COMCWTH
          SA1    B6          READ WORD                                   COMCWTH
          SB7    B7-B1       DECREMENT WORD COUNT                        COMCWTH
          BX6    X1                                                      COMCWTH
          SA6    X2          STORE WORD                                  COMCWTH
          SB6    B6+B1       ADVANCE WORKING BUFFER                      COMCWTH
          SX2    B3          IN = (IN+1)                                 COMCWTH
          GE     B7,B1,WTH4  LOOP TO LAST WORD                           COMCWTH
                                                                         COMCWTH
          MX1    -12         CHECK LAST BYTE                             COMCWTH
          BX7    -X1*X6                                                  COMCWTH
          ZR     X7,=XWTX=   EXIT IF 0000 BYTE                           COMCWTH
          SB6    WTHB        PREPARE ZERO WORD                           COMCWTH
          SX7    X7-2R                                                   COMCWTH
          ZR     X7,WTH6     IF *  * BYTE                                COMCWTH
          MX4    -6          SET CHARACTER MASK                          COMCWTH
          BX4    -X4*X6      GET LAST CHARACTER OF WORD                  COMCWTH
          NZ     X4,WTH4     IF LAST CHARACTER NOT  *00*                 COMCWTH
          SB6    WTHC        PRESERVE *00* CHARACTER WITH *  *           COMCWTH
          EQ     WTH4                                                    COMCWTH
                                                                         COMCWTH
*         DELETE TRAILING SPACE BYTES.                                   COMCWTH
                                                                         COMCWTH
 WTH6     MX4    -6          SINGLE CHARACTER MASK                       COMCWTH
          LX4    12                                                      COMCWTH
          BX7    -X4*X6      GET RIGHT CHARACTER OF BYTE                 COMCWTH
          ZR     X7,WTH4     IF  *00*  CHARACTER ADD BLANK BYTE          COMCWTH
          SX2    2R          SET SPACE BYTE                              COMCWTH
 WTH7     BX6    X1*X6       ZERO OUT SPACE BYTE                         COMCWTH
          LX1    12          CHECK NEXT BYTE                             COMCWTH
          LX2    12                                                      COMCWTH
          BX7    -X1*X6      GET BYTE                                    COMCWTH
          LX4    12                                                      COMCWTH
          BX7    X7-X2       CHECK FOR SPACE BYTE                        COMCWTH
          NZ     X7,WTH8     IF NOT SPACE BYTE                           COMCWTH
          BX7    -X4*X6      CHECK CHARACTER BEFORE BYTE                 COMCWTH
          NZ     X7,WTH7     IF NOT  *00*  CHARACTER                     COMCWTH
 WTH8     SA6    A6                                                      COMCWTH
          SX2    B3                                                      COMCWTH
          EQ     =XWTX=      EXIT                                        COMCWTH
                                                                         COMCWTH
 WTH9     SB3    X3          (IN+1) = FIRST                              COMCWTH
          EQ     WTH5                                                    COMCWTH
                                                                         COMCWTH
 WTHA     DATA   1H                                                      COMCWTH
 WTHB     CON    0                                                       COMCWTH
 WTHC     DATA   2L                                                      COMCWTH
 WTH      SPACE  4,10                                                    COMCWTH
          BASE   *                                                       COMCWTH
 QUAL$    IF     -DEF,QUAL$                                              COMCWTH
          QUAL   *                                                       COMCWTH
 WTH=     EQU    /COMCWTH/WTH=                                           COMCWTH
 QUAL$    ENDIF                                                          COMCWTH
 WTH      ENDX                                                           COMCWTH
