Move build and debug tools to 'cctools' directory.
[fw/altos] / s51 / s51-parse.c
diff --git a/s51/s51-parse.c b/s51/s51-parse.c
deleted file mode 100644 (file)
index 170c979..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- * Copyright © 2008 Keith Packard <keithp@keithp.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
-#include "s51.h"
-
-static struct command_function functions[] = {
-       { "help",   "?",  command_help, "help",         "Print this list\n" },
-       { "quit",   "q",  command_quit, "[q]uit",       "Quit\n" },
-       { "di",     "di", command_di,   "di <start> <end>",
-               "Dump imem\n" },
-       { "ds",     "ds", command_ds,   "ds <start> <end>",
-               "Dump sprs\n" },
-       { "dx",     "dx", command_dx,   "dx <start> <end>",
-               "Dump xaddr\n" },
-       { "set",    "t",  command_set,  "se[t] mem <prefix> <address> <data> ...",
-               "Set mem {xram|rom|iram|sfr}\n"
-               "set bit <addr>\n" },
-       { "dump",   "d",  command_dump, "[d]ump <prefix> <start> <end>",
-               "Dump {xram|rom|iram|sfr} <start> <end>\n" },
-       { "file", "file", command_file, "file <filename>",
-               "Pretend to load executable from <filename>\n" },
-       { "pc",     "p",  command_pc, "[p]c [addr]",
-               "Get or set pc value\n" },
-       { "break",  "b",  command_break,"[b]reak <addr>",
-               "Set break point\n" },
-       { "clear",  "c",  command_clear,"[c]lear <addr>",
-               "Clear break point\n" },
-       { "run",    "r",  command_run, "[r]un [start] [stop]",
-               "Run with optional start and temp breakpoint addresses\n" },
-       { "go",     "g",  command_run, "[g]o [start] [stop]",
-               "Run with optional start and temp breakpoint addresses\n" },
-       { "next",   "n",  command_next, "[n]ext",
-               "Step over one instruction, past any call\n" },
-       { "step",   "s",  command_step, "[s]tep",
-               "Single step\n" },
-       { "load",   "l",  command_load, "[l]oad <file>",
-               "Load a hex file into memory or flash" },
-       { "halt",   "h",  command_halt, "[h]alt",
-               "Halt the processor\n" },
-       { "reset","res",command_reset,  "[res]et",
-               "Reset the CPU\n" },
-       { "status","status",command_status, "status",
-               "Display CC1111 debug status\n" },
-       { "info",   "i",  command_info, "[i]info",
-               "Get information\n" },
-       { "stop",  "stop", command_stop, "stop",
-               "Ignored\n" },
-       { NULL, NULL, NULL, NULL, NULL },
-};
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE 1
-#endif
-
-static int
-string_to_int(char *s, int *v)
-{
-       char *endptr;
-
-       if (isdigit(s[0]) || s[0] == '-' || s[0] == '+') {
-               *v = strtol(s, &endptr, 0);
-               if (endptr == s)
-                       return FALSE;
-       } else if (*s == '\'') {
-               s++;
-               if (*s == '\\') {
-                       s++;
-                       switch (*s) {
-                       case 'n':
-                               *v = '\n';
-                               break;
-                       case 't':
-                               *v = '\t';
-                               break;
-                       default:
-                               *v = (int) *s;
-                               break;
-                       }
-               } else
-                       *v = (int) *s;
-               s++;
-               if (*s != '\'')
-                       return FALSE;
-       }
-       else
-               return FALSE;
-    return TRUE;
-}
-
-struct command_function *
-command_string_to_function(struct command_function *functions, char *name)
-{
-       int i;
-       for (i = 0; functions[i].name; i++)
-               if (!strcmp(name, functions[i].name) ||
-                   !strcmp(name, functions[i].alias))
-                       return &functions[i];
-       return NULL;
-}
-
-enum command_result
-command_function_help(struct command_function *functions, int argc, char **argv)
-{
-       int i;
-       struct command_function *func;
-
-       if (argc == 1) {
-               for (i = 0; functions[i].name; i++)
-                       s51_printf("%-10s%s\n", functions[i].name,
-                              functions[i].usage);
-       } else {
-               for (i = 1; i < argc; i++) {
-                       func = command_string_to_function(functions, argv[i]);
-                       if (!func) {
-                               s51_printf("%-10s unknown command\n", argv[i]);
-                               return command_syntax;
-                       }
-                       s51_printf("%-10s %s\n%s", func->name,
-                              func->usage, func->help);
-               }
-       }
-       return command_debug;
-}
-
-static int
-command_split_into_words(char *line, char **argv)
-{
-       char quotechar;
-       int argc;
-
-       argc = 0;
-       while (*line) {
-               while (isspace(*line))
-                       line++;
-               if (!*line)
-                       break;
-               if (*line == '"') {
-                       quotechar = *line++;
-                       *argv++ = line;
-                       argc++;
-                       while (*line && *line != quotechar)
-                               line++;
-                       if (*line)
-                               *line++ = '\0';
-               } else {
-                       *argv++ = line;
-                       argc++;
-                       while (*line && !isspace(*line))
-                               line++;
-                       if (*line)
-                               *line++ = '\0';
-               }
-       }
-       *argv = 0;
-       return argc;
-}
-
-enum command_result
-command_help(int argc, char **argv)
-{
-       return command_function_help(functions, argc, argv);
-}
-
-void
-command_syntax_error(int argc, char **argv)
-{
-       s51_printf("Syntax error in:");
-       while (*argv)
-               s51_printf(" %s", *argv++);
-       s51_printf("\n");
-}
-
-void
-command_read (void)
-{
-       int argc;
-       char line[1024];
-       char *argv[20];
-       enum command_result result;
-       struct command_function *func;
-
-       s51_dbg = ccdbg_open ();
-       if (!s51_dbg) {
-               perror("ccdbg_open");
-               exit(1);
-       }
-       ccdbg_debug_mode(s51_dbg);
-       ccdbg_halt(s51_dbg);
-       s51_printf("Welcome to the non-simulated processor\n");
-       for (;;) {
-               if (s51_read_line (line, sizeof line) == 0)
-                       break;
-               s51_interrupted = 0;
-               argc = command_split_into_words(line, argv);
-               if (argc > 0) {
-                       func = command_string_to_function(functions, argv[0]);
-                       if (!func)
-                               command_syntax_error(argc, argv);
-                       else
-                       {
-                               result = (*func->func)(argc, argv);
-                               if (s51_interrupted)
-                                       result = command_interrupt;
-                               switch (result) {
-                               case command_syntax:
-                                       command_syntax_error(argc, argv);
-                                       break;
-                               case command_error:
-                                       s51_printf("Error\n");
-                                       break;
-                               case command_success:
-                                       break;
-                               case command_interrupt:
-                                       ccdbg_halt(s51_dbg);
-                                       s51_printf("Interrupted\n");
-                                       break;
-                               default:
-                                       break;
-                               }
-                       }
-               }
-       }
-       ccdbg_close(s51_dbg);
-       s51_printf("...\n");
-}