From 612a69655af9bed89a1ad9e7e9225dfb3ed3ff42 Mon Sep 17 00:00:00 2001 From: Leo C Date: Sat, 6 Jun 2015 02:32:29 +0200 Subject: [PATCH] esc_char environment variable --- avr/cmd_boot.c | 31 +++++++++++++++++-------------- avr/cmd_gpio.c | 2 +- include/config.h | 1 + 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/avr/cmd_boot.c b/avr/cmd_boot.c index f9f8f90..448ed48 100644 --- a/avr/cmd_boot.c +++ b/avr/cmd_boot.c @@ -16,6 +16,7 @@ #include #include "command.h" +#include "env.h" #include "con-utils.h" #include "z80-if.h" #include "z180-serv.h" @@ -41,11 +42,9 @@ static void z80_load_mem(void) hdrom_address[sec]+hdrom_length_of_sections[sec] - 1, hdrom_length_of_sections[sec]); - z80_bus_cmd(Request); z80_write_block_P((const FLASH unsigned char *) &hdrom[sec_base], /* src */ hdrom_address[sec], /* dest */ hdrom_length_of_sections[sec]); /* len */ - z80_bus_cmd(Release); sec_base+=hdrom_length_of_sections[sec]; sec++; } @@ -56,11 +55,15 @@ 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) { - printf_P(PSTR("## Can't load while CPU is running!\n")); + 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; + } z80_load_mem(); + z80_bus_cmd(Release); return CMD_RET_SUCCESS; } @@ -147,7 +150,7 @@ command_ret_t do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[] { (void) cmdtp; (void) flag; (void) argc; (void) argv; - printf_P(PSTR("## CPU now in reset state.\n")); + printf_P(PSTR("CPU now in reset state.\n")); reset_cpu(Reset); return CMD_RET_SUCCESS; @@ -169,10 +172,10 @@ void print_con_usage(char esc) " ?,H - This Help\n" " R - Reset (Restart) CPU\n" " Q,X - Return to command line\n" - " \\ - code input:\n" - " \\nnn 3 decimal digits character code\n" - " \\Xhh 2 hexadecimal digits character code\n" - " ^%c - (Escape char) Type again to send itself\n" + " \\ - code input:\n" + " \\nnn 3 decimal digits character code\n" + " \\Xhh 2 hexadecimal digits character code\n" + " ^%c - (Escape char) Type again to send itself\n" "key>" ), esc + 0x40); } @@ -184,6 +187,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv // 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; @@ -203,7 +207,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv if ((ch = my_getchar(0)) >= 0) { switch (state) { case 0: - if (ch == CONFIG_ESC_CHAR) { + if (ch == esc_char) { state = 1; /* TODO: Timer starten */ } else { @@ -219,7 +223,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv case '?': case 'H': - print_con_usage(CONFIG_ESC_CHAR); + print_con_usage(esc_char); state = 2; break; @@ -238,10 +242,9 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv state = 3; break; - case CONFIG_ESC_CHAR: - z80_memfifo_putc(fifo_conin, ch); - break; default: + if (ch == esc_char) + z80_memfifo_putc(fifo_conin, ch); break; } break; diff --git a/avr/cmd_gpio.c b/avr/cmd_gpio.c index e0d9b06..5589381 100644 --- a/avr/cmd_gpio.c +++ b/avr/cmd_gpio.c @@ -35,7 +35,7 @@ static void pinnames_get(void) memset(pin_names, 0, sizeof(pin_names)); pin_names_width = 0; -/* TODO: enters endless loop on wron parameters */ +/* TODO: enters endless loop on wrong parameters */ if ((lp = getenv(PSTR(ENV_PINALIAS))) != NULL) { pin_names[namestr] = strdup(lp); diff --git a/include/config.h b/include/config.h index f8b9d73..a403520 100644 --- a/include/config.h +++ b/include/config.h @@ -15,6 +15,7 @@ #define ENV_PATH_CPM3SYS "cpm3_file" #define ENV_PINALIAS "pin_alias" #define ENV_STARTADDRESS "startaddress" +#define ENV_ESC_CHAR "esc_char" #define CONFIG_PATH_CPM3SYS "1:/cpm3.sys" -- 2.39.2