diff --git a/com/isoterminal/ISOTerminal.js b/com/isoterminal/ISOTerminal.js index aba4483..709ae2d 100644 --- a/com/isoterminal/ISOTerminal.js +++ b/com/isoterminal/ISOTerminal.js @@ -47,18 +47,22 @@ ISOTerminal.prototype.serial_input = 0; // can be set to 0,1,2,3 to define stdin ISOTerminal.prototype.send = function(str, ttyNr){ if( ttyNr == undefined) ttyNr = this.serial_input - if( ttyNr == undefined ){ - if( this.emulator.serial_adapter ){ - this.emulator.serial_adapter.term.paste(str) - }else this.emulator.keyboard_send_text(str) // vga screen + if( (this.emulator || this.worker) && this.ready ){ + if( ttyNr == undefined ){ + if( this.emulator.serial_adapter ){ + this.emulator.serial_adapter.term.paste(str) + }else this.emulator.keyboard_send_text(str) // vga screen + }else{ + this.convert.toUint8Array( str ).map( (c) => { + this.preventFrameDrop( + () => { + this.worker.postMessage({event:`serial${ttyNr}-input`,data:c}) + } + ) + }) + } }else{ - this.convert.toUint8Array( str ).map( (c) => { - this.preventFrameDrop( - () => { - this.worker.postMessage({event:`serial${ttyNr}-input`,data:c}) - } - ) - }) + this.emit('serial-output-string', str) } } diff --git a/com/isoterminal/feat/boot.js b/com/isoterminal/feat/boot.js index e2d3277..0f5779d 100644 --- a/com/isoterminal/feat/boot.js +++ b/com/isoterminal/feat/boot.js @@ -9,7 +9,7 @@ ISOTerminal.prototype.bootMenu = function(e){ msg += `\r ${m.key}) ${m.title(this.opts)}\n` }) msg += `\n\r enter choice> ` - this.emit('serial-output-string', msg) + this.send(msg) } ISOTerminal.addEventListener('bootmenu', function(e){ this.bootMenu() }) @@ -62,7 +62,7 @@ ISOTerminal.prototype.boot.menu.push( this.emit('status',"javascript console") this.console = "" setTimeout( () => { - this.emit('serial-output-string', this.prompt) + this.send(this.prompt) }, 100 ) }, keyHandler: function(ch){ @@ -71,16 +71,16 @@ ISOTerminal.prototype.boot.menu.push( ch = "\b \b" // why does write() not just support \x7F ? erase = true } - this.emit('serial-output-string', ch) + this.send(ch) const reset = () => { this.console = "" setTimeout( () => { - if( this.boot.menu.selected ) this.emit('serial-output-string', this.prompt) + if( this.boot.menu.selected ) this.send(this.prompt) },100) } if( (ch == "\n" || ch == "\r") ){ try{ - this.emit('serial-output-string', "\n\r") + this.send("\n\r") if( this.console ) eval(this.console) reset() }catch(e){