From 664a4ca75898d0c2090034657f2afa1c8087739b Mon Sep 17 00:00:00 2001 From: minjaesong Date: Wed, 28 Oct 2020 14:57:50 +0900 Subject: [PATCH] more nashorn nonsense --- assets/JS_INIT.js | 4 ++++ assets/tbas/basic.js | 34 ++++++++++++++++++---------------- src/net/torvald/tsvm/VMGUI.kt | 5 ++--- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/assets/JS_INIT.js b/assets/JS_INIT.js index 734a2dc..5ae677e 100644 --- a/assets/JS_INIT.js +++ b/assets/JS_INIT.js @@ -272,8 +272,12 @@ if ('function' !== typeof Array.prototype.reduceRight) { // NOTE TO PROGRAMMERS: this JS_INIT script does not, and must not be invoked with strict mode // /////////////////////////////////////////////////////////////////////////////////////////////////// +// disabling and re-installing JS/Nashorn functions +// alse see: https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions load = undefined; loadWithNewGlobal = undefined; +exit = undefined; +quit = undefined; var eval = function(s) { // installing new eval function return Function('"use strict";return(function(){'+s+'}())')(); } diff --git a/assets/tbas/basic.js b/assets/tbas/basic.js index 412af74..7a96849 100644 --- a/assets/tbas/basic.js +++ b/assets/tbas/basic.js @@ -20,13 +20,13 @@ if (system.maxmem() < 8192) { throw new Error("Out of memory"); } -var vmemsize = system.maxmem() - 5236; +let vmemsize = system.maxmem() - 5236; -var cmdbuf = []; // index: line number -var cmdbufMemFootPrint = 0; -var prompt = "Ok"; +let cmdbuf = []; // index: line number +let cmdbufMemFootPrint = 0; +let prompt = "Ok"; -var lang = {}; +let lang = {}; lang.badNumberFormat = "Illegal number format"; lang.badOperatorFormat = "Illegal operator format"; lang.badFunctionCallFormat = "Illegal function call"; @@ -63,18 +63,18 @@ function getUsedMemSize() { } -var reLineNum = /^[0-9]+ /; +let reLineNum = /^[0-9]+ /; //var reFloat = /^([\-+]?[0-9]*[.][0-9]+[eE]*[\-+0-9]*[fF]*|[\-+]?[0-9]+[.eEfF][0-9+\-]*[fF]?)$/; //var reDec = /^([\-+]?[0-9_]+)$/; //var reHex = /^(0[Xx][0-9A-Fa-f_]+)$/; //var reBin = /^(0[Bb][01_]+)$/; // must match partial -var reNumber = /([0-9]*[.][0-9]+[eE]*[\-+0-9]*[fF]*|[0-9]+[.eEfF][0-9+\-]*[fF]?)|([0-9_]+)|(0[Xx][0-9A-Fa-f_]+)|(0[Bb][01_]+)/; -var reOps = /\^|;|\*|\/|\+|\-|[<>=]{1,2}/; +let reNumber = /([0-9]*[.][0-9]+[eE]*[\-+0-9]*[fF]*|[0-9]+[.eEfF][0-9+\-]*[fF]?)|([0-9_]+)|(0[Xx][0-9A-Fa-f_]+)|(0[Bb][01_]+)/; +let reOps = /\^|;|\*|\/|\+|\-|[<>=]{1,2}/; -var reNum = /[0-9]+/; -var tbasexit = false; +let reNum = /[0-9]+/; +let tbasexit = false; println("Terran BASIC 1.0 "+vmemsize+" bytes free"); println(prompt); @@ -219,7 +219,7 @@ function threeArgNonNullNumeric(lnum, args, action) { if (isNaN(resolvedargs2)) throw lang.illegalType(lnum, resolvedargs2.value); return action(resolvedargs0, resolvedargs1, resolvedargs2); } -var basicInterpreterStatus = {}; +let basicInterpreterStatus = {}; basicInterpreterStatus.gosubStack = []; basicInterpreterStatus.variables = {}; basicInterpreterStatus.defuns = {}; @@ -425,7 +425,7 @@ basicInterpreterStatus.builtin = { } }; Object.freeze(basicInterpreterStatus.builtin); -var basicFunctions = {}; +let basicFunctions = {}; basicFunctions._isNumber = function(code) { return (code >= 0x30 && code <= 0x39) || code == 0x5F; }; @@ -1398,19 +1398,19 @@ basicFunctions.run = function(args) { // RUN function }; Object.freeze(basicFunctions); while (!tbasexit) { - var line = sys.read(); + let line = sys.read(); line = line.trim(); cmdbufMemFootPrint += line.length; if (reLineNum.test(line)) { - var i = line.indexOf(" "); + let i = line.indexOf(" "); cmdbuf[line.slice(0, i)] = line.slice(i + 1, line.length); } else if (line.length > 0) { cmdbufMemFootPrint -= line.length; try { - var cmd = line.split(" "); + let cmd = line.split(" "); serial.printerr(cmd[0].toLowerCase()); basicFunctions[cmd[0].toLowerCase()](cmd); } @@ -1420,4 +1420,6 @@ while (!tbasexit) { } println(prompt); } -} \ No newline at end of file +} + +return 0; \ No newline at end of file diff --git a/src/net/torvald/tsvm/VMGUI.kt b/src/net/torvald/tsvm/VMGUI.kt index eb42325..f02c967 100644 --- a/src/net/torvald/tsvm/VMGUI.kt +++ b/src/net/torvald/tsvm/VMGUI.kt @@ -36,6 +36,8 @@ class VMGUI(val appConfig: LwjglApplicationConfiguration) : ApplicationAdapter() 0 ) + Gdx.input.inputProcessor = vm.getIO() + batch = SpriteBatch() camera = OrthographicCamera(appConfig.width.toFloat(), appConfig.height.toFloat()) camera.setToOrtho(false) @@ -78,9 +80,6 @@ class VMGUI(val appConfig: LwjglApplicationConfiguration) : ApplicationAdapter() vmRunner.evalGlobal(bios + "\n" + tvgl) vmRunner.executeCommand(prg) } - - - Gdx.input.inputProcessor = vm.getIO() } private var updateAkku = 0.0