Exemple #1
0
PUBLIC int main(int argc, char *argv[]) {
  if (argc < 2) {
    fprintf(stderr,
	    "Usage: move [-t] <dbfilename> [<move-source-code-file> ...]\n"
	    "\t-t\tInhibits loading threads which were active when the DB was saved\n");
    exit(MOVE_EXIT_ERROR);
  }

  signal(SIGINT, siginthandler);	/* %%% This can be made to emergency-flush
					   the database to disk, later on %%% */

  write_pid();

  init_gc();
  init_object();
  init_prim();
  init_vm_global();
  init_thread();

  checkpoint_filename = "move.checkpoint";

  install_primitives();

  {
    int load_threads = 1;

    if (!strcmp(argv[1], "-t")) {
      load_threads = 0;
      argv++;
      argc--;
    }

    import_db(argv[1], load_threads);
  }

  bind_primitives_to_symbols();

  import_cmdline_files(argc - 2, argv + 2);

  run_main_loop();

  done_gc();
  return MOVE_EXIT_OK;
}
Exemple #2
0
void init_ground_env(void) {
	init_prim(L"+", prim_plus);
	init_prim(L"*", prim_times);
	init_prim(L"-", prim_minus);
	init_prim(L"/", prim_divided);
	init_prim(L"$\\", prim_lambda);
	init_prim(L"$lambda", prim_lambda);
	init_prim(L"$quote", prim_quote);
	init_prim(L"eval", prim_eval);
	init_prim(L"apply", prim_apply);
	init_prim(L"$define!", prim_define);
	init_prim(L"$set!", prim_set);
	init_prim(L"$if", prim_if);
	init_prim(L"=?", prim_equals);
	init_prim(L">?", prim_greater);
	init_prim(L">=?", prim_greater_eq);
	init_prim(L"<?", prim_lesser);
	init_prim(L"<=?", prim_lesser_eq);
	init_prim(L"=", prim_equals);
	init_prim(L">", prim_greater);
	init_prim(L">=", prim_greater_eq);
	init_prim(L"<", prim_lesser);
	init_prim(L"<=", prim_lesser_eq);
	init_prim(L"and?", prim_and);
	init_prim(L"$and?", prim_s_and);
	init_prim(L"or?", prim_or);
	init_prim(L"$or?", prim_s_or);
	init_prim(L"car", prim_car);
	init_prim(L"cdr", prim_cdr);
	init_prim(L"set-car!", prim_set_car);
	init_prim(L"set-cdr!", prim_set_cdr);
	init_prim(L"cons", prim_cons);
	init_prim(L"$sequence", prim_sequence);
	init_prim(L"$seq", prim_sequence);
	init_prim(L"null?", prim_null);
	init_prim(L"pair?", prim_p_pair);
	init_prim(L"symbol?", prim_p_symbol);
	init_prim(L"number?", prim_p_number);
	init_prim(L"primitive?", prim_p_primitive);
	init_prim(L"end-object?", prim_p_end_obj);
	init_prim(L"boolean?", prim_p_boolean);
	init_prim(L"environment?", prim_p_environment);
	init_prim(L"procedure?", prim_p_procedure);
	init_prim(L"ignore?", prim_p_ignore);
	init_prim(L"eq?", prim_eq);
	init_prim(L"make-end-object", prim_make_end_obj);
	init_prim(L"list", prim_list);
	init_prim(L"character?", prim_p_character);
	init_prim(L"array?", prim_p_array);
	init_prim(L"string?", prim_p_array);
	init_prim(L"array-ref", prim_array_ref);
	init_prim(L"array-set!", prim_array_set);
	init_prim(L"array-length", prim_array_length);
	init_prim(L"make-array", prim_make_array);
	init_prim(L"make-empty-environment", prim_make_empty_environment);
	init_prim(L"$get-current-environment", prim_get_current_environment);
	init_prim(L"port?", prim_p_port);
	init_prim(L"read", prim_read);
	init_prim(L"write", prim_write);
	init_prim(L"open-file", prim_open_file);
	init_prim(L"close-port", prim_close_port);
	init_prim(L"not", prim_not);
	init_prim(L"$parent-environment", prim_parent_environment);
	init_prim(L"$make-child-environment", prim_make_child_environment);
	init_prim(L"$load", prim_load);
	init_prim(L"$environment-symbols", prim_environment_symbols);
	init_prim(L"$load-foreign-library", prim_load_foreign_library);
	init_prim(L"foreign-object?", prim_p_foreign_object);
	init_prim(L"make-socket", prim_make_socket);
}
Exemple #3
0
main()
{
	DB		db[2];		/* packet double buffer */
	DB		*cdb;		/* current db */
	MATRIX		rottrans;	/* rot-trans matrix */
	int		i;		/* work */
	int		dmy, flg;	/* dummy */
	CVECTOR		col[12];	/* cube color */
	u_long		cnt;

	etc.near_clip=500;
	etc.far_clip=5000;
	etc.clip_off=0;
	
	PadInit(0);             /* initialize PAD */
	ResetGraph(0);		/* reset graphic subsystem (0:cold,1:warm) */
	SetGraphDebug(0);	/* set debug mode (0:off, 1:monitor, 2:dump) */
	
	InitGeom();			/* initialize geometry subsystem */
	SetGeomOffset(320, 240);	/* set geometry origin as (160, 120) */
	SetGeomScreen(SCR_Z);		/* distance to viewing-screen */

	SetLightMatrix(&LLM);
	SetColorMatrix(&LCM);
	SetBackColor(BK.vx,BK.vy,BK.vz);
	SetFarColor(FC.vx,FC.vy,FC.vz);
	SetFogNear(1*SCR_Z,SCR_Z);
	
	/* initialize environment for double buffer (interlace)
	 *	buffer ID	VRAM address 
	 *-------------------------------------------------------
	 *	buffer #0	(0,  0)-(640,480)
	 *	buffer #1	(0,  0)-(640,480)
	 */
	SetDefDrawEnv(&db[0].draw, 0, 0, 640, 480);	
	SetDefDrawEnv(&db[1].draw, 0, 0, 640, 480);	
	SetDefDispEnv(&db[0].disp, 0, 0, 640, 480);	
	SetDefDispEnv(&db[1].disp, 0, 0, 640, 480);
	
	FntLoad(960,256);
	SetDumpFnt(FntOpen(64,64,256,200,0,512));
	SetRCnt(RCntCNT2,0xffff,RCntMdNOINTR|RCntMdFR);
	StartRCnt(RCntCNT2);

	/* set surface colors */
	for (i = 0; i < 12; i+=2) {
		col[i].r = col[i+1].r = 0xff/*rand()*/;	/* R */
		col[i].g = col[i+1].g = 0xff/*rand()*/;	/* G */
		col[i].b = col[i+1].b = 0xff/*rand()*/;	/* B */
		col[i].cd = col[i+1].cd = CODE_G3;	/* cd */
	}
	
	init_prim(&db[0]);	/* set primitive parameters on buffer #0 */
	init_prim(&db[1]);	/* set primitive parameters on buffer #1 */
	
	SetDispMask(1);		/* enable to display (0:inhibit, 1:enable) */
	
	while (pad_read(&rottrans) == 0) {
		cdb = (cdb==db)? db+1: db;	/* swap double buffer ID */
		ClearOTagR(cdb->ot, OTSIZE);	/* clear ordering table */

		/* add cube */
		ResetRCnt(RCntCNT2);

		add_cube(cdb->ot, cdb->s, v, n, col);

		cnt= GetRCnt(RCntCNT2);
		FntPrint("cnt=%d\n",cnt);
		
		/* swap buffer */
		DrawSync(0);	/* wait for end of drawing */
		VSync(0);	/* wait for the next V-BLNK */
	
		PutDrawEnv(&cdb->draw); /* update drawing environment */
		PutDispEnv(&cdb->disp); /* update display environment */

		DrawOTag(cdb->ot+OTSIZE-1);	/* draw */
		FntFlush(-1);
	}
        PadStop();
        exit();
}