pro make_dark,resolution,exposure_time,output_file,specsum=specsum

  if (keyword_set(specsum)) then begin
    spsm = specsum
  endif else begin
    spsm = "no"
  endelse

  caldir = getenv('caldir')
  if (resolution eq "hi") then begin
    openr,dmlun, $
      caldir+"/calib/vis_hires_dark_model.tab",/get_lun
    dmarray = fltarr(192,96,2)
    readu,dmlun,dmarray
    free_lun,dmlun
  endif else begin
    openr,dmlun, $
      caldir+"/calib/vis_lowres_dark_model.tab",/get_lun
    dmarray = fltarr(64,96,2)
    readu,dmlun,dmarray
    free_lun,dmlun
  endelse

  ; Make the dark data.
  samples = 64
  if (resolution eq "hi") then samples = 192
  lines = 64
  if (resolution eq "hi") then lines = 192
  bands = 352
  dark_array = fltarr(samples,lines,bands)

  for i = 0, samples-1 do begin
    for k = 0, bands-1 do begin
      if (k le 95) then begin
        v = dmarray[i,k,0] + dmarray[i,k,1]*exposure_time
        for j = 0, lines-1 do begin
          dark_array(i,j,k) = v
        endfor
      endif else begin
        for j = 0, lines-1 do begin
          dark_array(i,j,k) = 0.0
        endfor
      endelse
    endfor
  endfor

  if (spsm eq "yes") then begin
    for i=0,351,8 do begin
      sum = dark_array[*,*,i] + dark_array[*,*,i+1]+dark_array[*,*,i+2]+dark_array[*,*,i+3]+ $
            dark_array[*,*,i+4]+dark_array[*,*,i+5]+dark_array[*,*,i+6]+dark_array[*,*,i+7]
      sum = sum/8.0
      dark_array[*,*,i]   = sum
      dark_array[*,*,i+1] = sum
      dark_array[*,*,i+2] = sum
      dark_array[*,*,i+3] = sum
      dark_array[*,*,i+4] = sum
      dark_array[*,*,i+5] = sum
      dark_array[*,*,i+6] = sum
      dark_array[*,*,i+7] = sum
    endfor
  endif

  proto_head = [ $
    "CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL", $
    "RECORD_TYPE = FIXED_LENGTH", $
    "RECORD_BYTES = 512", $
    "FILE_RECORDS = 102422", $
    "LABEL_RECORDS = 14", $
    "FILE_STATE = CLEAN", $
    "^HISTORY =         15", $
    "OBJECT = HISTORY", $
    "END_OBJECT = HISTORY", $
    "  ", $
    "^QUBE = 20", $
    "OBJECT = QUBE", $
    "  AXES = 3", $
    "  AXIS_NAME = (SAMPLE,LINE,BAND)", $
    "  ", $
    "  CORE_ITEMS = ("+string(samples,format='(I3)')+","+ $
                       string(lines,format='(I3)')+",352)", $
    "  CORE_ITEM_BYTES = 4", $
    "  CORE_ITEM_TYPE = PC_REAL", $
    "  CORE_BASE = 0.0", $
    "  CORE_MULTIPLIER = 1.0", $
    "  CORE_VALID_MINIMUM = 16#FF7FFFFA#", $
    "  CORE_NULL = 16#FF7FFFFB#", $
    "  CORE_LOW_REPR_SATURATION = 16#FF7FFFFC#", $
    "  CORE_LOW_INSTR_SATURATION = 16#FF7FFFFD#", $
    "  CORE_HIGH_INSTR_SATURATION = 16#FF7FFFFE#", $
    "  CORE_HIGH_REPR_SATURATION = 16#FF7FFFFF#", $
    "  ", $
    "  SUFFIX_BYTES = 4", $
    "  SUFFIX_ITEMS = (0,0,0)", $
    "  CORE_NAME = ZERO", $
    "  CORE_UNIT = UNKNOWN", $
    "  GROUP = BAND_BIN", $
    "    BAND_BIN_UNIT = MICROMETER", $
    "    BAND_BIN_CENTER = (0.350540, 0.358950, 0.366290, 0.373220,", $
    " 0.379490, 0.387900, 0.395180, 0.402520, 0.409550, 0.417310,", $
    " 0.424360, 0.431840, 0.439190, 0.446520, 0.453720, 0.461630,", $
    " 0.468410, 0.476220, 0.486290, 0.489670, 0.497770, 0.506280,", $
    " 0.512220, 0.519630, 0.527660, 0.534160, 0.541560, 0.549540,", $
    " 0.556140, 0.563530, 0.571310, 0.578100, 0.585480, 0.593120,", $
    " 0.599380, 0.607570, 0.615050, 0.622070, 0.629400, 0.637040,", $
    " 0.644080, 0.651420, 0.659100, 0.666090, 0.673420, 0.681020,", $
    " 0.688030, 0.695350, 0.702880, 0.710000, 0.717330, 0.724840,", $
    " 0.731980, 0.739300, 0.746760, 0.753960, 0.761280, 0.768740,", $
    " 0.775950, 0.783280, 0.790720, 0.797930, 0.805220, 0.812620,", $
    " 0.819890, 0.827210, 0.834630, 0.841900, 0.849220, 0.856630,", $
    " 0.863910, 0.871220, 0.878630, 0.885890, 0.893860, 0.900320,", $
    " 0.907870, 0.915180, 0.922540, 0.929830, 0.937130, 0.944450,", $
    " 0.951770, 0.959070, 0.966380, 0.973820, 0.981000, 0.988830,", $
    " 0.995880, 1.00295, 1.01005, 1.01695, 1.02471, 1.03195, 1.03865,", $
    " 1.04598, 0.884210, 0.900750, 0.916920, 0.933080, 0.949800,", $
    " 0.965680, 0.982260, 0.998820, 1.01479, 1.03132, 1.04755,", $
    " 1.06541, 1.08183, 1.09806, 1.11396, 1.13024, 1.14695, 1.16370,", $
    " 1.17996, 1.19622, 1.21246, 1.22859, 1.24492, 1.26166, 1.27813,", $
    " 1.29482, 1.31091, 1.32695, 1.34324, 1.35952, 1.37695, 1.39326,", $
    " 1.40940, 1.42557, 1.44184, 1.45841, 1.47514, 1.49169, 1.50794,", $
    " 1.52421, 1.54035, 1.55674, 1.57361, 1.59018, 1.60228, 1.62523,", $
    " 1.64160, 1.65567, 1.67238, 1.68901, 1.70536, 1.72175, 1.73802,", $
    " 1.75436, 1.77105, 1.78771, 1.80401, 1.82004, 1.83616, 1.85288,", $
    " 1.86933, 1.88679, 1.90261, 1.91916, 1.93545, 1.95191, 1.96871,", $
    " 1.98531, 2.00167, 2.01781, 2.03424, 2.05091, 2.06757, 2.08400,", $
    " 2.10034, 2.11667, 2.13337, 2.15018, 2.16652, 2.18288, 2.19920,", $
    " 2.21591, 2.23282, 2.24952, 2.26622, 2.28238, 2.29921, 2.31612,", $
    " 2.33325, 2.35043, 2.36765, 2.38472, 2.40156, 2.41820, 2.43471,", $
    " 2.45097, 2.46723, 2.48360, 2.50002, 2.51659, 2.53292, 2.54916,", $
    " 2.56437, 2.58176, 2.59807, 2.61508, 2.63000, 2.64650, 2.66146,", $
    " 2.68085, 2.69620, 2.71205, 2.73270, 2.74770, 2.76305, 2.78118,", $
    " 2.79889, 2.81606, 2.83247, 2.84954, 2.86609, 2.88242, 2.89878,", $
    " 2.91540, 2.93143, 2.94726, 2.96327, 2.97720, 3.00072, 3.01382,", $
    " 3.02970, 3.04806, 3.06446, 3.08036, 3.09689, 3.11213, 3.12962,", $
    " 3.14667, 3.16304, 3.17974, 3.19708, 3.21364, 3.23150, 3.24806,", $
    " 3.26561, 3.28298, 3.29946, 3.31619, 3.33338, 3.34981, 3.36564,", $
    " 3.38183, 3.39872, 3.41546, 3.43178, 3.44874, 3.46475, 3.48137,", $
    " 3.49795, 3.51284, 3.53015, 3.54664, 3.56274, 3.58034, 3.59610,", $
    " 3.61387, 3.63085, 3.64853, 3.66522, 3.68283, 3.69953, 3.71743,", $
    " 3.73439, 3.75103, 3.76763, 3.78444, 3.80083, 3.81742, 3.83472,", $
    " 3.85141, 3.86184, 3.88167, 3.89859, 3.91478, 3.93069, 3.94762,", $
    " 3.96375, 3.98015, 3.99672, 4.01280, 4.02944, 4.04730, 4.06295,", $
    " 4.08086, 4.09743, 4.11450, 4.13183, 4.14883, 4.16644, 4.18299,", $
    " 4.19839, 4.21120, 4.22402, 4.24220, 4.26028, 4.27840, 4.29650,", $
    " 4.31470, 4.33280, 4.35094, 4.36646, 4.38295, 4.39793, 4.41537,", $
    " 4.43172, 4.44772, 4.46573, 4.48240, 4.49951, 4.51591, 4.53379,", $
    " 4.55187, 4.56797, 4.58556, 4.60290, 4.62010, 4.63615, 4.65416,", $
    " 4.67034, 4.68721, 4.70290, 4.71956, 4.73706, 4.75351, 4.77031,", $
    " 4.78673, 4.80349, 4.81952, 4.83577, 4.85292, 4.86940, 4.88553,", $
    " 4.90265, 4.91983, 4.93685, 4.95389, 4.97178, 4.98896, 5.00576,", $
    " 5.02240, 5.04078, 5.05734, 5.07402, 5.09106, 5.10680, 5.10800)", $
    "    BAND_BIN_ORIGINAL_BAND = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,", $
    " 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,", $
    " 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,", $
    " 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,", $
    " 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,", $
    " 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,", $
    " 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,", $
    " 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,", $
    " 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,", $
    " 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,", $
    " 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,", $
    " 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,", $
    " 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,", $
    " 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,", $
    " 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,", $
    " 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,", $
    " 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,", $
    " 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,", $
    " 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,", $
    " 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,", $
    " 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,", $
    " 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,", $
    " 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,", $
    " 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,", $
    " 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,", $
    " 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352)", $
    "  END_GROUP = BAND_BIN", $
    "END_OBJECT = QUBE", $
    "END" $
  ]

  history = [ $
      "                                                                 ", $
      "                                                                 ", $
      "                                                                 ", $
      "                                                       END       " $
  ]

  a = 13B
  aa = 10B
  openw, olun, output_file, /GET_LUN
  phd = size(proto_head)
  for i = 0, phd[1]-1 do begin
    writeu, olun, proto_head[i]
    writeu, olun, a
    writeu, olun, aa
  endfor
  point_lun,-olun,thispos

  ; write zeros out until we are at the history place.
  i=0L
  for i = 0,((15-1)*512L - thispos)-1 do begin
    writeu,olun,0B
  endfor

  phd = size(history)
  for i = 0, phd[1]-1 do begin
    writeu, olun, history[i]
    writeu, olun, a
    writeu, olun, aa
  endfor
  point_lun,-olun,thispos

  ; write zeros out until we are at the data place.
  i=0L
  for i = 0,((20-1)*512L - thispos)-1 do begin
    writeu,olun,0B
  endfor

  ; Now, write out the data.
  for k = 0, bands-1 do begin
    for j = 0, lines-1 do begin
      samptemp = dark_array[*,j,k]
      writeu,olun,samptemp
    endfor
  endfor

  close,olun
  free_lun,olun

end
