From d1887ded41a5bfec8e10e9fd736fa9444b9b6222 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 21 Apr 2009 01:17:03 -0700 Subject: Fix up fancy dbg stuff. Add teleterra initial bits. The dbg stuff needed a bit of help to actually walk the tables; it appears that complex expressions confuse sdcc. This also adds primitive teleterra bits, but no UI, etc. Signed-off-by: Keith Packard --- ao_cmd.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) (limited to 'ao_cmd.c') diff --git a/ao_cmd.c b/ao_cmd.c index 13def7c2..7722c598 100644 --- a/ao_cmd.c +++ b/ao_cmd.c @@ -226,10 +226,13 @@ help(void) { __xdata uint8_t cmds; __xdata uint8_t cmd; + __code struct ao_cmds * __xdata cs; puts(help_txt); - for (cmds = 0; cmds < ao_ncmds; cmds++) - for (cmd = 0; ao_cmds[cmds][cmd].cmd; cmd++) - puts(ao_cmds[cmds][cmd].help); + for (cmds = 0; cmds < ao_ncmds; cmds++) { + cs = ao_cmds[cmds]; + for (cmd = 0; cs[cmd].cmd != '\0'; cmd++) + puts(cs[cmd].help); + } } static void @@ -257,6 +260,8 @@ ao_cmd(void *parameters) { __xdata uint8_t c; __xdata uint8_t cmd, cmds; + __code struct ao_cmds * __xdata cs; + void (*__xdata func)(void); (void) parameters; lex_echo = 1; @@ -268,16 +273,19 @@ ao_cmd(void *parameters) ao_cmd_lex(); if (c == '\r' || c == '\n') continue; - cmd = 0; + func = (void (*)(void)) NULL; for (cmds = 0; cmds < ao_ncmds; cmds++) { - for (cmd = 0; ao_cmds[cmds][cmd].cmd != '\0'; cmd++) - if (ao_cmds[cmds][cmd].cmd == c) + cs = ao_cmds[cmds]; + for (cmd = 0; cs[cmd].cmd != '\0'; cmd++) + if (cs[cmd].cmd == c) { + func = cs[cmd].func; break; - if (ao_cmds[cmds][cmd].cmd) + } + if (func) break; } - if (ao_cmds[cmds][cmd].cmd) - (*ao_cmds[cmds][cmd].func); + if (func) + (*func)(); else ao_cmd_status = ao_cmd_syntax_error; report(); @@ -288,9 +296,9 @@ __xdata struct ao_task ao_cmd_task; __code struct ao_cmds ao_base_cmds[] = { { '?', help, "? Print this message" }, - { 'T', ao_task_info, "T Show task states\n" }, - { 'E', echo, "E <0 off, 1 on> Set command echo mode\n" }, - { 'd', dump, "d Dump memory\n" }, + { 'T', ao_task_info, "T Show task states" }, + { 'E', echo, "E <0 off, 1 on> Set command echo mode" }, + { 'd', dump, "d Dump memory" }, { 0, help, NULL }, }; -- cgit v1.2.3