pro head_debug, head00, tit, ist, ien, fil_arr, file=file, out=out, hc=hc, $
		frame_num=frame_num, time_egse=time_egse, offset=offset, $
		shift1=shift1, memory=memory
;
;	head_debug, head0, '950329_235350 series from *.heads files', 530, 550
;
;	infil = '950502_005805_14
;	read_mdi, infil, xx, nimg, /nimages
;	rdtfr, infil, img, head0, timeblk, first=1, nimg=nimg
;	timarr = anytim2ints('1-Jan-70', off=double(timeblk))
;	head_debug, head0, infil, nimg-40, nimg-1, time_egse=timarr
;
;HISTORY:
;	Written Apr-95 by M.Morrison
;V2.0	25-Apr-95 (MDM) - Corrected FIL_ARR output.  It was printing
;			  one number less than it should have.
;			- Didn't correct it, but it should be getting
;			  the DEPVER which used to be value 23 decimal
;			  (instead of the IP ver)
;V2.1	25-Apr-95 (MDM) - Added /FRAME_NUM switch
;V3.0	 2-May-95 (MDM) - Added TIME_EGSE
;V4.0	 3-May-95 (MDM) - Added OFFSET
;			- Added /MEMORY
;			- Added /SHIFT1
;
progver = 'HEAD_DEBUG.PRO  Ver 4.0'
;
swap_os=['vms','ultrix','OSF']                  ; list of swap machines
chk=where(!version.os eq swap_os,nscount)       ; current OS in noswap list?
qswap = nscount ne 0                            ; assign boolean
;
if (n_elements(tit) eq 0) then tit = ''
;
out = [progver + '  Program Run: ' + !stime, $
	tit, $
	strtrim(n_elements(head00(0,*)),2) + ' images in total', $
	' ', $
        ;  530  29-MAR-95  06:14:00  --   460b5928   c43faaaa    8  9838  36955  23  30 214 |    dbe128bd   cfffff25
	' Img#    RefTime Date/Time  Dt   RefTime     SeqID   Seq# SqFrm  FrmNum IPv ## HK  |    IP Sync      DPC', $
	' ']
;
head = head00(*,ist:ien)
if (keyword_set(shift1)) then head(0:250,*) = head(1:251,*)
head2 = head
if (qswap) then dec2sun,head2 
n = n_elements(head(0,*))	;number of headers
barr = byte(head2, 0, 549*2, n)
;
t = long(byte(head(45:48,*)),0,n)		& if (qswap) then dec2sun, t
tim   = anytim2ints('1-jan-58', off=double(t))
n30   = head(123,*) and 'ff'x
hk    = head(131,*) and 'ff'x
seqid = byte(head(37:40,*))
sqnum = fix(byte(head(41:42,*)),0,n)		& if (qswap) then dec2sun, sqnum
sqfrm = fix(byte(head(43:44,*)),0,n)		& if (qswap) then dec2sun, sqfrm	& sqfrm = unsign(sqfrm,16)
frmnum= long(byte(head(53:56,*)),0,n)		& if (qswap) then dec2sun, frmnum
depver= fix(byte(head(61:62,*)),0,n)		& if (qswap) then dec2sun, depver
ipver = fix(byte(head(67:68,*)),0,n)		& if (qswap) then dec2sun, ipver
ipver = fix(byte(head(67,*)))	
sync  = barr(502:505,*)		;rec# - 14
dpc   = barr(506:509,*)
imgn  = indgen(ien-ist+1) + ist
if (keyword_set(offset)) then imgn = imgn + offset
;
dt = deriv_arr(t)
dt_str = ['  --', string(dt, format='(1x,i3)')]
;
extra1=''
extra2=''
extra3=''
extra4=''

v2 = ( (head2(423+19,*) and 'ff'x) +1) mod 20
v2 = ( (head2(423+19,*)/256 ) +1) mod 20
v2 = ( (head(423+19,*)/256 ) +1) mod 20
if (keyword_set(fil_arr)) then extra1 = string(fil_arr(ist:ien)+1, format='("_", i3.3)') 
if (keyword_set(frame_num)) then begin
    dv2 = deriv_arr(v2)
    ss_v2 = where((dv2 ne 1) and (dv2 ne -19))
    sv2 = strarr(n_elements(v2)) + ' '
    if (ss_v2(0) ne -1) then sv2(ss_v2+1) = '*'
    extra2 = string(v2, format='(1x, i2)') + sv2
end
if (keyword_set(time_egse)) then begin
    t2 = int2secarr(time_egse)
    dt2 = deriv_arr(t2)
    dt_str2 = ['  --', string(dt2, format='(1x,i3)')]
    extra3 = '  ' + gt_time(time_egse, /str) + dt_str2 
end
if (keyword_set(memory)) then begin
    memmap = rd_tfile('/mdisw/idl/ucon/mlevay/cammap3.dat',4,delim=',')
    memmap_str = string(memmap, format='(4i1)')
    v4 = head(423:442,*)
    v4_memmap = string(v4(0:3,*), format='(4i1)')
    extra4 = ' ' + v4_memmap
    for i=0,n_elements(v4_memmap)-1 do if (v4_memmap(i) ne memmap_str(v2(i))) then extra4(i) = extra4(i) + '*' $
										else extra4(i) = extra4(i) + ' '
end
;
out = [out, $
	string(imgn, format='(i5)') + '  ' + $
	fmt_tim(tim) + $
	dt_str + $
	string(t, format='(3x,z8.8)') + $
	string(seqid, format='(3x,4z2.2)') + $
	string(sqnum, format='(i5)') + $
	string(sqfrm, format='(i6)') + $
	string(frmnum, format='(i7)') + $
	string(ipver, format='(i4)') + $
	string(n30, format='(i4)') + $
	string(hk, format='(i4)') + ' | ' + $
	string(sync, format='(3x,4z2.2)') + $
	string(dpc,  format='(3x,4z2.2)') + $
	'  ' + extra1 + extra2 + extra3 + extra4]
;
prstr, out, /nomore
if (n_elements(file) ne 0) then prstr, out, file=file
if (keyword_set(hc)) then begin
    ;prstr, out, /hc
    prstr, out, file='head_debug.txt'
    dprint, 'head_debug.txt', /land
end
;
end
