mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-14 16:34:04 +09:00
more nashorn nonsense
This commit is contained in:
@@ -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+'}())')();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user