From cd95e63af585c857d472cc35be4706a93796485c Mon Sep 17 00:00:00 2001 From: Toby Jaffey Date: Sun, 7 Dec 2025 20:58:32 +0000 Subject: [PATCH] Flush output regularly, don't wait for keyboard. --- host/host.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/host/host.c b/host/host.c index 0370e08..41b122f 100644 --- a/host/host.c +++ b/host/host.c @@ -36,6 +36,7 @@ const uvm32_mapping_t env[] = { void disableRawMode(void) { tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios); } + void enableRawMode(void) { tcgetattr(STDIN_FILENO, &orig_termios); atexit(disableRawMode); @@ -89,7 +90,7 @@ bool poll_getch(uint8_t* c) { FD_SET(STDIN_FILENO, &readfds); tv.tv_sec = 0; - tv.tv_usec = 200; + tv.tv_usec = 0; ret = select(STDIN_FILENO + 1, &readfds, NULL, NULL, &tv); @@ -159,6 +160,7 @@ int main(int argc, char *argv[]) { uint32_t total_instrs = 0; uint32_t num_ioreqs = 0; + // setup terminal for getch() enableRawMode(); while(isrunning) { @@ -233,12 +235,14 @@ int main(int argc, char *argv[]) { return 1; break; } + fflush(stdout); } printf("Executed total of %d instructions and %d ioreqs\n", (int)total_instrs, (int)num_ioreqs); free(rom); + // put terminal back to how it was disableRawMode(); return 0; }