*******************************************************************************
*									      *
*  COUNT BITS								      *
*  08/01/11 (dkc)							      *
*									      *
*  This C64 subroutine counts bits.  The calling sequence of the subroutine   *
*  is;									      *
*									      *
*     input data-> a4							      *
*									      *
*******************************************************************************
	.global _bitcnt
	.text
_bitcnt:
	bitc4.m1 a4, a4 		;  count bits

	b.s2 b3 			;  return
	swap2.l1 a4, a5 		;  C:D:A:B

	add.s1 a4, a5, a7		;  A+C:B+D:C+A:D+B
||	swap4.l1 a5, a5 		;  D:C:B:A

	add.s1 a5, a7, a4		;  A+C+D:B+D+C:C+A+B:D+B+A
||	swap4.l1 a4, a6 		;  B:A:D:C

	add.l1 a4, a6, a4		;  A+C+D+B:B+D+C+A:C+A+B+D:D+B+A+C

	shru.s1 a4, 24, a4		;  A+C+D+B
	.end