Esempio n. 1
0
int main()
{
    return InitializeAttackBoards();
}
void Initialize(int continuing)
{
/*
 ----------------------------------------------------------
|                                                          |
|   perform routine initialization.                        |
|                                                          |
 ----------------------------------------------------------
*/
  int i=0;

  InitializeZeroMasks();
  InitializeMasks();
  InitializeRandomHash();
  InitializeAttackBoards();
  InitializePawnMasks();
  InitializePieceMasks();
  InitializeChessBoard(&position[0]);
#if defined(NT_i386) || defined(NT_AXP)
  _fmode = _O_BINARY;  /* set global file mode to binary to avoid text translation */
#endif

  last[0]=move_list;
  if (continuing) {
    history_file=fopen("game.001","r+");
    if (!log_file || !history_file) {
      printf("\nsorry.  nothing to continue.\n\n");
      history_file=fopen("game.001","w+");
    }
    else {
      sprintf(buffer,"read game.001");
      (void) Option();
    }
  }
  else {
    history_file=fopen("game.001","w+");
  }

  trans_ref_wa=(HASH_ENTRY*)malloc(16*hash_table_size);
  trans_ref_wb=(HASH_ENTRY*)malloc(16*2*hash_table_size);
  trans_ref_ba=(HASH_ENTRY*)malloc(16*hash_table_size);
  trans_ref_bb=(HASH_ENTRY*)malloc(16*2*hash_table_size);
  pawn_hash_table=(PAWN_HASH_ENTRY*)malloc(sizeof(PAWN_HASH_ENTRY)*pawn_hash_table_size);
  InitializeHashTables();
  if (!trans_ref_wa || !trans_ref_wb || !trans_ref_ba || !trans_ref_bb ) {
    printf("malloc() failed, not enough memory.\n");
    free(trans_ref_wa);
    free(trans_ref_wb);
    free(trans_ref_ba);
    free(trans_ref_bb);
    free(pawn_hash_table);
    hash_table_size=0;
    pawn_hash_table_size=0;
    log_hash=0;
    log_pawn_hash=0;
    trans_ref_wa=0;
    trans_ref_wb=0;
    trans_ref_ba=0;
    trans_ref_bb=0;
    pawn_hash_table=0;
  }
  hash_maska=(1<<log_hash)-1;
  hash_maskb=(1<<(log_hash+1))-1;
  pawn_hash_mask=((unsigned int) 037777777777)>>(32-log_pawn_hash);
}