*DECK S$ISQRT 
          IDENT  S$ISQRT
          COMMENT  INTEGER SQUARE ROOT FUNCTION 
  
  
**        S$ISQRT - INTEGER SQUARE ROOT FUNCTION
* 
*     CALLING SEQUENCE- 
*         VAR = S$ISQRT(PARAM); 
* 
*     DOES- 
*         CALCULATE INTEGER SQRT OF PARAM AND RETURN IN X6. 
* 
          ENTRY  S$ISQRT
  
 S$ISQRT  SUBR                     ENTRY/EXIT WORD
  
*                SQUARE ROOT INITIALIZATION 
  
          SA5    X1                FETCH THE PARAMETER VALUE
          MX0    1
          SX6    B0                SET ROOT = 0 
          LX5    1
  
 FAS      LX0    6                 FIND ARGUMENT SIZE 
          IX4    X5-X0
          MI     X4,SQR 
          PL     X0,FAS 
          LX0    -2 
  
  
*                THE MAIN LOOP
  
 SQR      LX0    -2                SHIFT TO NEXT PAIR OF BITS IN THE ARG
          IX4    X6+X0             BUILD SUBTRAHEND (2*ROOT+1)
          AX6    1                 SHIFT ROOT 
          IX4    X5-X4
          MI     X0,S$ISQRT        THE SQUARE ROOT IS COMPLETE
  
          MI     X4,SQR            PROCESS THE NEXT BIT POSITION
  
          IX6    X6+X0             ADD ONE TO THE ROOT
          BX5    X4 
          EQ     SQR
  
  
          END 
