From 91daec02c4ac8147d7441a0d100cf306e7510370 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 19 Sep 2020 11:56:26 +0200 Subject: [PATCH] Fixed input getting dropped if buffer is full. --- src/main/java/li/cil/circuity/Main.java | 6 ++---- src/main/java/li/cil/circuity/vm/riscv/R5Board.java | 9 ++++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/li/cil/circuity/Main.java b/src/main/java/li/cil/circuity/Main.java index ee91f943..c6fa61b3 100644 --- a/src/main/java/li/cil/circuity/Main.java +++ b/src/main/java/li/cil/circuity/Main.java @@ -65,10 +65,8 @@ public final class Main { System.out.print((char) value); } - while (br.ready()) { - if (!board.putValue((byte) br.read())) { - break; - } + while (br.ready() && board.canPutValue()) { + board.putValue((byte) br.read()); } } diff --git a/src/main/java/li/cil/circuity/vm/riscv/R5Board.java b/src/main/java/li/cil/circuity/vm/riscv/R5Board.java index 532d16f8..ea863a22 100644 --- a/src/main/java/li/cil/circuity/vm/riscv/R5Board.java +++ b/src/main/java/li/cil/circuity/vm/riscv/R5Board.java @@ -184,18 +184,17 @@ public final class R5Board { return uart.getByte(); } - public boolean putValue(final byte b) { - if (!uart.canReceive()) { - return false; - } + public boolean canPutValue() { + return uart.canReceive(); + } + public void putValue(final byte b) { uart.putByte(b); if ((char) b == '\n') { while (uart.canReceive()) { uart.putByte((byte) 0); // HACK? Ensure we reach FIFO trigger level. } } - return true; } private DeviceTree buildDeviceTree() {