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; }
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; } }
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); }
const char *page_length_reg::get_string() { return i_to_a(topdiv->get_page_length().to_units()); }
const char *page_offset_reg::get_string() { return i_to_a(topdiv->get_page_offset().to_units()); }
const char *constant_vunits_reg::get_string() { return i_to_a(p->to_units()); }
const char *page_ejecting_reg::get_string() { return i_to_a(topdiv->get_ejecting()); }
const char *next_page_number_reg::get_string() { return i_to_a(topdiv->get_next_page_number()); }
const char *distance_to_next_trap_reg::get_string() { return i_to_a(curdiv->distance_to_next_trap().to_units()); }
const char *high_water_mark_reg::get_string() { return i_to_a(curdiv->get_high_water_mark().to_units()); }
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; }
const char *column_extra_space_reg::get_string() { return i_to_a(the_column->get_last_extra_space().to_units()); }
const char *column_bottom_reg::get_string() { return i_to_a(the_column->get_bottom().to_units()); }