ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/mon/src/mon.cpp
(Generate patch)

Comparing mon/src/mon.cpp (file contents):
Revision 1.1.1.1 by cebix, 1999-10-04T19:31:09Z vs.
Revision 1.4 by cebix, 1999-10-05T18:19:55Z

# Line 1 | Line 1
1   /*
2 < *  mon.cpp - Machine language monitor
2 > *  mon.cpp - mon main program
3   *
4 < *  (C) 1997-1999 Christian Bauer
4 > *  mon (C) 1997-1999 Christian Bauer, Marc Hellwig
5 > *
6 > *  This program is free software; you can redistribute it and/or modify
7 > *  it under the terms of the GNU General Public License as published by
8 > *  the Free Software Foundation; either version 2 of the License, or
9 > *  (at your option) any later version.
10 > *
11 > *  This program is distributed in the hope that it will be useful,
12 > *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 > *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 > *  GNU General Public License for more details.
15 > *
16 > *  You should have received a copy of the GNU General Public License
17 > *  along with this program; if not, write to the Free Software
18 > *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19   */
20  
21 < #include <sys/types.h>
22 < #include <netinet/in.h>
23 < #include <stdio.h>
24 < #include <stdlib.h>
25 < #include <string.h>
26 < #include <signal.h>
27 < #include <ctype.h>
14 < #include <unistd.h>
15 < #include <errno.h>
21 > #include "sysdeps.h"
22 >
23 > #ifdef HAVE_READLINE_READLINE_H
24 > extern "C" {
25 > #include <readline/readline.h>
26 > }
27 > #endif
28  
29 + #ifdef HAVE_READLINE_HISTORY_H
30   extern "C" {
31 < extern char *readline(char *prompt);
19 < extern void add_history(char *str);
31 > #include <readline/history.h>
32   }
33 + #endif
34  
35   #include "mon.h"
36   #include "mon_cmd.h"
37 + #include "version.h"
38  
39  
40   // Buffer we're operating on
# Line 238 | Line 252 | void mon_write_word(uint32 adr, uint32 l
252  
253   static void read_line(char *prompt)
254   {
255 + #ifdef HAVE_LIBREADLINE
256          static char *line_read = NULL;
257  
258          if (line_read) {
# Line 252 | Line 267 | static void read_line(char *prompt)
267  
268          strncpy(in_ptr = input, line_read, INPUT_LENGTH);
269          input[INPUT_LENGTH-1] = 0;
270 + #else
271 +        fprintf(monout, prompt);
272 +        fflush(monout);
273 +        fgets(in_ptr = input, INPUT_LENGTH, monin);
274 +        char *s = strchr(input, '\n');
275 +        if (s != NULL)
276 +                *s = 0;
277 + #endif
278   }
279  
280  
# Line 809 | Line 832 | static void set_var(void)
832                          fprintf(monout, "No variables defined\n");
833                  else
834                          for (Variable *v=first_var; v; v=v->next)
835 <                                fprintf(monout, "%s = %08lx\n", v->name, v->value);
835 >                                fprintf(monout, "%s = %08x\n", v->name, v->value);
836  
837          } else if (mon_token == T_NAME) {
838                  char var_name[256];
# Line 902 | Line 925 | static void reallocate(void)
925          }
926  
927          if (mon_token == T_END) {
928 <                fprintf(monerr, "Buffer size: %08lx bytes\n", mon_mem_size);
928 >                fprintf(monerr, "Buffer size: %08x bytes\n", mon_mem_size);
929                  return;
930          }
931  
# Line 914 | Line 937 | static void reallocate(void)
937          }
938  
939          if ((mem = (uint8 *)realloc(mem, size)) != NULL)
940 <                fprintf(monerr, "Buffer size: %08lx bytes\n", mon_mem_size = size);
940 >                fprintf(monerr, "Buffer size: %08x bytes\n", mon_mem_size = size);
941          else
942                  fprintf(monerr, "Unable to reallocate buffer\n");
943   }
# Line 956 | Line 979 | static void apply(int size)
979                          read_func = mon_read_word;
980                          write_func = mon_write_word;
981                          break;
982 +                default:
983 +                        abort();
984 +                        break;
985          }
986  
987          while (adr<=end_adr) {
# Line 1115 | Line 1141 | void mon(int argc, char **argv)
1141  
1142                  // Print banner
1143                  if (interactive)
1144 <                        fprintf(monerr, "\n *** mon V%d.%d by Christian Bauer ***\n"
1145 <                                                        " ***      Press 'h' for help     ***\n\n", MON_VERSION, MON_REVISION);
1144 >                        fprintf(monerr, "\n *** mon V%d.%d by Christian Bauer and Marc Hellwig ***\n"
1145 >                                                        " ***              Press 'h' for help              ***\n\n", VERSION_MAJOR, VERSION_MINOR);
1146          }
1147  
1148          init_abort();
# Line 1125 | Line 1151 | void mon(int argc, char **argv)
1151          while (!done) {
1152                  if (interactive) {
1153                          char prompt[16];
1154 <                        sprintf(prompt, "[%08lx]-> ", mon_dot_address);
1154 >                        sprintf(prompt, "[%08x]-> ", mon_dot_address);
1155                          read_line(prompt);
1156                  } else {
1157                          if (argc == 0) {

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines