;************************************************************************
;+
;*NAME:
;
;	BITLIS       AUG. 28, 1989
;
;*CLASS:
;
;	data display
;
;*CATEGORY:
;
;*PURPOSE:  
;
;	To display bit pattern for byte, integer or longword integer scalars 
;	or vectors.
;
;*CALLING SEQUENCE:
;
;	BITLIS,A,B
;
;*PARAMETERS:
;
;	A   	(REQ) (I) (0,1) (B,I,L)
;		Input scalar or vector 
;
;	B   	(REQ) (O) (1,2) (B)
;		Output vector or array of 0's (off) and 1's (on) representing 
;		bit patterns of input vector A.
;
;*EXAMPLES:
;
;	a = bindgen(5)
;	bitlis,a,b
;	print,b
;	0 0 0 0 0 0 0 0 0
;	1 0 0 0 0 0 0 0 0
;	0 1 0 0 0 0 0 0 0
;	1 1 0 0 0 0 0 0 0
;	0 0 1 0 0 0 0 0 0
;
;*SYSTEM VARIABLES USED:
;
;	none
;
;*INTERACTIVE INPUT:
;
;	none
;
;*SUBROUTINES CALLED:
;
;    	none
;
;*FILES USED:
;
;	none
;
;*SIDE EFFECTS:
;
;*RESTRICTIONS:
;
;       Input parameter must be scalar or vector and either
;       byte, integer or longword integer data type.
;
;*NOTES:
;
;       When integers are stored in two's complement, the bit pattern
;       for negative numbers will be different than for positive numbers.
;
;*PROCEDURE: 
;
;      Each bit in the input parameter is checked.
;
;      Note that negative integers are stored in twos complement form.
;      Therefore, the left-most bits are ON rather than OFF as they are for 
;      positive numbers. Input the absolute value of A is negative numbers 
;      to avoid this problem. 

;      If the input parameter is a integer vector with N elements, 
;      the output parameter will be an array with 16xN elements, with
;      the first bit status contained in the first column 0, second bit in
;      the second column, etc. A scalar byte value would produce a 8
;      element vector.
;
;      Note when the output parameter is displayed, the bit order will be 
;      opposite that normally used for displaying bit patterns (i.e., 
;      the least significant bit is on the left and the most significant
;      is on the right).
;
;*MODIFICATION HISTORY:
;
;        3/30/93 rwt allow byte data
;	   Dec 1998       removed use of PARCHECK;  incorporated BITTEST code
;
;-
;******************************************************************************
 pro bitlis,a,b

;  check input

 npar = n_params(0)
 if (npar eq 0) then begin
    print,' BITLIS,A,B'
    retall
 endif  ; npar eq 0

;  determine dimension and type of input

 s = size(a)
 type = s(s(0)+1)
 lbit = (type * 8) - 1                     ; type = 1,2,or 3
 dim = s(0)
 if (dim eq 0) then b = bytarr(lbit+1) else b = bytarr(lbit+1,s(1))

;  step through input

 for i=0,lbit do begin

;  yesno -> 1 (true) if bit i is set, 0 (false) otherwise

;    bittest,a,i,yesno
    yesno = ( fix(a) or (not 2^i) ) eq -1 

    if (dim eq 0) then b(i) = yesno 
    if (dim eq 1) then b(i,0:*) = yesno
 endfor  ; i

 return
 end  ; bitlis