*DECK     WRS 
          IDENT  P.WRS
          B1=1
          ENTRY  P.WRS
 WRS      SPACE  4,10 
 WRS      TITLE  P.WRS - WRITE STRING ROUTINE.
          COMMENT PASCAL 6000 WRITE STRING ROUTINE. 
          COMMENT COPYRIGHT (C) UNIVERSITY OF MINNESOTA - 1978. 
 WRS      SPACE  4,10 
***       P.WRS - WRITE STRING ROUTINE. 
*         J. P. STRAIT.      77/04/30.
* BRING DOCUMENTATION UP TO CODING STANDARDS. 
 WRS      SPACE  4,10 
***       P.WRS - WRITE STRING ROUTINE. 
* 
*         ENTRY  (B1) = 1.
*                (B6) = TOP OF STACK (TOS). 
*                (TOS + PFLC) = EFET ADDRESS - 13 = FILE FWA. 
*                (TOS + PFLC + 1) = THE STRING ITSELF IN THE CASE OF
*                                   ONE WITH (TOS + PFLC + 2) < 0,
*                                   OTHERWISE THE FIRST WORD ADDRESS OF 
*                                   THE STRING. 
*                (TOS + PFLC + 2) = FIELD WIDTH.
*                (TOS + PFLC + 3) = ABSOLUTE VALUE OF LENGTH OF STRING
*                                   IN CHARACTERS.
* 
*         EXIT   STRING WRITTEN TO FILE BUFFER. 
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3, 7. 
*                X - ALL. 
* 
*         CALLS  P.PUTC.
* 
*         MACROS NONE.
  
  
*CALL     COMSPAS 
  
  
 P.WRS    PS                 ENTRY/EXIT 
          SA1    B6+PFLC+2   FIELD WIDTH
          SA2    A1+B1       STRING LENGTH
          SB3    X1 
          BX6    -X2
          LE     B3,B0,P.WRS IF FIELD WIDTH <= 0
          SA5    A1-B1       STRING OR ITS ADDRESS
          SA4    A5-B1       FILE FWA 
          SA1    X4+12       EFET - 1 
          PL     X6,WRS1     IF VALUE WAS PASSED
          BX6    X2          LENGTH OF STRING 
          SA5    X5          GET FIRST WORD OF STRING 
 WRS1     SB2    X6 
          SA6    A2          SET ABSOLUTE VALUE OF LENGTH 
          SB2    B3-B2       NUMBER OF LEADING BLANKS 
          LE     B2,B0,WRS3  IF NO LEADING BLANKS 
 WRS2     SX6    1R 
          SB2    B2-B1       COUNT THE BLANK
          SA6    X1          STORE THE BLANK
          RJ     =XP.PUTC    ADVANCE FILE POINTER 
          SA1    X2-2        RELOAD EFET - 1
          GT     B2,B0,WRS2  IF MORE BLANKS ARE LEFT
 WRS3     SA2    B6+PFLC+3   STRING LENGTH
          SB3    X2+B2       NUMBER OF CHARACTERS TO WRITE
          SX6    -B3
 WRS4     SA6    A2          REMEMBER NEGATIVE CHARACTER COUNT
          SX3    X6+10
          SB2    X6          ASSUME THIS IS THE LAST WORD 
          PL     X3,WRS5     IF THIS IS THE LAST WORD 
          SB2    -10         TEN CHARACTERS IN THIS WORD
 WRS5     MX4    -6 
          LX5    6
          BX6    -X4*X5      EXTRACT NEXT CHARACTER 
          SB2    B2+B1       COUNT THIS CHARACTER 
          SA6    X1          STORE THIS CHARACTER 
          RJ     =XP.PUTC    ADVANCE FILE POINTER 
          SA1    X2-2        RELOAD EFET - 1
          LT     B2,B0,WRS5  IF MORE CHARS ARE LEFT IN THIS WORD
          SA2    B6+PFLC+3   NEGATIVE CHARACTER COUNT 
          SX6    X2+10       COUNT TEN CHARACTERS 
          PL     X6,P.WRS    IF NO MORE WORDS LEFT
          SA5    A5+1        NEXT WORD
          EQ     WRS4 
 WRS      SPACE  4
          END 
