          IDENT  DSM3260
          TITLE  DSM$PACK 32 TO 60
          SPACE  4,10
          EXT    ZSMRRET,ZSMRENT,PARSV
          SPACE  4,10
          EJECT
*         P32TO60 - PACK 32 BIT WORDS INTO 60 BIT WORDS.
*
*         AN ARRAY OF 32 BITS RIGHT JUSTIFIED IN 60-BIT-WORDS
*         IS PACKED INTO 60-BIT-WORDS.
*
*         ENTRY  - FROM CYBIL CODE WITH PARAMETERS
*                  P32P0 = NUMBER OF 32 BIT WORDS - MUST BE MOD 15(10)
*                  P32P1 = INPUT ARRAY ADDRESS,
*                  P32P2 = OUTPUT BUFFER ADDRESS.
*
*         EXIT   - INPUT ARRAY REPACKED INTO OUTPUT BUFFER.
*
          ENTRY  P32TO60
 P32P0    EQU    0           PARAMETER 0 ADDRESS IN PARSV AREA
 P32P1    EQU    1           DITTO FOR PARAMETER ONE
 P32P2    EQU    2           DITTO FOR PARAMETER TWO
*
 P32TO60  BSS    0
          RJ     ZSMRENT     SAVE CYBIL ENVNMNT AND PARAMETERS
 P32.ENT  BSS    0           LOAD PARAMETERS
          SA1    PARSV+P32P0
          SB2    X1          NUMBER OF WORDS
          SA1    PARSV+P32P1
          SB3    X1          32 BIT ARRAY ADDRESS
          SA1    PARSV+P32P2
          SB4    X1          60 BIT BUFFER ADDRESS
          MX0    -32
 P32.00   BSS    0
          SA2    B3          LOAD NEXT 4 ARRAY WORDS INTO X2 - X3
          SA3    A2+B1
          SA4    A3+B1
          SA5    A4+B1
*
          BX6    -X0*X2
          LX6    28
          BX3    -X0*X3
          LX3    -4
          BX2    -X0*X3
          BX6    X6+X2
          SA6    B4          SAVE W0,U28W1
*
          BX7    X0*X3
          BX4    -X0*X4
          LX4    24
          BX7    X7+X4
          BX5    -X0*X5
          LX5    -8
          BX2    -X0*X5
          BX7    X7+X2
          SA7    A6+B1       SAVE L4W1,W2,U24W3
*
          BX6    X0*X5
*
          SA2    A5+B1       LOAD NEXT 4 ARRAY WORDS INTO X2 - X5
          SA3    A2+B1
          SA4    A3+B1
          SA5    A4+B1
*
          BX2    -X0*X2
          LX2    20
          BX6    X6+X2
          BX3    -X0*X3
          LX3    -12
          BX2    -X0*X3
          BX6    X6+X2
          SA6    A7+B1       SAVE L8W3,W4,U20W5
*
          BX7    X0*X3
          BX4    -X0*X4
          LX4    16
          BX7    X7+X4
          BX5    -X0*X5
          LX5    -16
          BX2    -X0*X5
          BX7    X7+X2
          SA7    A6+B1       SAVE L12W5,W6,U16W7
*
          BX6    X0*X5
*
          SA2    A5+B1       LOAD NEXT 4 ARRAY WORDS INTO X2 - X5
          SA3    A2+B1
          SA4    A3+B1
          SA5    A4+B1
*
          BX2    -X0*X2
          LX2    12
          BX6    X6+X2
          BX3    -X0*X3
          LX3    -20
          BX2    -X0*X3
          BX6    X6+X2
          SA6    A7+B1       SAVE L16W7,W8,U12W9
*
          BX7    X0*X3
          BX4    -X0*X4
          LX4    8
          BX7    X7+X4
          BX5    -X0*X5
          LX5    -24
          BX2    -X0*X5
          BX7    X7+X2
          SA7    A6+B1       SAVE L20W9,W10,U8W11
*
          BX6    X0*X5
*
          SA2    A5+B1       LOAD NEXT 3 ARRAY WORDS INTO X2 - X4
          SA3    A2+B1
          SA4    A3+B1
*
          BX2    -X0*X2
          LX2    4
          BX6    X6+X2
          BX3    -X0*X3
          LX3    -28
          BX2    -X0*X3
          BX6    X6+X2
          SA6    A7+B1       SAVE L24W11,W12,U4W13
*
          BX7    X0*X3
          BX4    -X0*X4
          BX7    X7+X4
          SA7    A6+B1       SAVE L28W13,W14
*
          SB2    B2-15D      DECREMENT B2 BY ARRAY BLOCK COUNT
          SB4    A7+B1       STEP A6 TO NEXT 60 BIT WORD
          SB3    A4+B1       STEP B3 TO NEXT ARRAY WORD
          NE     B0,B2,P32.00  MORE BUFFER WORDS TO UNPACK
 P32.EXI  BSS    0
          JP     ZSMRRET     RESTORE ISWL ENVIRONMENT AND RETURN

          END
