From c363bebfe0a4d2d8c729fa18bd030bebca123499 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 19 Mar 2022 13:00:45 +0100 Subject: [PATCH 1/3] multiple telnet clients fix --- ESP32/main.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ESP32/main.ino b/ESP32/main.ino index bc1bf84..db9fdb8 100644 --- a/ESP32/main.ino +++ b/ESP32/main.ino @@ -197,7 +197,7 @@ void wifi(void *p) { out += c; if (!out.empty()) { - for(size_t i=0; i Date: Sat, 19 Mar 2022 13:21:29 +0100 Subject: [PATCH 2/3] backspace in line editor --- ESP32/esp32.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ESP32/esp32.cpp b/ESP32/esp32.cpp index c909131..d395af0 100644 --- a/ESP32/esp32.cpp +++ b/ESP32/esp32.cpp @@ -14,7 +14,16 @@ std::string read_terminal_line(const std::string & prompt) if (c == 13 || c == 10) break; - if (c >= 32 && c < 127) { + if (c == 8) { + if (!str.empty()) { + str = str.substr(0, str.size() - 1); + + Serial.print(char(8)); + Serial.print(' '); + Serial.print(char(8)); + } + } + else if (c >= 32 && c < 127) { str += c; Serial.print(c); From 16cd77ddb6d4f476603fce3ae90b4f9c9f95266f Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Sat, 19 Mar 2022 13:59:15 +0100 Subject: [PATCH 3/3] code cleanup --- cpu.cpp | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/cpu.cpp b/cpu.cpp index 72a2bd5..bb25d1f 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -940,10 +940,7 @@ bool cpu::condition_code_operations(const uint16_t instr) setPSW_spl(level); // trap via vector 010 - pushStack(getPSW()); - pushStack(getPC()); - setPSW(b->readWord(012)); - setPC(b->readWord(010)); + trap(010); fprintf(stderr, "SPL%d, new pc: %06o\n", level, getPC()); @@ -1010,17 +1007,11 @@ bool cpu::misc_operations(const uint16_t instr) return true; case 0b0000000000000011: // BPT - pushStack(getPSW()); - pushStack(getPC()); - setPC(b -> readWord(014)); - setPSW(b -> readWord(016)); + trap(014); return true; case 0b0000000000000100: // IOT - pushStack(getPSW()); - pushStack(getPC()); - setPC(b -> readWord(020)); - setPSW(b -> readWord(022)); + trap(020); return true; case 0b0000000000000110: // RTT @@ -1031,12 +1022,8 @@ bool cpu::misc_operations(const uint16_t instr) case 0b0000000000000111: // MFPT if (emulateMFPT) setRegister(0, true, 1); // PDP-11/44 - else { - pushStack(getPSW()); - pushStack(getPC()); - setPC(b -> readWord(012)); - setPSW(b -> readWord(014)); - } + else + trap(012); return true; case 0b0000000000000101: // RESET @@ -1045,19 +1032,13 @@ bool cpu::misc_operations(const uint16_t instr) } if ((instr >> 8) == 0b10001000) { // EMT - pushStack(getPSW()); - pushStack(getPC()); - setPC(b -> readWord(030)); - setPSW(b -> readWord(032)); + trap(030); return true; } if ((instr >> 8) == 0b10001001) { // TRAP - pushStack(getPSW()); - pushStack(getPC()); + trap(034); switchModeToKernel(); - setPC(b -> readWord(034)); - setPSW(b -> readWord(036)); return true; }