From efde387d73c0e9babfaf0f866731d17045b39bf5 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Thu, 17 Dec 2020 20:44:56 +0900 Subject: [PATCH] basic: GETKEYSDOWN function --- assets/basic.js | 20 +++++++++++++++++--- assets/downkeys.bas | 3 +++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 assets/downkeys.bas diff --git a/assets/basic.js b/assets/basic.js index 62626fa..24a6a1b 100644 --- a/assets/basic.js +++ b/assets/basic.js @@ -994,7 +994,7 @@ if no arg text were given (e.g. "10 NEXT"), args will have zero length */ "INPUT" : function(lnum, stmtnum, args) { if (args.length != 1) throw lang.syntaxfehler(lnum, args.length+lang.aG); - var troValue = args[0].troValue; + let troValue = args[0].troValue; // print out prompt text print("? "); var rh = sys.read().trim(); @@ -1011,9 +1011,9 @@ if no arg text were given (e.g. "10 NEXT"), args will have zero length return {asgnVarName: troValue.arrName, asgnValue: rh}; } else { - var varname = troValue.toUpperCase(); + let varname = troValue.toUpperCase(); //println("input varname: "+varname); - var type = JStoBASICtype(rh); + let type = JStoBASICtype(rh); if (_basicConsts[varname]) throw lang.asgnOnConst(lnum, varname); bStatus.vars[varname] = new BasicVar(rh, type); return {asgnVarName: varname, asgnValue: rh}; @@ -1160,6 +1160,20 @@ if no arg text were given (e.g. "10 NEXT"), args will have zero length "MAX" : function(lnum, stmtnum, args) { return twoArg(lnum, stmtnum, args, (lh,rh) => (lh < rh) ? rh : lh); }, +"GETKEYSDOWN" : function(lnum, stmtnum, args) { + if (args.length != 1) throw lang.syntaxfehler(lnum, args.length+lang.aG); + let troValue = args[0].troValue; + let varname = troValue.toUpperCase(); + let keys = []; + sys.poke(-40, 255); + for (let k = -41; k >= -48; k--) { + keys.push(sys.peek(k)); + } + + if (_basicConsts[varname]) throw lang.asgnOnConst(lnum, varname); + bStatus.vars[varname] = new BasicVar(keys, "array"); + return {asgnVarName: varname, asgnValue: keys}; +}, "OPTIONDEBUG" : function(lnum, stmtnum, args) { return oneArgNum(lnum, stmtnum, args, (lh) => { if (lh != 0 && lh != 1) throw lang.syntaxfehler(line); diff --git a/assets/downkeys.bas b/assets/downkeys.bas new file mode 100644 index 0000000..d5a68ae --- /dev/null +++ b/assets/downkeys.bas @@ -0,0 +1,3 @@ +10 GETKEYSDOWN K +20 PRINT K +30 GOTO 10