]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/cmd_loadcpm3.c
Expression eval: Repair unary + and -
[z180-stamp.git] / avr / cmd_loadcpm3.c
index f24ee19352d2722cc62181c8c2f5aedff40ac2ef..e6e2cdce0a1f90f9a76a427ada3d2104d7445dda 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2015 Leo C. <erbl259-lmu@yahoo.de>
+ * (C) Copyright 2015,2016 Leo C. <erbl259-lmu@yahoo.de>
  *
  * SPDX-License-Identifier:    GPL-2.0
  */
@@ -9,7 +9,6 @@
  */
 
 #include "common.h"
-#include <stdlib.h>
 #include <ctype.h>
 #include <string.h>
 #include <stdbool.h>
@@ -17,6 +16,7 @@
 #include "command.h"
 #include "env.h"
 #include "ff.h"
+#include "eval_arg.h"
 #include "con-utils.h"
 #include "z80-if.h"
 #include "debug.h"
@@ -88,11 +88,11 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg
                                                CONFIG_CPM3_BANKED_BASE);
 
        if (argc > 3)
-               banked_base = strtoul(argv[3], NULL, 16);
+               banked_base = eval_arg(argv[3], NULL);
        if (argc > 2)
-               common_base = strtoul(argv[2], NULL, 16);
+               common_base = eval_arg(argv[2], NULL);
 
-       fname = getenv_char(PSTR(ENV_CPM3_SYSFILE));
+       fname = getenv_str(PSTR(ENV_CPM3_SYSFILE));
        if (argc > 1) {
                fname = argv[1];
        }
@@ -143,6 +143,9 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, int flag, int argc, char * const arg
                common_base = (uint16_t) buffer[0] + (buffer[1] << 8);
                setenv_hex(PSTR(ENV_CPM3_COMMON_BASE), common_base);
        }
+
+       setenv_hex(PSTR(ENV_CPM3_SCB), mem_top - ((res_len - (6 - 1)) << 8) + common_base);
+
        /* Main System Load     */
 
        /* Load Common Portion of System */