]> cloudbase.mooo.com Git - z180-stamp.git/commitdiff
esc_char environment variable
authorLeo C <erbl259-lmu@yahoo.de>
Sat, 6 Jun 2015 00:32:29 +0000 (02:32 +0200)
committerLeo C <erbl259-lmu@yahoo.de>
Sat, 6 Jun 2015 00:32:29 +0000 (02:32 +0200)
avr/cmd_boot.c
avr/cmd_gpio.c
include/config.h

index f9f8f90f15cc26a15862cb20bb33e4fc2856c4f1..448ed48d3ed35a8015817659a2213380cad4864d 100644 (file)
@@ -16,6 +16,7 @@
 #include <util/atomic.h>
 
 #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;
index e0d9b06e9f3fb36f6266c8e6558f21b739d63afc..5589381b4b1364857c0eac7e13718739d42cd377 100644 (file)
@@ -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);
index f8b9d73fe9efc247db44f1efb0fd3d0f61d95927..a4035204378a04bd53407af8004372606b85f3d3 100644 (file)
@@ -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"