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 |
823 |
|
fprintf(monout, "No variables defined\n"); |
824 |
|
else |
825 |
|
for (Variable *v=first_var; v; v=v->next) |
826 |
< |
fprintf(monout, "%s = %08lx\n", v->name, v->value); |
826 |
> |
fprintf(monout, "%s = %08x\n", v->name, v->value); |
827 |
|
|
828 |
|
} else if (mon_token == T_NAME) { |
829 |
|
char var_name[256]; |
916 |
|
} |
917 |
|
|
918 |
|
if (mon_token == T_END) { |
919 |
< |
fprintf(monerr, "Buffer size: %08lx bytes\n", mon_mem_size); |
919 |
> |
fprintf(monerr, "Buffer size: %08x bytes\n", mon_mem_size); |
920 |
|
return; |
921 |
|
} |
922 |
|
|
928 |
|
} |
929 |
|
|
930 |
|
if ((mem = (uint8 *)realloc(mem, size)) != NULL) |
931 |
< |
fprintf(monerr, "Buffer size: %08lx bytes\n", mon_mem_size = size); |
931 |
> |
fprintf(monerr, "Buffer size: %08x bytes\n", mon_mem_size = size); |
932 |
|
else |
933 |
|
fprintf(monerr, "Unable to reallocate buffer\n"); |
934 |
|
} |
970 |
|
read_func = mon_read_word; |
971 |
|
write_func = mon_write_word; |
972 |
|
break; |
973 |
+ |
default: |
974 |
+ |
abort(); |
975 |
+ |
break; |
976 |
|
} |
977 |
|
|
978 |
|
while (adr<=end_adr) { |
1132 |
|
|
1133 |
|
// Print banner |
1134 |
|
if (interactive) |
1135 |
< |
fprintf(monerr, "\n *** mon V%d.%d by Christian Bauer ***\n" |
1136 |
< |
" *** Press 'h' for help ***\n\n", MON_VERSION, MON_REVISION); |
1135 |
> |
fprintf(monerr, "\n *** mon V%d.%d by Christian Bauer and Marc Hellwig ***\n" |
1136 |
> |
" *** Press 'h' for help ***\n\n", VERSION_MAJOR, VERSION_MINOR); |
1137 |
|
} |
1138 |
|
|
1139 |
|
init_abort(); |
1142 |
|
while (!done) { |
1143 |
|
if (interactive) { |
1144 |
|
char prompt[16]; |
1145 |
< |
sprintf(prompt, "[%08lx]-> ", mon_dot_address); |
1145 |
> |
sprintf(prompt, "[%08x]-> ", mon_dot_address); |
1146 |
|
read_line(prompt); |
1147 |
|
} else { |
1148 |
|
if (argc == 0) { |