more nashorn nonsense

This commit is contained in:
minjaesong
2020-10-28 14:57:50 +09:00
parent 939940e784
commit 664a4ca758
3 changed files with 24 additions and 19 deletions

View File

@@ -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 // // 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; load = undefined;
loadWithNewGlobal = undefined; loadWithNewGlobal = undefined;
exit = undefined;
quit = undefined;
var eval = function(s) { // installing new eval function var eval = function(s) { // installing new eval function
return Function('"use strict";return(function(){'+s+'}())')(); return Function('"use strict";return(function(){'+s+'}())')();
} }

View File

@@ -20,13 +20,13 @@ if (system.maxmem() < 8192) {
throw new Error("Out of memory"); throw new Error("Out of memory");
} }
var vmemsize = system.maxmem() - 5236; let vmemsize = system.maxmem() - 5236;
var cmdbuf = []; // index: line number let cmdbuf = []; // index: line number
var cmdbufMemFootPrint = 0; let cmdbufMemFootPrint = 0;
var prompt = "Ok"; let prompt = "Ok";
var lang = {}; let lang = {};
lang.badNumberFormat = "Illegal number format"; lang.badNumberFormat = "Illegal number format";
lang.badOperatorFormat = "Illegal operator format"; lang.badOperatorFormat = "Illegal operator format";
lang.badFunctionCallFormat = "Illegal function call"; 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 reFloat = /^([\-+]?[0-9]*[.][0-9]+[eE]*[\-+0-9]*[fF]*|[\-+]?[0-9]+[.eEfF][0-9+\-]*[fF]?)$/;
//var reDec = /^([\-+]?[0-9_]+)$/; //var reDec = /^([\-+]?[0-9_]+)$/;
//var reHex = /^(0[Xx][0-9A-Fa-f_]+)$/; //var reHex = /^(0[Xx][0-9A-Fa-f_]+)$/;
//var reBin = /^(0[Bb][01_]+)$/; //var reBin = /^(0[Bb][01_]+)$/;
// must match partial // 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_]+)/; 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_]+)/;
var reOps = /\^|;|\*|\/|\+|\-|[<>=]{1,2}/; let reOps = /\^|;|\*|\/|\+|\-|[<>=]{1,2}/;
var reNum = /[0-9]+/; let reNum = /[0-9]+/;
var tbasexit = false; let tbasexit = false;
println("Terran BASIC 1.0 "+vmemsize+" bytes free"); println("Terran BASIC 1.0 "+vmemsize+" bytes free");
println(prompt); println(prompt);
@@ -219,7 +219,7 @@ function threeArgNonNullNumeric(lnum, args, action) {
if (isNaN(resolvedargs2)) throw lang.illegalType(lnum, resolvedargs2.value); if (isNaN(resolvedargs2)) throw lang.illegalType(lnum, resolvedargs2.value);
return action(resolvedargs0, resolvedargs1, resolvedargs2); return action(resolvedargs0, resolvedargs1, resolvedargs2);
} }
var basicInterpreterStatus = {}; let basicInterpreterStatus = {};
basicInterpreterStatus.gosubStack = []; basicInterpreterStatus.gosubStack = [];
basicInterpreterStatus.variables = {}; basicInterpreterStatus.variables = {};
basicInterpreterStatus.defuns = {}; basicInterpreterStatus.defuns = {};
@@ -425,7 +425,7 @@ basicInterpreterStatus.builtin = {
} }
}; };
Object.freeze(basicInterpreterStatus.builtin); Object.freeze(basicInterpreterStatus.builtin);
var basicFunctions = {}; let basicFunctions = {};
basicFunctions._isNumber = function(code) { basicFunctions._isNumber = function(code) {
return (code >= 0x30 && code <= 0x39) || code == 0x5F; return (code >= 0x30 && code <= 0x39) || code == 0x5F;
}; };
@@ -1398,19 +1398,19 @@ basicFunctions.run = function(args) { // RUN function
}; };
Object.freeze(basicFunctions); Object.freeze(basicFunctions);
while (!tbasexit) { while (!tbasexit) {
var line = sys.read(); let line = sys.read();
line = line.trim(); line = line.trim();
cmdbufMemFootPrint += line.length; cmdbufMemFootPrint += line.length;
if (reLineNum.test(line)) { if (reLineNum.test(line)) {
var i = line.indexOf(" "); let i = line.indexOf(" ");
cmdbuf[line.slice(0, i)] = line.slice(i + 1, line.length); cmdbuf[line.slice(0, i)] = line.slice(i + 1, line.length);
} }
else if (line.length > 0) { else if (line.length > 0) {
cmdbufMemFootPrint -= line.length; cmdbufMemFootPrint -= line.length;
try { try {
var cmd = line.split(" "); let cmd = line.split(" ");
serial.printerr(cmd[0].toLowerCase()); serial.printerr(cmd[0].toLowerCase());
basicFunctions[cmd[0].toLowerCase()](cmd); basicFunctions[cmd[0].toLowerCase()](cmd);
} }
@@ -1420,4 +1420,6 @@ while (!tbasexit) {
} }
println(prompt); println(prompt);
} }
} }
return 0;

View File

@@ -36,6 +36,8 @@ class VMGUI(val appConfig: LwjglApplicationConfiguration) : ApplicationAdapter()
0 0
) )
Gdx.input.inputProcessor = vm.getIO()
batch = SpriteBatch() batch = SpriteBatch()
camera = OrthographicCamera(appConfig.width.toFloat(), appConfig.height.toFloat()) camera = OrthographicCamera(appConfig.width.toFloat(), appConfig.height.toFloat())
camera.setToOrtho(false) camera.setToOrtho(false)
@@ -78,9 +80,6 @@ class VMGUI(val appConfig: LwjglApplicationConfiguration) : ApplicationAdapter()
vmRunner.evalGlobal(bios + "\n" + tvgl) vmRunner.evalGlobal(bios + "\n" + tvgl)
vmRunner.executeCommand(prg) vmRunner.executeCommand(prg)
} }
Gdx.input.inputProcessor = vm.getIO()
} }
private var updateAkku = 0.0 private var updateAkku = 0.0