*DECK S$GENWD 
          IDENT  S$GENWD
          TITLE  S$GENWD -  GENERATE A WORD 
          COMMENT  GENERATE A WORD
          SPACE  4
**        S$GENWD -  GENERATE A WORD
* 
*     CALLING SEQUENCE- 
*         GENWD  <X-REGISTER> 
*       OR
*         X1 = <X-REGISTER> 
*         RJ     S$GENWD
* 
*         S$LOC = ADDRESS WHERE NEXT INSTRUCTION WILL BE STORED AND 
*          LATER EXECUTED.
*         S$POS = POSITION WITHIN WORD AT S$LOC WHERE INSTRUCTION WILL
*          BE STORED.   (VALUE IS 45, 30, 15 OR 0)
* 
*     DOES- 
*         FORCES UPPER. 
*         INSERTS THIS WORD.
* 
*     USES-      B    * - - - - 6 7    *B1=1
*                X  - 1 2 3 - - 6 - 
*                A  - 1 2 3 - - 6 - 
  
  
          ENTRY  S$GENWD
 S$GENWD  SUBR
  
*     FORCE UPPER IF NECESSARY
  
          SA2    S$POS       POSITION COUNTER (45, 30, 15 OR 0) 
          IFTHEN X2"0        IF NOT ON WORD BOUNDARY
            SB7    X2-59       MASK FOR NO-OP INSTRUCTIONS
            MX6    1
            SB7    -B7
            AX6    X6,B7
            SA3    =00000460006100046000B 
            BX6    -X6*X3      KEEP ONLY USED INSTRUCTIONS
            SA2    S$LOC       X2 = ADDRESS OF PARTLY FILLED WORD 
            SA3    X2          INSERT NO-OP INSTRUCTIONS
            BX6    X3+X6
            SA6    A3 (S$LOC)  STORE COMPLETE WORD
            SX6    X2+B1       INCREMENT S$LOC
            SA6    A2 S$LOC 
            ENDIF.
  
*STORE VALUE
  
          BX6    X1 
          SA2    S$LOC
          SA6    X2 
  
*     UPDATE S$LOC AND S$POS
  
          SX6    X2+1        S$LOC = S$LOC + 1
          SA6    S$LOC
          SX6    0           S$POS = 0
          SA6    S$POS
  
          EXIT
  
  
 S$LOC    EXTERNAL
  
 S$POS    EXTERNAL
  
  
          END 
