Example #1
0
void CSystem::SetCPUClock( uint16_t& mhz )
{
    // Range check
    if (mhz == 0 || mhz > CPU_CLOCK_MAX)
    {
        Log( "CPU mhz out of range, resetting to default. Value is now %d and allowed values should be between 0 and %d Mhz.\n", mhz, CPU_CLOCK_MAX );
        mhz = CPU_CLOCK_DEF;
    }

#if defined(PANDORA)
    string command = "/usr/bin/sudo cpuset " + i_to_a(mhz);
    execlp( command.c_str(), command.c_str(), NULL, NULL, NULL );

#elif defined(WIZ) || defined(CAANOO)
    if (memdev != 0 && memregs != 0)
    {
        volatile uint32_t *memregl = static_cast<volatile uint32_t*>((volatile void*)memregs);
        uint32_t mdiv, pdiv = 9, sdiv = 0;
        uint32_t v;

        mdiv = (mhz * pdiv) / SYS_CLK_FREQ;
        if (mdiv & ~0x3ff) return;
        v = pdiv<<18 | mdiv<<8 | sdiv;

        PLLSETREG0 = v;
        PWRMODE |= 0x8000;
        for (int i = 0; (PWRMODE & 0x8000) && i < 0x100000; i++);
    }

#elif defined(GP2X)
    if (memdev != 0 && memregs != 0)
    {
        uint32_t v;
        uint32_t mdiv, pdiv=3, scale=0;

        mhz *= 1000000;
        mdiv = (mhz * pdiv) / SYS_CLK_FREQ;
        mdiv = ((mdiv-8)<<8) & 0xff00;
        pdiv = ((pdiv-2)<<2) & 0xfc;
        scale &= 3;
        v = mdiv | pdiv | scale;
        MEM_REG[0x910>>1] = v;
    }
Example #2
0
void errarg::print() const
{
  switch (type) {
  case INTEGER:
    fputs(i_to_a(n), stderr);
    break;
  case UNSIGNED_INTEGER:
    fputs(ui_to_a(u), stderr);
    break;
  case CHAR:
    putc(c, stderr);
    break;
  case STRING:
    fputs(s, stderr);
    break;
  case DOUBLE:
    fprintf(stderr, "%g", d);
    break;
  case EMPTY:
    break;
  }
}
Example #3
0
ps_printer::~ps_printer()
{
  out.simple_comment("Trailer")
     .put_symbol("end")
     .simple_comment("EOF");
  if (fseek(tempfp, 0L, 0) < 0)
    fatal("fseek on temporary file failed");
  fputs("%!PS-Adobe-", stdout);
  fputs((broken_flags & USE_PS_ADOBE_2_0) ? "2.0" : "3.0", stdout);
  putchar('\n');
  out.set_file(stdout);
  if (cmyk_flag)
    out.begin_comment("Extensions:")
       .comment_arg("CMYK")
       .end_comment();
  out.begin_comment("Creator:")
     .comment_arg("groff")
     .comment_arg("version")
     .comment_arg(Version_string)
     .end_comment();
  {
    fputs("%%CreationDate: ", out.get_file());
#ifdef LONG_FOR_TIME_T
    long
#else
    time_t
#endif
    t = time(0);
    fputs(ctime(&t), out.get_file());
  }
  for (font_pointer_list *f = font_list; f; f = f->next) {
    ps_font *psf = (ps_font *)(f->p);
    rm.need_font(psf->get_internal_name());
  }
  rm.print_header_comments(out);
  out.begin_comment("Pages:")
     .comment_arg(i_to_a(pages_output))
     .end_comment();
  out.begin_comment("PageOrder:")
     .comment_arg("Ascend")
     .end_comment();
  if (!(broken_flags & NO_PAPERSIZE)) {
    int w = media_width();
    int h = media_height();
    if (w > 0 && h > 0)
      fprintf(out.get_file(),
	      "%%%%DocumentMedia: %s %d %d %d %s %s\n",
	      media_name(),			// tag name of media
	      w,				// media width
	      h,				// media height
	      0,				// weight in g/m2
	      "()",				// paper color, e.g. white
	      "()"				// preprinted form type
	     );
    else {
      if (h <= 0)
	// see ps_printer::ps_printer
	warning("bad paper height, defaulting to 11i");
      if (w <= 0)
	warning("bad paper width");
    }
  }
  out.begin_comment("Orientation:")
     .comment_arg(landscape_flag ? "Landscape" : "Portrait")
     .end_comment(); 
  if (ncopies != 1) {
    out.end_line();
    fprintf(out.get_file(), "%%%%Requirements: numcopies(%d)\n", ncopies);
  }
  out.simple_comment("EndComments");
  if (!(broken_flags & NO_PAPERSIZE)) {
    /* gv works fine without this one, but it really should be there. */
    out.simple_comment("BeginDefaults");
    fprintf(out.get_file(), "%%%%PageMedia: %s\n", media_name());
    out.simple_comment("EndDefaults");
  }
  out.simple_comment("BeginProlog");
  rm.output_prolog(out);
  if (!(broken_flags & NO_SETUP_SECTION)) {
    out.simple_comment("EndProlog");
    out.simple_comment("BeginSetup");
  }
#if 1
  /*
   * Define paper (i.e., media) size for entire document here.
   * This allows ps2pdf to correctly determine page size, for instance.
   */
  media_set();
#endif
  rm.document_setup(out);
  out.put_symbol(dict_name)
     .put_symbol("begin");
  if (ndefs > 0)
    ndefs += DEFS_DICT_SPARE;
  out.put_literal_symbol(defs_dict_name)
     .put_number(ndefs + 1)
     .put_symbol("dict")
     .put_symbol("def");
  out.put_symbol(defs_dict_name)
     .put_symbol("begin");
  out.put_literal_symbol("u")
     .put_delimiter('{')
     .put_fix_number(1)
     .put_symbol("mul")
     .put_delimiter('}')
     .put_symbol("bind")
     .put_symbol("def");
  defs += '\0';
  out.special(defs.contents());
  out.put_symbol("end");
  if (ncopies != 1)
    out.put_literal_symbol("#copies")
       .put_number(ncopies)
       .put_symbol("def");
  out.put_literal_symbol("RES")
     .put_number(res)
     .put_symbol("def");
  out.put_literal_symbol("PL");
  if (guess_flag)
    out.put_symbol("PLG");
  else
    out.put_fix_number(paper_length);
  out.put_symbol("def");
  out.put_literal_symbol("LS")
     .put_symbol(landscape_flag ? "true" : "false")
     .put_symbol("def");
  if (manual_feed_flag) {
    out.begin_comment("BeginFeature:")
       .comment_arg("*ManualFeed")
       .comment_arg("True")
       .end_comment()
       .put_symbol("MANUAL")
       .simple_comment("EndFeature");
  }
  encode_fonts();
  while (subencodings) {
    subencoding *tem = subencodings;
    subencodings = subencodings->next;
    encode_subfont(tem);
    out.put_literal_symbol(tem->subfont)
       .put_symbol(make_subencoding_name(tem->idx))
       .put_literal_symbol(tem->p->get_internal_name())
       .put_symbol("RE");
    delete tem;
  }
  out.simple_comment((broken_flags & NO_SETUP_SECTION)
		     ? "EndProlog"
		     : "EndSetup");
  out.end_line();
  out.copy_file(tempfp);
  fclose(tempfp);
}
Example #4
0
const char *page_length_reg::get_string()
{
  return i_to_a(topdiv->get_page_length().to_units());
}
Example #5
0
const char *page_offset_reg::get_string()
{
  return i_to_a(topdiv->get_page_offset().to_units());
}
Example #6
0
const char *constant_vunits_reg::get_string()
{
  return i_to_a(p->to_units());
}
Example #7
0
const char *page_ejecting_reg::get_string()
{
  return i_to_a(topdiv->get_ejecting());
}
Example #8
0
const char *next_page_number_reg::get_string()
{
  return i_to_a(topdiv->get_next_page_number());
}
Example #9
0
const char *distance_to_next_trap_reg::get_string()
{
  return i_to_a(curdiv->distance_to_next_trap().to_units());
}
Example #10
0
const char *high_water_mark_reg::get_string()
{
  return i_to_a(curdiv->get_high_water_mark().to_units());
}
Example #11
0
static const char *number_value_to_ascii(int value, char format, int width)
{
  static char buf[128];		// must be at least 21
  switch(format) {
  case '1':
    if (width <= 0)
      return i_to_a(value);
    else if (width > int(sizeof(buf) - 2))
      sprintf(buf, "%.*d", int(sizeof(buf) - 2), int(value));
    else
      sprintf(buf, "%.*d", width, int(value));
    break;
  case 'i':
  case 'I':
    {
      char *p = buf;
      // troff uses z and w to represent 10000 and 5000 in Roman
      // numerals; I can find no historical basis for this usage
      const char *s = format == 'i' ? "zwmdclxvi" : "ZWMDCLXVI";
      int n = int(value);
      if (n >= 40000 || n <= -40000) {
	error("magnitude of `%1' too big for i or I format", n);
	return i_to_a(n);
      }
      if (n == 0) {
	*p++ = '0';
	*p = 0;
	break;
      }
      if (n < 0) {
	*p++ = '-';
	n = -n;
      }
      while (n >= 10000) {
	*p++ = s[0];
	n -= 10000;
      }
      for (int i = 1000; i > 0; i /= 10, s += 2) {
	int m = n/i;
	n -= m*i;
	switch (m) {
	case 3:
	  *p++ = s[2];
	  /* falls through */
	case 2:
	  *p++ = s[2];
	  /* falls through */
	case 1:
	  *p++ = s[2];
	  break;
	case 4:
	  *p++ = s[2];
	  *p++ = s[1];
	  break;
	case 8:
	  *p++ = s[1];
	  *p++ = s[2];
	  *p++ = s[2];
	  *p++ = s[2];
	  break;
	case 7:
	  *p++ = s[1];
	  *p++ = s[2];
	  *p++ = s[2];
	  break;
	case 6:
	  *p++ = s[1];
	  *p++ = s[2];
	  break;
	case 5:
	  *p++ = s[1];
	  break;
	case 9:
	  *p++ = s[2];
	  *p++ = s[0];
	}
      }
      *p = 0;
      break;
    }
  case 'a':
  case 'A':
    {
      int n = value;
      char *p = buf;
      if (n == 0) {
	*p++ = '0';
	*p = 0;
      }
      else {
	if (n < 0) {
	  n = -n;
	  *p++ = '-';
	}
	// this is a bit tricky
	while (n > 0) {
	  int d = n % 26;
	  if (d == 0)
	    d = 26;
	  n -= d;
	  n /= 26;
	  *p++ = format == 'a' ? lowercase_array[d - 1] :
				 uppercase_array[d - 1];
	}
	*p-- = 0;
	char *q = buf[0] == '-' ? buf + 1 : buf;
	while (q < p) {
	  char temp = *q;
	  *q = *p;
	  *p = temp;
	  --p;
	  ++q;
	}
      }
      break;
    }
  default:
    assert(0);
    break;
  }
  return buf;
}
Example #12
0
const char *column_extra_space_reg::get_string()
{
    return i_to_a(the_column->get_last_extra_space().to_units());
}
Example #13
0
const char *column_bottom_reg::get_string()
{
    return i_to_a(the_column->get_bottom().to_units());
}