diff --git a/examples/lua.html b/examples/lua.html index 922d7524..a08dc590 100644 --- a/examples/lua.html +++ b/examples/lua.html @@ -26,9 +26,11 @@ window.onload = function() }, autostart: true, disable_keyboard: true, + disable_mouse: true, }); var data = ""; + var do_output = false; emulator.add_listener("serial0-output-char", function(char) { @@ -37,24 +39,17 @@ window.onload = function() data += char; } + if(do_output) + { + document.getElementById("result").textContent += char; + } + if(data.endsWith("~% ")) { console.log("Now ready"); document.getElementById("status").textContent = "Ready.\n"; document.getElementById("run").disabled = false; - } - }); - - emulator.add_listener("serial0-output-line", function(line) - { - // filter noise - if(!line.startsWith("/root% lua -e") && - !line.startsWith("> ") && - line.indexOf("Welcome to Buildroot") === -1 && - line.indexOf("login:") === -1 && - line.trim() !== "") - { - document.getElementById("result").textContent += line; + do_output = false; } }); @@ -75,6 +70,8 @@ window.onload = function() document.getElementById("result").textContent = ""; document.getElementById("status").textContent = "Running ...\n"; this.disabled = true; + + do_output = true; }; }; diff --git a/src/uart.js b/src/uart.js index 47f87a50..b7b52c41 100644 --- a/src/uart.js +++ b/src/uart.js @@ -67,7 +67,7 @@ function UART(cpu, port, bus) this.input = new ByteQueue(4096); - this.current_line = []; + this.current_line = ""; switch(port) { @@ -350,13 +350,15 @@ UART.prototype.write_data = function(out_byte) this.bus.send("serial" + this.com + "-output-char", char); - this.current_line.push(out_byte); - - if(char === "\n") + if(DEBUG) { - const line = String.fromCharCode.apply("", this.current_line).trimRight().replace(/[\x00-\x08\x0b-\x1f\x7f\x80-\xff]/g, ""); - dbg_log("SERIAL: " + line); - this.bus.send("serial" + this.com + "-output-line", String.fromCharCode.apply("", this.current_line)); - this.current_line = []; + this.current_line += char; + + if(char === "\n") + { + const line = this.current_line.trimRight().replace(/[\x00-\x08\x0b-\x1f\x7f\x80-\xff]/g, ""); + dbg_log("SERIAL: " + line); + this.current_line = ""; + } } };