;******************************************************************************
;* File name: create_stack.pro                                                *
;*                                                                            *
;* Content  :   create_stack                                                  *
;*                                                                            *
;*                                                                            *
;* Date		Author		Comment                                       *
;* -------------------------------------------------------------------------- *
;* 10-01-94	E.PETIT		Creation                                      *
;* 19-01-94	E.PETIT	   	Add display control structure                 *
;*                                                                            *
;******************************************************************************

;***
;##############################################################################
;#Function  name   : create_stack                                             #
;#LEVEL            : 1                                                        #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          :                                                          #
;#Creation date    : December 1993                                            #
;#Update date      : 19-01-94	E.PETIT	   	Add display control structure #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : Called by Event Handler                                  #
;#                                                                            #
;#Arguments        :                                                          #
;#                                                                            #
;#Description      :Creation of user stack file                               #
;#                                                                            #
;#                                                                            #
;##############################################################################
;***  

PRO create_stack

  ;============================================================================
  ;                       Common
  ;============================================================================
  COMMON const_com
  COMMON stack_com
  COMMON curr_data_i_com
  COMMON curr_data_p_com
  ;============================================================================
  ;                       Initialization
  ;============================================================================
  ql_init

  ;============================================================================
  ;                       Processing 
  ;============================================================================
  print, "Stack creation in progress ..."   
  stack_hd.i(*).free     = 0
  stack_hd.i(*).selected = 0   
  FOR i=0,STACK_SZ-1 DO BEGIN
    stack_hd.i(i).offset   = $
     ((2+(ICON_X*ICON_Y*FLT_SZ)+LNG_SZ+DISPLAY_CTRL_SZ+BANNER_SZ)*STACK_SZ)*2 + $
     (RRD_HD_SZ+RRD_DATA_SZ) * i
  ENDFOR

  stack_hd.p(*).free     = 0
  stack_hd.p(*).selected = 0
  FOR i=0,STACK_SZ-1 DO BEGIN
    stack_hd.p(i).offset   = $
       ((2+(ICON_X*ICON_Y*FLT_SZ)+LNG_SZ+DISPLAY_CTRL_SZ+BANNER_SZ)*STACK_SZ)*2 + $
       (RRD_HD_SZ+RRD_DATA_SZ) * (i+STACK_SZ)
  ENDFOR

  stack_file_name='stack.dat'  
  OPENW, stack_unit, stack_file_name, /GET_LUN, /BLOCK
  WRITEU, stack_unit, stack_hd
  
  FOR i=0,(2*STACK_SZ)-1 DO BEGIN
    WRITEU, stack_unit,curr_header_i
    WRITEU, stack_unit,curr_data_i
  ENDFOR
 
  CLOSE, stack_unit
  print, 'File stack.dat created.'
  
  ; Lecture pour controle 
  ; ---------------------
  OPENU, stack_unit, stack_file_name, /GET_LUN, /BLOCK
  READU, stack_unit, stack_hd
  CLOSE, stack_unit
  
  print, ' '
  print, 'stack_hd.i(*).offset        : '
  print,  stack_hd.i(*).offset 
  print, 'stack_hd.p(*).offset        : '
  print, stack_hd.p(*).offset 
END
