* * $Id: ubits.s,v 1.1.1.1 1996/02/15 17:51:25 mclareni Exp $ * * $Log: ubits.s,v $ * Revision 1.1.1.1 1996/02/15 17:51:25 mclareni * Kernlib * * IDENT UBITS * * CERN PROGLIB# M503 UBITS .VERSION KERNCDC 1.16 820129 * * CALL UBITS (I,N,K,M) * * ARGUMENTS: * I - A FULLWORD ARRAY CONTAINING THE BIT STRING TO BE EXAMINED * N - THE NUMBER OF BITS IN THE BIT STRING * K - ARRAY TO CONTAIN THE LOCATIONS OF THE BITS WITH VALUE 1 * M - NUMBER OF BITS FOUND TO HAVE THE VALUE 1 * ENTRY UBITS VFD 30/5HUBITS,30/UBITS UBITS DATA 0 SB1 1 SX5 B1 SA2 A1+B1 SX7 B0 SET M SA1 X1 GET I SA3 A2+B1 GET BASE ADDRESS OF K SA4 A3+B1 SA2 X2 SB4 B1 LOOP INDEX SB2 X2 GET N SB6 60 SB3 B6 NZ X1,LOOP SB4 B6 EMPTY WORD SB3 B1 EQ L1 LOOP BX2 X1*X5 GET BIT ZR X2,L1 SX6 B4 IX7 X7+X5 INCREMENT M SA6 X3 STORE K(M) IX3 X3+X5 L1 GE B4,B2,OUT SB3 B3-B1 SB4 B4+B1 NE B3,L2 CHECK WHETHER END OF WORD SA1 A1+B1 SB3 B6 NZ X1,LOOP SB4 B4-B1 SB3 B1 SB4 B4+B6 EQ L1 L2 AX1 B1 SHIFT I NZ X1,LOOP NG X1,LOOP SB4 B4+B3 NO MORE SET BITS IN THIS WORD SB4 B4-B1 SB3 B1 EQ L1 OUT SA7 X4 STORE M EQ B0,B0,UBITS END #ifdef CERNLIB_TCGEN_UBITS #undef CERNLIB_TCGEN_UBITS #endif