]> cloudbase.mooo.com Git - z180-stamp.git/blobdiff - avr/con-utils.c
cli.c bugfix: Comment only lines are not an error.
[z180-stamp.git] / avr / con-utils.c
index f20dbfed214258bf77eb18e85d3f10f93a3b610c..4a96771040c536123388f92657a0d1e6fe54c982 100644 (file)
@@ -4,9 +4,11 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <string.h>
 #include "common.h"
+#include <string.h>
+#include <avr/wdt.h>
 
+#include "config.h"
 #include "serial.h"
 #include "background.h"
 #include "con-utils.h"
@@ -26,6 +28,31 @@ int my_getchar(uint_fast8_t waitforchar)
                c = serial_getc();
        } while ((c < 0) && waitforchar);
 
+#ifdef CONFIG_SYS_FBOOTSIG
+       if (c < 0)
+               return c;
+
+       static const FLASH unsigned char bootsig[] = {CONFIG_SYS_FBOOTSIG};
+       static uint8_t pb;
+       unsigned char uc = c;
+
+
+       if (bootsig[pb] == 0) {
+               if (uc == 0xff) {
+                       wdt_enable(WDTO_15MS);
+                       for(;;)
+                               ;
+               } else
+                       pb = 0;
+
+       } else {
+               if (bootsig[pb] == uc)
+                       pb++;
+               else
+                       pb = 0;
+       }
+#endif
+
        return c;
 }
 
@@ -37,6 +64,7 @@ static uint_fast8_t ctrlc_was_pressed;
 
 uint_fast8_t ctrlc(void)
 {
+       bg_shed();
        if (!ctrlc_disabled) {
                switch (serial_getc()) {
                case 0x03:              /* ^C - Control C */