basic: GETKEYSDOWN function

This commit is contained in:
minjaesong
2020-12-17 20:44:56 +09:00
parent 5af585e3d8
commit efde387d73
2 changed files with 20 additions and 3 deletions

View File

@@ -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);

3
assets/downkeys.bas Normal file
View File

@@ -0,0 +1,3 @@
10 GETKEYSDOWN K
20 PRINT K
30 GOTO 10