Add better error checking when loading invalid hex files
[emu8051.git] / src / cli / emuconsole.c
index 8cfbcae..a249cf4 100644 (file)
@@ -21,6 +21,7 @@
 
 #define _GNU_SOURCE /* For getline() */
 #include <stdio.h>
+#include <stdbool.h>
 #include <string.h>
 #include <ctype.h> /* For isblank, toupper() */
 #include "config.h"
@@ -260,7 +261,7 @@ console_main(void)
                "  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",
@@ -268,7 +269,7 @@ console_main(void)
                "  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 };
@@ -277,7 +278,7 @@ console_main(void)
 
        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 {
@@ -390,7 +391,17 @@ console_main(void)
                                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;
@@ -502,12 +513,17 @@ TooMuchParameters:
 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();