X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=sim%2Fucsim%2Fcmd.src%2Fget.cc;h=fe6d4c4629626e31883464ead3ea63a74d4140f6;hb=90f4aedaef8a2310573eef905f95c671f84e5cde;hp=ab2888bc29880365775614e5e501a9783be9c5c5;hpb=1854d0ec377d6032617c09d2bd31fa0866764744;p=fw%2Fsdcc diff --git a/sim/ucsim/cmd.src/get.cc b/sim/ucsim/cmd.src/get.cc index ab2888bc..fe6d4c46 100644 --- a/sim/ucsim/cmd.src/get.cc +++ b/sim/ucsim/cmd.src/get.cc @@ -1,8 +1,8 @@ /* - * Simulator of microcontrollers (get.cc) + * Simulator of microcontrollers (cmd.src/get.cc) * * Copyright (C) 1999,99 Drotos Daniel, Talker Bt. - * + * * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu * */ @@ -27,53 +27,104 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "ddconfig.h" +#include +#include "i_string.h" + +// prj +#include "utils.h" + // sim #include "simcl.h" +#include "optioncl.h" // local #include "cmdsetcl.h" +#include "getcl.h" +#include "cmdutil.h" /* - * GET TIMER + * Command: get sfr + *---------------------------------------------------------------------------- */ -int -cl_get_cmd::timer(class cl_cmdline *cmdline, class cl_console *con) +//int +//cl_get_sfr_cmd::do_work(class cl_sim *sim, +// class cl_cmdline *cmdline, class cl_console_base *con) +COMMAND_DO_WORK_UC(cl_get_sfr_cmd) { - class cl_cmd_arg *params[4]= { cmdline->param(0), - cmdline->param(1), - cmdline->param(2), - cmdline->param(3) }; - int what; - class cl_ticker *ticker; - - if (params[1] != 0) + class cl_address_space *mem= uc->address_space(MEM_SFR_ID); + class cl_cmd_arg *parm; + int i; + + if (!mem) { - what= (params[1])->get_ivalue(); - if ((ticker= sim->uc->get_counter(what)) == 0) - { - con->printf("Timer %d does not exist\n", what); - return(0); - } - con->printf("timer #%d: %g sec (%lu clks)\n", what, - ticker->get_rtime(sim->uc->xtal), ticker->ticks); + con->dd_printf("Error: No SFR\n"); + return(DD_FALSE); } + for (i= 0, parm= cmdline->param(i); + parm; + i++, parm= cmdline->param(i)) + { + if (!parm->as_address(uc) || + !mem->valid_address(parm->value.address)) + con->dd_printf("Warning: Invalid address %s\n", + (char*)cmdline->tokens->at(i+1)); + else + mem->dump(parm->value.address, parm->value.address, 1, con); + } + + return(DD_FALSE);; +} + + +/* + * Command: get option + *---------------------------------------------------------------------------- + */ + +//int +//cl_get_option_cmd::do_work(class cl_sim *sim, +// class cl_cmdline *cmdline, class cl_console_base *con) +COMMAND_DO_WORK_APP(cl_get_option_cmd) +{ + class cl_cmd_arg *parm= cmdline->param(0); + char *s= 0; + + if (!parm) + ; + else if (cmdline->syntax_match(0/*app->get_uc()*/, STRING)) { + s= parm->value.string.string; + } else + con->dd_printf("%s\n", short_help?short_help:"Error: wrong syntax\n"); + + int i; + for (i= 0; i < app->options->count; i++) { - con->printf("time: %g sec (%lu clks)\n", - sim->uc->get_rtime(), sim->uc->ticks->ticks); - for (what= 0; what < sim->uc->counters->count; what++) - { - ticker= sim->uc->get_counter(what); - if (ticker) - con->printf("timer #%d: %g sec (%lu clks)\n", what, - ticker->get_rtime(sim->uc->xtal), ticker->ticks); - } + class cl_option *o= (class cl_option *)(/*uc*/app->options->at(i)); + if ((!s || + !strcmp(s, o->get_name()))) + { + if (!o->hidden) + { + con->dd_printf("%2d. %s(by %s): ", i, object_name(o), + object_name(o->get_creator())); + o->print(con); + con->dd_printf(" - %s\n", o->help); + } + else + { + /* + con->dd_printf("%2d. %s(by %s) is hidden!\n", i, object_name(o), + object_name(o->get_creator())); + */ + } + } } - return(0); + return(DD_FALSE);; } -/* End of get.cc */ +/* End of cmd.src/get.cc */