void make_data_stream1_1() {
  init_data_stream(
    538976310, 1869967650, 220358004, 538980362, 
    1696801312, 220358255, 538980362, 1965236768, 
    1701868398, 1768319331, 220357733, 538980362, 
    1008935456, 1668248176, 1920296037, 220348005);
//6   "quote"  0   "#eof"  0   "#unspecified"  0   "#<procedure>" 
  init_data_stream(
    537529610, 538976288, 538976288, 538976288, 
    538976288, 538976288, 538976288, 538976288, 
    538976288, 538976288, 538976288, 538976288, 
    538976288, 538976288, 538976288, 538976288);
//                                                                
  return;
}

void make_data_stream() {
  reset_data_stream_idx();

  // broken up into routines for arm literal pool size

  make_data_stream1_1();

  reset_data_stream_idx();
  return;
}

void init_args() {
  debug = 0;
  case_sensitive = 0;
  skip_blanks();
  while (ch == '-') {
    ch = my_getchar();
    if (ch == 'd')
      debug = 1;
    else
    if (ch == 'z')
      case_sensitive = 1;
    ch = my_getchar();
    skip_blanks();
  }
  return;
}

void init_stack() {

  // build the system stack

//stack = make_vector(stacksize);
  stack = 0;
  stackidx = 0;
  return;
}

void init_token() {
  token_list = 0;
  token_new = 0;
  token_tail = 0;
  return;
}

void init_atomlist() {

  // build the atomlist hash table

  atomlist = make_hash_table(4096);
  return;
}

void init_keywords() {

  // initialize the atomlist with the primitive functions

  quoteatom = atomize_string();

  // special and hidden variables

  eofatom = atomize_string();
  unspecifiedatom = atomize_string();
  procedureatom = atomize_string();

  return;
}

void gccopykeywords() {

  // locate global keywords during a gc

  // special and hidden variables

  eofatom = gc_copy(eofatom);
  unspecifiedatom = gc_copy(unspecifiedatom);
  procedureatom = gc_copy(procedureatom);

  return;
}

void init_global_vars() {
  call_cc_code = // TODO
    kons(
      kons(make_integer(18), // argsatom
      kons(make_integer(1),
      0)),
    kons(
      kons(make_integer(14), // lvaratom
      kons(make_integer(1),
      kons(make_integer(0),
      0))),
    kons(
      (kons(make_integer(90), // setccatom
      0)),
    kons(
      kons(make_integer(14), // lvaratom
      kons(make_integer(0),
      kons(make_integer(0),
      0))),
    kons(
      kons(make_integer(25), // returnatom
      0),
    0)))));
  return;
}

void initialize() {
  is_data_stream = 1;
  make_data_stream();

  curr_cell = 2;
  cell_max = n_cells - 1;
  init_stack();
  init_token();
  init_atomlist();
  init_keywords();
  init_global_vars();

  globals = make_hash_table(4096);

  is_data_stream = 0;
  init_args();

  code = assemble(readin());

  instructions = code;

  env = 0;

  gc_car = 0;
  gc_cdr = 0;
  operands = 0;
  binding = 0;
  closure = 0;
  returnval = 0;
  arglist = 0;
  stack_arg1 = 0;
  stack_arg2 = 0;
  stack_arg3 = 0;

  return;
}
