コード例 #1
0
ファイル: gemdos_dispatch.c プロジェクト: e8johan/libotosis
unsigned long dispatch_gemdos(char * _args)
{
  TOSARG(short, callnum);
  long rv;

  /* Allocate a program structure if needed */
  if (prog == NULL)
  {
    prog = new_program ();
  }

  /* Check for possible MiNT call */
  if (prog->emulate_mint && callnum >= 255)
  {
    rv = dispatch_mint(_args - 2);
  }
  else if (callnum < 0 || callnum > arraysize(gemdos_syscalls) ||
           !gemdos_syscalls[callnum])
  {
    DDEBUG( "call to invalid GEMDOS function #%d\n", callnum );
    rv = TOS_EINVFN;
  }
  else
  {
    STRACE_BEGIN(gemdos, _args);
    rv = gemdos_syscalls[ callnum ](_args);
    STRACE_END( gemdos, _args, rv );
  }

  return rv;
}
コード例 #2
0
ファイル: rectangle.cpp プロジェクト: kdt3rd/gecko
void rectangle::initialize( platform::context &ctxt )
{
	if ( !_stash )
	{
		if ( ctxt.retrieve_common( this, _stash ) )
		{
			// new object
			//
			// Setup program with vertex and fragment shaders
			_stash->_mesh.set_program( new_program( ctxt.api(), "simple.vert", "single_color.frag" ) );

			// Setup vertices
			gl::vertex_buffer_data<gl::vec2> vertices;
			vertices.push_back( { 0.F, 0.F } );
			vertices.push_back( { 1.F, 0.F } );
			vertices.push_back( { 1.F, 1.F } );
			vertices.push_back( { 0.F, 1.F } );
			vertices.vbo( gl::buffer_usage::STATIC_DRAW );

			gl::element_buffer_data elements { 0, 3, 1, 1, 3, 2 };
			{
				auto bound = _stash->_mesh.bind();
				bound.vertex_attribute( "position", vertices );
				bound.set_elements( elements );
			}

			_stash->_mesh.add_triangles( 6 );
			_stash->_matrix_loc = _stash->_mesh.get_uniform_location( "matrix" );
			_stash->_color_loc = _stash->_mesh.get_uniform_location( "color" );
		}
	}
}
コード例 #3
0
ファイル: create.c プロジェクト: CyberLeo/protomuck
/*
  Use this to create a program.
  First, find a program that matches that name.  If there's one,
  then we put him into edit mode and do it.
  Otherwise, we create a new object for him, and call it a program.
  */
void
do_prog(int descr, dbref player, const char *name)
{
    dbref i;
    struct match_data md;

    if (Typeof(player) != TYPE_PLAYER) {
        anotify_nolisten2(player, CFAIL "Only players can edit programs.");
        return;
    } else if (!Mucker(player)) {
        anotify_nolisten2(player, CFAIL NOMBIT_MESG);
        return;
    } else if (!tp_building || tp_db_readonly) {
        anotify_nolisten2(player, CFAIL NOBUILD_MESG);
        return;
    } else if (!*name) {
        anotify_nolisten2(player, CINFO "No program name given.");
        return;
    }

    init_match(descr, player, name, TYPE_PROGRAM, &md);
    match_possession(&md);
    match_neighbor(&md);
    match_registered(&md);
    match_absolute(&md);

    if ((i = match_result(&md)) == NOTHING) {
        i = new_program(OWNER(player), name);
        FLAGS(i) |= INTERNAL;
        DBFETCH(player)->sp.player.curr_prog = i;

        anotify_fmt(player, CSUCC "Program %s created with number %d.", name,
                    i);
        anotify_nolisten2(player, CINFO "Entering editor.");
    } else if (i == AMBIGUOUS) {
        anotify_nolisten2(player, CINFO "I don't know which one you mean!");
        return;
    } else {
        if ((Typeof(i) != TYPE_PROGRAM) || !controls(player, i)) {
            anotify_fmt(player, CFAIL "%s", tp_noperm_mesg);
            return;
        } else if (FLAGS(i) & INTERNAL) {
            anotify_nolisten2(player, CFAIL NOEDIT_MESG);
            return;
        }

        DBFETCH(i)->sp.program.first = read_program(i);
        FLAGS(i) |= INTERNAL;
        DBFETCH(player)->sp.player.curr_prog = i;
        anotify_fmt(player, CINFO "Entering editor for %s.",
                    unparse_object(player, i));
        /* list current line */
        do_list(player, i, 0, 0, 0);
        DBDIRTY(i);
    }

    FLAGS(player) |= INTERACTIVE;
    DBDIRTY(player);
}
コード例 #4
0
ファイル: chuck_absyn.cpp プロジェクト: Lebo124/chuck
a_Program prepend_program( a_Section section, a_Program program, int pos )
{
    a_Program a = new_program( section, pos );
    a->next = program;
    a->linepos = pos;
    
    return a;
}
コード例 #5
0
ファイル: program.cpp プロジェクト: shyamalschandra/pyopencl
// Program
error*
create_program_with_source(clobj_t *prog, clobj_t _ctx, const char *_src)
{
    auto ctx = static_cast<context*>(_ctx);
    return c_handle_error([&] {
            const auto &src = _src;
            const size_t length = strlen(src);
            cl_program result = pyopencl_call_guarded(
                clCreateProgramWithSource, ctx, len_arg(src), buf_arg(length));
            *prog = new_program(result, KND_SOURCE);
        });
}
コード例 #6
0
ファイル: program.cpp プロジェクト: shyamalschandra/pyopencl
error*
program__create_with_builtin_kernels(clobj_t *_prg, clobj_t _ctx,
                                     const clobj_t *_devs, uint32_t num_devs,
                                     const char *names)
{
    const auto devs = buf_from_class<device>(_devs, num_devs);
    auto ctx = static_cast<context*>(_ctx);
    return c_handle_error([&] {
            auto prg = pyopencl_call_guarded(clCreateProgramWithBuiltInKernels,
                                             ctx, devs, names);
            *_prg = new_program(prg);
        });
}
コード例 #7
0
ファイル: program.cpp プロジェクト: shyamalschandra/pyopencl
error*
program__link(clobj_t *_prg, clobj_t _ctx, const clobj_t *_prgs,
              size_t num_prgs, const char *opts, const clobj_t *_devs,
              size_t num_devs)
{
    const auto devs = buf_from_class<device>(_devs, num_devs);
    const auto prgs = buf_from_class<program>(_prgs, num_prgs);
    auto ctx = static_cast<context*>(_ctx);
    return c_handle_error([&] {
            auto prg = pyopencl_call_guarded(clLinkProgram, ctx, devs, opts,
                                             prgs, nullptr, nullptr);
            *_prg = new_program(prg);
        });
}
コード例 #8
0
ファイル: program.cpp プロジェクト: shyamalschandra/pyopencl
error*
create_program_with_binary(clobj_t *prog, clobj_t _ctx,
                           cl_uint num_devices, const clobj_t *devices,
                           const unsigned char **binaries, size_t *binary_sizes)
{
    auto ctx = static_cast<context*>(_ctx);
    const auto devs = buf_from_class<device>(devices, num_devices);
    pyopencl_buf<cl_int> binary_statuses(num_devices);
    return c_handle_error([&] {
            cl_program result = pyopencl_call_guarded(
                clCreateProgramWithBinary, ctx, devs,
                binary_sizes, binaries, binary_statuses.get());
            // for (cl_uint i = 0; i < num_devices; ++i)
            //   std::cout << i << ":" << binary_statuses[i] << std::endl;
            *prog = new_program(result, KND_BINARY);
        });
}
コード例 #9
0
ファイル: main.c プロジェクト: adrianomelo/c-compiler-in-c
int main (int argc, char* argv[])
{
    root = (ast_t*) new_program();

    if(argc > 1 && !strcmp(argv[1], "-d")) {
        //yydebug = 1; 
        argc--; 
        argv++;
    }

    if(argc > 1 && (yyin = fopen(argv[1], "r")) == NULL) { 
        perror(argv[1]);
        exit(1);
    }
    
    if(!yyparse()){
        printf("Analise sintatica OK!\n");
    } else {
        printf("ERRO na analise sintatica!\n");
    }

    s_visit_program ((program_t*) root);

}
コード例 #10
0
ファイル: Problem.c プロジェクト: yinghau76/Quiz
int main(int argc, char* argv[])
{
    FILE* fp;
    int i, j, k;
    int cases;
    char input[256];
    
    if (argc < 2 || (fp = fopen(argv[1], "rt")) == NULL){
        return -1;
    }
    
    fgets(input, 256, fp);
    sscanf(input, "%d", &cases);
    
    fgets(input, 256, fp);
    
    for (i = 0; i < cases; i++)
    {
        int num_programs;
        simulator_t sim;
        memset(&sim, 0, sizeof(sim));
        
        fgets(input, 256, fp);
        sscanf(input, "%d %d %d %d %d %d %d", 
            &num_programs, 
            &sim.op_cycles[0],
            &sim.op_cycles[1],
            &sim.op_cycles[2],
            &sim.op_cycles[3],
            &sim.op_cycles[4],
            &sim.time_quantum);

        for (j = 0; j < num_programs; j++)
        {
            sim.ready[j] = sim.programs[j] = new_program(j + 1);
            
            for (k = 0; ; k++)
            {
                instruction_t* inst;
                
                inst = &sim.programs[j]->code[k];
                
                fgets(input, 256, fp);
                if (strncmp(input, "print", 5) == 0)
                {
                    char* var;
                    inst->type = OP_PRINT;
                    
                    var = strtok(input + 5, " \t\n");
                    inst->print.var = var[0] - 'a';
                }
                else if (strncmp(input, "lock", 4) == 0)
                {
                    inst->type = OP_LOCK;
                }
                else if (strncmp(input, "unlock", 6) == 0)
                {
                    inst->type = OP_UNLOCK;
                }
                else if (strncmp(input, "end", 3) == 0)
                {
                    inst->type = OP_END;
                }
                else
                {
                    char* var;
                    
                    inst->type = OP_ASSIGNMENT;
                    var = strtok(input, " \t\n");
                    inst->assignment.var = var[0] - 'a';
                    
                    strtok(NULL, " \t\n");
                    inst->assignment.val = atoi(strtok(NULL, " \t\n"));
                }
                
                if (inst->type == OP_END) {
                    break;
                }
            }
        }
        
        run_simulator(&sim);
    }
    
    return EXIT_SUCCESS;
}
コード例 #11
0
ファイル: load.c プロジェクト: e8johan/otosis
TosProgram *load_tos_program( char *filename )
{
  TosProgram * prog;
  TosExecHeader *hdr;
  TosBasepage *bp;
  void *prg, *buf;
  ulong size;
  FILE *fp;
  char *env, *src, *dest;
  char ascii_num[ 4 ];

  /* Allocate a new program structure */
  prog = new_program ();

  /* Set up the MiNT emulation flag */
  DDEBUG( "Environment: %s\n", Opt_environment );
  prog->emulate_mint = Opt_MiNT;

  /* Set up GEM flag, if program name ends on .app or .prg
	 and Opt_GEM is not set to "no" */
  /* Use case insensitive compare */
  if(Opt_GEM && (!strncasecmp(filename+strlen(filename)-4, ".app", 4) ||
				 !strncasecmp(filename+strlen(filename)-4, ".prg", 4)))
	prog->gem = 1;
  else
	prog->gem = 0;
  
  /* Set up the environment */
  if( strcmp( Opt_environment, "-" ) == 0 ) {
	env = NULL;
  }
  else
  {
	env = (char *)mymalloc( strlen( Opt_environment ) + 2 );
	for( src = Opt_environment, dest = env ; *src ; src++ ) {
	  if( *src == '\\' ) {
		src++;
		if( *src >= '0' && *src <= '9' ) {
		  ascii_num[ 0 ] = *src++;
		  ascii_num[ 1 ] = *src++;
		  ascii_num[ 2 ] = *src;
		  ascii_num[ 3 ] = 0;
		  *dest++ = strtol( ascii_num, NULL, 8 );
		}
		else {
		  switch( *src ) {
		  case 'n':
			*dest++ = '\n';
			break;
		  case 'r':
			*dest++ = '\r';
			break;
		  default:
			*dest++ = *src;
			break;
		  }
		}
	  }
	  else if( *src == ',' ) {
		*dest++ = '\0';
	  }
	  else {
		*dest++ = *src;
	  }
	}
	*dest++ = 0;
	*dest++ = 0;
  }  

  /* Set up the trace flag */
  prog->trace = Opt_trace;

  if( (fp = fopen( filename, "r" )) == NULL ){
    fprintf( stderr, "Can't open %s: %s\n", filename, strerror(errno) );
    return NULL;
  }

  /* read the header */
  hdr = (TosExecHeader *)mymalloc( sizeof(TosExecHeader) );
  if (fread( hdr, sizeof(TosExecHeader), 1, fp ) != 1 ||
	  ntohs(hdr->magic) != TOS_PROGRAM_MAGIC) {
	fprintf( stderr, "%s: no GEMDOS executable\n", filename );
	free( hdr );
	fclose( fp );
	return NULL;
  }

  /* calculate size of TPA */
  size = sizeof(TosBasepage) + ntohl(hdr->tsize) + ntohl(hdr->dsize) +
    ntohl(hdr->bsize) + Opt_extra_mem*1024;
  buf = (void *)mymalloc( size );
  bp = (TosBasepage *)buf;
  prg = (void *)(bp + 1);

  /* read program text + data */
  if(fread(prg, sizeof(char), ntohl(hdr->tsize) + ntohl(hdr->dsize), fp ) !=
     ntohl(hdr->tsize) + ntohl(hdr->dsize))
  {
	  fprintf( stderr, "%s: short executable!\n", filename );
	err_ret:
	  free( buf );
	  free( hdr );
	  fclose( fp );
	  return NULL;
  }

  /* initialize basepage */
  bp->lowtpa = htonl((UInt32)bp);
  bp->hitpa = htonl((UInt32)buf + size);
  bp->tbase = htonl(TEXT_SEGMENT(hdr,prg));
  bp->tlen = hdr->tsize;
  bp->dbase = htonl(DATA_SEGMENT(hdr,prg));
  bp->dlen = hdr->dsize;
  bp->bbase = htonl(BSS_SEGMENT(hdr,prg));
  bp->blen = hdr->bsize;
  bp->parent = (Ptr32)NULL;
  bp->env = (char *)htonl((UInt32)env);
  bp->cmdlin[ 0 ] = 0;

  /*  patch_program( hdr ); */
  if (relocate_program( bp, hdr, fp ) < 0) {
	  fprintf( stderr, "%s: relocation failed\n", filename );
	  goto err_ret;
  }
  fclose( fp );
  
  /* clear BSS and maybe rest of TPA */
  memset((void *)BSS_SEGMENT(hdr,prg), 0,
         ntohl(hdr->bsize) +
         ((ntohl(hdr->prgflags) & TOS_PRGFLAG_FASTLOAD) ? 0 : Opt_extra_mem*1024) );

  prog->text = TEXT_SEGMENT(hdr,prg);
  prog->data = DATA_SEGMENT(hdr,prg);
  prog->bss = BSS_SEGMENT(hdr,prg);
  prog->size = size;

  prog->basepage = bp;
  prog->basepage->dta = (Dta *)ntohl((UInt32)prog->basepage->cmdlin);
  prog->dta = (Dta *)ntohl((UInt32)prog->basepage->dta);

  /* The program starts in user mode */
  prog->super = 0;
  
  /* The program starts in the TOS domain */
  prog->domain = 0;

#ifdef DEBUG_STACK
  start_stack = BSS_SEGMENT(hdr,prg) + ntohl(hdr->bsize);
#endif

  free(hdr);
  
  return prog;
}