X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/b30c4e8f1aef96f6fdc93da9f125545f5f74d06e..51dd0948df5ed53b11cab4e909e19ee7cee363c5:/avr/cmd_boot.c diff --git a/avr/cmd_boot.c b/avr/cmd_boot.c index a83968f..f4a6183 100644 --- a/avr/cmd_boot.c +++ b/avr/cmd_boot.c @@ -10,11 +10,10 @@ /* * Misc boot support */ -#include "common.h" +#include "cmd_boot.h" #include #include -#include "command.h" #include "cli_readline.h" /* console_buffer[] */ #include "cli.h" /* run_command() */ #include "env.h" @@ -32,45 +31,11 @@ #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, int 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, int 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, int flag, int argc, char * const argv[ 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, int flag, int argc, char * const argv[ 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, int flag, int argc, char * const argv[ return CMD_RET_SUCCESS; } -command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, int 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, int flag, int argc, char * const } -command_ret_t do_go(cmd_tbl_t *cmdtp, int 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, int 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, int 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, int 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, int flag, int argc, char * const argv } 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, int flag, int argc, char * const argv case 'X': case 'Q': - printf_P(PSTR("\n")); + putchar('\n'); goto quit; break;