]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/cmd_boot.c
new debug command: xx test. get freq command from single step branch.
[z180-stamp.git] / avr / cmd_boot.c
index 6e117d9ef9eeea6da1c4dbdfb3e8cf2c4ef871a7..f4a6183913bc9fe3df7d99ac4512c35a62831845 100644 (file)
 /*
  * Misc boot support
  */
-#include "common.h"
+#include "cmd_boot.h"
 #include <ctype.h>
 #include <util/atomic.h>
 
-#include "command.h"
 #include "cli_readline.h"      /* console_buffer[] */
 #include "cli.h"                       /* run_command() */
 #include "env.h"
 #undef const
 
 
-
-static void z80_load_mem(int_fast8_t verbosity,
-                               const FLASH unsigned char data[],
-                               const FLASH unsigned long *sections,
-                               const FLASH unsigned long address[],
-                               const FLASH unsigned long length_of_sections[])
+command_ret_t do_loadf(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
 {
-       uint32_t sec_base = 0;
-
-       if (verbosity > 1)
-               printf_P(PSTR("Loading Z180 memory... \n"));
-
-       for (unsigned sec = 0; sec < *sections; sec++) {
-               if (verbosity > 0) {
-                       printf_P(PSTR("   From: 0x%.5lX to: 0x%.5lX    (%5li bytes)\n"),
-                                       address[sec],
-                                       address[sec]+length_of_sections[sec] - 1,
-                                       length_of_sections[sec]);
-               }
-
-               z80_write_block_P((const FLASH unsigned char *) &data[sec_base],  /* src */
-                               address[sec],                  /* dest */
-                               length_of_sections[sec]);      /* len */
-               sec_base += length_of_sections[sec];
-       }
-}
-
-command_ret_t do_loadf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
-{
-       (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
-       if (z80_bus_state() & ZST_RUNNING) {
-               my_puts_P(PSTR("Can't load while CPU is running!\n"));
-               return CMD_RET_FAILURE;
-       }
-       if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
-               my_puts_P(PSTR("Bus timeout\n"));
-               return  CMD_RET_FAILURE;
-       }
+       if (z80_bus_state() & ZST_RUNNING)
+               cmd_error(CMD_RET_FAILURE, ERUNNING, NULL);
+       z80_bus_request_or_exit();
        z80_load_mem(2, hdrom,
                                &hdrom_sections,
                                hdrom_address,
@@ -112,7 +77,7 @@ void print_vars(char *title)
  *             -v      verbose
  */
 
-command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_bootcf(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
 {
        struct {
                uint8_t  jr[2];
@@ -135,8 +100,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
        int_fast8_t verbosity = 0;
        uint8_t default_stages;
        uint32_t val;
-
-       (void) cmdtp; (void) flag;
+       ERRNUM res = ESUCCESS;
 
        /* get default values */
        memcpy_P(&boot_param, cfboot, sizeof boot_param);
@@ -212,16 +176,9 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
                return CMD_RET_FAILURE;
        }
 
-
-
-       if (z80_bus_state() & ZST_RUNNING) {
-               my_puts_P(PSTR("CPU is allready running!\n"));
-               return CMD_RET_FAILURE;
-       }
-       if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
-               my_puts_P(PSTR("Bus timeout\n"));
-               return  CMD_RET_FAILURE;
-       }
+       if (z80_bus_state() & ZST_RUNNING)
+               cmd_error(CMD_RET_FAILURE, ERUNNING, NULL);
+       z80_bus_request_or_exit();
        z80_load_mem(verbosity, cfboot,
                                &cfboot_sections,
                                cfboot_address,
@@ -274,12 +231,10 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
        return CMD_RET_SUCCESS;
 }
 
-command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
 {
        uint16_t count=1;
 
-       (void) cmdtp; (void) flag;
-
        if (!(z80_bus_state() & ZST_RUNNING)) {
                printf_P(PSTR("## CPU is not running!\n"));
                return CMD_RET_FAILURE;
@@ -296,28 +251,26 @@ command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, cha
 }
 
 
-command_ret_t do_go(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_go(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
 {
        uint32_t addr;
 
-       (void) cmdtp; (void) flag;
-
        if (argc < 2)
                return CMD_RET_USAGE;
        addr = eval_arg(argv[1], NULL);
        if (addr >= (1UL<<16)) {
-               printf_P(PSTR("## Startaddress 0x%05lx too high.\n"
+               printf_P(PSTR("Invalid startaddress: 0x%05lx\n"
                        "   (Out of logical address space (0x00000-0x0ffff))\n"),
                        addr);
                return CMD_RET_FAILURE;
        }
 
        if (z80_bus_state() & ZST_RUNNING) {
-               printf_P(PSTR("## CPU allready running!\n"));
+               printf_P(PSTR("CPU already running!\n"));
                return CMD_RET_FAILURE;
        }
 
-       printf_P(PSTR("## Starting application at 0x%04lx ...\n"), addr);
+       printf_P(PSTR("Starting application at 0x%04lx ...\n"), addr);
 
        if (addr != 0) {
                uint8_t tmp[3];
@@ -348,20 +301,16 @@ void reset_cpu(bus_cmd_t mode)
 }
 
 
-command_ret_t do_reset(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_reset(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
 {
-       (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
        printf_P(PSTR("CPU now in reset state.\n"));
 
        reset_cpu(Reset);
        return CMD_RET_SUCCESS;
 }
 
-command_ret_t do_restart(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_restart(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
 {
-       (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
        reset_cpu(Restart);
 
        return CMD_RET_SUCCESS;
@@ -383,17 +332,14 @@ void print_con_usage(char esc)
        ), esc + 0x40);
 }
 
-command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_console(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
 {
        int ch;
        uint8_t pending;
-//     uint8_t help_prompt = 0;
        uint8_t code = 0;
        uint8_t state = 0;
        char esc_char = (char) getenv_ulong(PSTR(ENV_ESC_CHAR), 16, CONFIG_ESC_CHAR);
 
-       (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
        printf_P(PSTR("Connecting to CPU. Escape character is '^%c'.\n"),
                                        esc_char + 0x40);
 
@@ -420,7 +366,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * c
                                }
                                break;
                        case 2:
-                               printf_P(PSTR("\n"
+                               my_puts_P(PSTR("\n"
                                  "------------------------------------------------\n"));
                        case 1:
                                state = 0;
@@ -438,7 +384,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * c
 
                                case 'X':
                                case 'Q':
-                                       printf_P(PSTR("\n"));
+                                       putchar('\n');
                                        goto quit;
                                        break;