#define _GNU_SOURCE /* For getline() */
#include <stdio.h>
+#include <stdbool.h>
#include <string.h>
#include <ctype.h> /* For isblank, toupper() */
#include "config.h"
" Dump Internal Data Memory... DI [address] [size]",
" Dump Program Memory......... DP [address] [size]",
" Display Registers content... DR",
- " Execute..................... EM [address"
+ " Execute (Run)............... EM [address"
" [number of instructions]]",
" Help........................ H or ?",
" Modify External Data Memory. ME address value",
" Modify Program Memory....... MP address value",
" Modify Register............. MR register value",
" Quit Emulator............... Q",
- " Trace mode.................. T [address]",
+ " Trace mode (step)........... T [address]",
" Unassemble.................. U [address]"
" [number of instructions]",
" Reset processor............. Z", 0 };
if (options.stop_address != 0) {
/* Automatically run program and stop at specified address. */
- console_exec("0x0000", NULL);
+ console_exec("PC", NULL);
console_show_registers();
QuitRequest = 1;
} else {
goto syntax_error;
break;
case 'E':
- if (STREQ(Command, "EM"))
+ if (STREQ(Command, "EM") &&
+ (strlen(Parameter1) == 0) &&
+ (strlen(Parameter2) == 0))
+ console_exec("PC", NULL);
+ else if (STREQ(Command, "EM") &&
+ (strlen(Parameter1) != 0) &&
+ (strlen(Parameter2) == 0))
+ console_exec(Parameter1, NULL);
+ else if (STREQ(Command, "EM") &&
+ (strlen(Parameter1) != 0) &&
+ (strlen(Parameter2) != 0))
console_exec(Parameter1, Parameter2);
else
goto syntax_error;
int
main(int argc, char **argv)
{
+ int rc;
+
parse_command_line_options(argc, argv);
cpu8051_init();
- if (options.filename != NULL)
- LoadHexFile(options.filename);
+ if (options.filename != NULL) {
+ rc = LoadHexFile(options.filename);
+ if (rc == false)
+ exit(1);
+ }
console_main();