*
* $Id: sxlnd.s,v 1.1.1.1 1996/02/15 17:47:39 mclareni Exp $
*
* $Log: sxlnd.s,v $
* Revision 1.1.1.1  1996/02/15 17:47:39  mclareni
* Kernlib
*
*
          IDENT       SXLND
          ENTRY       SXLND
************************************************************************
*                                                                      *
* SUBROUTINE SXLND (WORDS,NWORDS)                                      *
*                                                                      *
* CONVERT THE FIRST NWORDS ELEMENTS OF WORDS FROM CDC SHORT   (60-BIT) *
* FLOATING POINT TO NORD NORMALISED LONG FLOATING POINT (48-BIT) AND   *
* STORE THE RESULTS BACK IN WORDS. THE NORD 48-BIT NUMBERS ARE PLACED  *
* RIGHT JUSTIFIED WITH ZERO FILL IN THE ELEMENTS OF WORDS. IF NWORDS   *
* IS LESS THAN ONE A DO NOTHING RETURN IS MADE.                        *
* NORD WORD IS 32 BIT MANTISSA,15 BIT EXPONENT (BIAS OF 2**14),SIGN BIT*
* CDC  WORD IS 48 BIT MANTISSA,11 BIT EXPONENT (BIAS OF 2**10),SIGN BIT*
* NORD NUMBER RANGE IS 10**-4920 TO 10**4920                           *
* CDC  NUMBER RANGE IS 10**-293  TO 10**322                            *
* CDC + OR -VE OVERFLOWS ARE SET TO +/-10**4920 IN NORD FORMAT         *
* CDC + OR -VE UNDERFLOWS TRANSLATE TO +/-10**-293 IN NORD FORMAT
* CDC INDEFINITE NUMBERS ARE TRANSLATED TO MAX/MIN NORD NUMBERS        *
* THE NORD OUTPUT NUMBERS ARE NORMALISED IF THE CDC INPUT NUMBERS WERE *
*                                                                      *
*                                        H.RENSHALL/DD/CERN 80/09/17   *
*                                                                      *
************************************************************************
 TRACE    VFD         30/5HSXLND,30/3
 SXLND    DATA        0                .STORAGE FOR RETURN JUMP ADDRESS
          SB1         X1               .B1=ADDRESS OF WORDS(1)
          SA1         A1+1             .X1=ADDRESS OF N
          SA1         X1               .X1=NUMBER OF WORDS TO TRANSLATE
          SB2         X1+B1            .B2=ADDRESS OF WORDS(NWORDS+1)
          LE          B2,B1,SXLND      .DO NOTHING RETURN IF N LE ZERO
          MX0         1                .SET BIT 60
          LX0         48               .SHIFT TO BIT 48
          MX5         1                .SET LEFT 1-BIT
          LX5         1                .RIGHT ADJUST
          SB3         16432            .NORD BIAS (2**14) + 48 FOR DEC P
 FLPT     SA2         B1               .SET X2 = NEXT CDC NUMBER
          BX4         X2               .COPY NUMBER TO X4
          AX4         59               .FILL X4 WITH SIGN BIT
          BX7         X4-X2            .COMPLEMENT TO X7 IF NEGATIVE
          ZR          X7,RESTORE       .ALLOWS FOR CDC +-0.
          OR          X2,OUTRANGE      .TEST IF CDC NUMBER IN RANGE (760
          UX7         B5,X7            .UNPACK +VE MANT TO X7,EXP TO B5
          AX7         16               .REDUCE MANTISSA TO 32 BITS
          SX6         B5+B3            .ADD NORD BIAS (2**14) +48 FOR DE
          LX6         32               .POSITION AS NORD EXPONENT
          BX6         X6+X7            .OR MANT AND EXP INTO X6
          BX4         X0*X4            .GET SIGN BIT IN BIT 48 OF X4
          BX7         X6+X4            .OR IN THE SIGN BIT INTO X7
          ZR          RESTORE          .JUMP OVER OUT OF RANGE
 OUTRANGE SA2         LIMIT            .SET LARGEST NORD NUMBER
          BX4         X0*X4            .GET SIGN BIT IN BIT 48 OF X4
          BX7         X2+X4             OR SIGN INTO LARGEST NORD NUMBER
 RESTORE  SA7         B1               .STORE CONVERTED NUMBER (-0. TO +
          SB1         B1+X5            .ADD 1 TO FIRST ADDRESS
          LT          B1,B2,FLPT       .INSTACK LOOP TILL ALL CONVERTED
          EQ          SXLND            .RETURN
 LIMIT    DATA        B00003777777777777776 .LARGEST NORD FP NUMBER
          END