From 108de1ccba2f67af3924ff1f101f0754af0e69c2 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 27 Apr 2024 08:54:54 +0200 Subject: [PATCH 1/5] overlay chatty debug removed --- rl02.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rl02.cpp b/rl02.cpp index a62067f..6974218 100644 --- a/rl02.cpp +++ b/rl02.cpp @@ -365,7 +365,7 @@ void rl02::writeWord(const uint16_t addr, uint16_t v) *disk_read_activity = false; } else { - DOLOG(warning, false, "RL02: command %d not implemented", command); + DOLOG(debug, false, "RL02: command %d not implemented", command); } if (do_int) { From 4c921738b4833b09b19e0c4a9a3a0ab5cba7e992 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 27 Apr 2024 09:36:48 +0200 Subject: [PATCH 2/5] tweaks --- CMakeLists.txt | 4 ++-- ESP32/platformio.ini | 2 +- breakpoint_register.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bdb83e8..70291a2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,8 +6,8 @@ cmake_minimum_required(VERSION 3.9) add_compile_options(-Wall -pedantic -Wextra) -#add_compile_options(-fsanitize=address) -#add_link_options(-fsanitize=address) +#add_compile_options(-fsanitize=undefined) +#add_link_options(-fsanitize=undefined) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) diff --git a/ESP32/platformio.ini b/ESP32/platformio.ini index 948ef3a..c085fdd 100644 --- a/ESP32/platformio.ini +++ b/ESP32/platformio.ini @@ -17,7 +17,7 @@ board_build.filesystem = littlefs lib_deps = greiman/SdFat@^2.1.2 adafruit/Adafruit NeoPixel bblanchon/ArduinoJson@^6.19.4 -build_flags = -std=gnu++2a -DESP32=1 -ggdb3 -D_GLIBCXX_USE_C99 +build_flags = -std=gnu++2a -DESP32=1 -ggdb3 -D_GLIBCXX_USE_C99 -Wall build_unflags = -std=gnu++11 -std=gnu++17 extra_scripts = pre:prepare.py diff --git a/breakpoint_register.cpp b/breakpoint_register.cpp index 9a94f63..832aef0 100644 --- a/breakpoint_register.cpp +++ b/breakpoint_register.cpp @@ -101,12 +101,12 @@ std::pair > breakpoint_registe else if (key == "PC" || key == "pc") { return { new breakpoint_register(b, 7, values), { } }; } - else if (key.substr(0, 3) == "MMR" or key.substr(0, 3) == "mmr") { + else if (key.substr(0, 3) == "MMR" || key.substr(0, 3) == "mmr") { int which = key[3] - '0'; return { new breakpoint_register(b, hr_mmr0 + which, values), { } }; } - else if (key.substr(0, 3) == "PSW" or key.substr(0, 3) == "psw") { + else if (key.substr(0, 3) == "PSW" || key.substr(0, 3) == "psw") { return { new breakpoint_register(b, hr_psw, values), { } }; } From b3932c2100da5b9012b46c83bccd6b0c8a762fbd Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 27 Apr 2024 12:23:30 +0200 Subject: [PATCH 3/5] init variables --- mmu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/mmu.cpp b/mmu.cpp index 5e42949..17abfe5 100644 --- a/mmu.cpp +++ b/mmu.cpp @@ -9,6 +9,7 @@ mmu::mmu() { + reset(); } mmu::~mmu() From 19ea36c809ad921d47a114450051e3004acdd189 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 27 Apr 2024 21:28:00 +0200 Subject: [PATCH 4/5] dp - stop panel --- ESP32/console_esp32.cpp | 8 ++++++-- ESP32/main.ino | 2 ++ ESP32/platformio.ini | 15 +++++++++++++++ console.h | 4 +++- console_ncurses.cpp | 2 +- debugger.cpp | 6 ++++++ 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/ESP32/console_esp32.cpp b/ESP32/console_esp32.cpp index d4efeb0..787733f 100644 --- a/ESP32/console_esp32.cpp +++ b/ESP32/console_esp32.cpp @@ -72,7 +72,6 @@ void console_esp32::panel_update_thread() pixels.begin(); pixels.clear(); - pixels.show(); constexpr uint8_t brightness = 16; @@ -103,7 +102,7 @@ void console_esp32::panel_update_thread() pixels.clear(); pixels.show(); - for(;;) { + while(!stop_panel) { vTaskDelay(20 / portTICK_PERIOD_MS); try { @@ -141,5 +140,10 @@ void console_esp32::panel_update_thread() put_string_lf("Unknown exception in panel thread"); } } + + pixels.clear(); + pixels.show(); + + Serial.println(F("panel task terminating")); #endif } diff --git a/ESP32/main.ino b/ESP32/main.ino index bb29dd8..cbe8a39 100644 --- a/ESP32/main.ino +++ b/ESP32/main.ino @@ -78,6 +78,8 @@ void console_thread_wrapper_panel(void *const c) console *const cnsl = reinterpret_cast(c); cnsl->panel_update_thread(); + + vTaskSuspend(nullptr); } uint32_t load_serial_speed_configuration() diff --git a/ESP32/platformio.ini b/ESP32/platformio.ini index 948ef3a..6fb61ee 100644 --- a/ESP32/platformio.ini +++ b/ESP32/platformio.ini @@ -35,3 +35,18 @@ lib_deps = greiman/SdFat@^2.1.2 build_flags = -std=gnu++2a -DESP32=1 -DSHA2017 -ggdb3 -D_GLIBCXX_USE_C99 -ISHAdisplay/Arduino/libraries/epd2in9-badge -ISHAdisplay/Arduino/libraries/epdpaint -ISHAdisplay/components/epaper-29-dke build_unflags = -std=gnu++11 -std=gnu++17 upload_protocol = esptool + +[env:ESP32-ttgo-t-beam] +build_src_filter = +<*> -<.git/> -<.svn/> - - - - - - - - +platform = espressif32 +board = ttgo-t-beam +framework = arduino +monitor_speed = 115200 +upload_speed = 1000000 +board_build.filesystem = littlefs +lib_deps = greiman/SdFat@^2.1.2 + adafruit/Adafruit NeoPixel + bblanchon/ArduinoJson@^6.19.4 +build_flags = -std=gnu++17 -DESP32=1 -ggdb3 -D_GLIBCXX_USE_C99 +build_unflags = -std=gnu++11 +extra_scripts = pre:prepare.py diff --git a/console.h b/console.h index 5cb932f..6101602 100644 --- a/console.h +++ b/console.h @@ -29,7 +29,8 @@ private: #endif protected: - std::atomic_uint32_t *const stop_event { nullptr }; + std::atomic_uint32_t *const stop_event { nullptr }; + std::atomic_bool stop_panel { false }; bus *b { nullptr }; #if !defined(BUILD_FOR_RP2040) @@ -88,5 +89,6 @@ public: std::atomic_bool * get_disk_read_activity_flag() { return &disk_read_activity_flag; } std::atomic_bool * get_disk_write_activity_flag() { return &disk_write_activity_flag; } + void stop_panel_thread() { stop_panel = true; } virtual void panel_update_thread() = 0; }; diff --git a/console_ncurses.cpp b/console_ncurses.cpp index df2e736..9ec7753 100644 --- a/console_ncurses.cpp +++ b/console_ncurses.cpp @@ -133,7 +133,7 @@ void console_ncurses::panel_update_thread() constexpr int refresh_rate = 50; - while(*stop_event != EVENT_TERMINATE) { + while(*stop_event != EVENT_TERMINATE && stop_panel == false) { myusleep(1000000 / refresh_rate); // note that these are approximately as there's no mutex on the emulation diff --git a/debugger.cpp b/debugger.cpp index c48241b..9d2244b 100644 --- a/debugger.cpp +++ b/debugger.cpp @@ -951,6 +951,11 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto continue; } + else if (cmd == "dp") { + cnsl->stop_panel_thread(); + + continue; + } else if (cmd == "bt") { if (c->get_debug() == false) cnsl->put_string_lf("Debug mode is disabled!"); @@ -1006,6 +1011,7 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto "ser - serialize state to a file", // "dser - deserialize state from a file", #endif + "dp - stop panel", #if defined(ESP32) "cfgnet - configure network (e.g. WiFi)", "startnet - start network", From ff1da92dc8248d67066f1abf4a5a5642291b6a9e Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 27 Apr 2024 21:39:13 +0200 Subject: [PATCH 5/5] fix for syslog --- debugger.cpp | 7 +++++-- log.cpp | 9 ++++++--- log.h | 3 ++- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/debugger.cpp b/debugger.cpp index 9d2244b..9b5fcb9 100644 --- a/debugger.cpp +++ b/debugger.cpp @@ -942,7 +942,10 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto } #endif else if (parts[0] == "setsl" && parts.size() == 3) { - setloghost(parts.at(1).c_str(), parse_ll(parts[2])); + if (setloghost(parts.at(1).c_str(), parse_ll(parts[2])) == false) + cnsl->put_string_lf("Failed parsing IP address"); + else + send_syslog(info, "Hello, world!"); continue; } @@ -1011,7 +1014,7 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto "ser - serialize state to a file", // "dser - deserialize state from a file", #endif - "dp - stop panel", + "dp - disable panel", #if defined(ESP32) "cfgnet - configure network (e.g. WiFi)", "startnet - start network", diff --git a/log.cpp b/log.cpp index d250081..df44581 100644 --- a/log.cpp +++ b/log.cpp @@ -54,16 +54,19 @@ void setlogfile(const char *const lf, const log_level_t ll_file, const log_level atexit(closelog); } -void setloghost(const char *const host, const log_level_t ll) +bool setloghost(const char *const host, const log_level_t ll) { - inet_aton(host, &syslog_ip_addr.sin_addr); - syslog_ip_addr.sin_port = htons(514); + syslog_ip_addr.sin_family = AF_INET; + bool ok = inet_aton(host, &syslog_ip_addr.sin_addr) == 1; + syslog_ip_addr.sin_port = htons(514); is_file = false; log_level_file = ll; l_timestamp = false; + + return ok; } void setll(const log_level_t ll_screen, const log_level_t ll_file) diff --git a/log.h b/log.h index 50b6ce5..668cf33 100644 --- a/log.h +++ b/log.h @@ -12,9 +12,10 @@ typedef enum { ll_emerg = 0, ll_alert, ll_critical, ll_error, warning, notice, i log_level_t parse_ll(const std::string & str); void setlogfile(const char *const lf, const log_level_t ll_file, const log_level_t ll_screen, const bool l_timestamp); -void setloghost(const char *const host, const log_level_t ll); +bool setloghost(const char *const host, const log_level_t ll); void setll(const log_level_t ll_screen, const log_level_t ll_file); void setloguid(const int uid, const int gid); +void send_syslog(const int ll, const std::string & what); void closelog(); void dolog(const log_level_t ll, const char *fmt, ...);