diff --git a/mp-s7-src/main.cc b/mp-s7-src/main.cc index 50f0c9b..9e071f0 100644 --- a/mp-s7-src/main.cc +++ b/mp-s7-src/main.cc @@ -98,6 +98,7 @@ extern "C" void gc_collect(void) { // Receive single character int mp_hal_stdin_rx_chr(void) { unsigned char c = 0; + c = retro::Console::currentInstance->ReadChar(); return c; } diff --git a/mp-s7-src/retro/Console.cc b/mp-s7-src/retro/Console.cc index bc10bf5..47d4b79 100644 --- a/mp-s7-src/retro/Console.cc +++ b/mp-s7-src/retro/Console.cc @@ -326,6 +326,27 @@ std::string Console::ReadLine() return buffer; } +char Console::ReadChar() +{ + if(!consolePort) + return 0; + + char c; + + c = WaitNextChar(); + if(!c) + { + eof = true; + return 0; + } + + if(c == '\r') + c = '\n'; + + putch(c); + return c; +} + void Console::InvalidateCursor() { if(cursorDrawn) diff --git a/mp-s7-src/retro/Console.h b/mp-s7-src/retro/Console.h index d94417c..7792e6c 100644 --- a/mp-s7-src/retro/Console.h +++ b/mp-s7-src/retro/Console.h @@ -40,6 +40,7 @@ namespace retro void write(const char *s, int n); std::string ReadLine(); + char ReadChar(); static Console *currentInstance;