diff --git a/SMILEBASIC/VM.d b/SMILEBASIC/VM.d index f129d76..b9f4e1c 100644 --- a/SMILEBASIC/VM.d +++ b/SMILEBASIC/VM.d @@ -319,6 +319,22 @@ class VM return true; return false; } + bool chklabel(wstring label) + { + if (label in currentSlot.globalLabel) + return true; + if (currentFunction && label in currentFunction.label) + return true; + return false; + } + bool chkvar(wstring var) + { + if (var in currentSlot.globalTable) + return true; + if (currentFunction && var in currentFunction.variable) + return true; + return false; + } } enum CodeType { diff --git a/SMILEBASIC/builtinfunctions.d b/SMILEBASIC/builtinfunctions.d index 0d8e39b..ce5bb68 100644 --- a/SMILEBASIC/builtinfunctions.d +++ b/SMILEBASIC/builtinfunctions.d @@ -2382,7 +2382,12 @@ class BuiltinFunction static int CHKLABEL(PetitComputer p, wstring label) { label = label.toUpper; - return (label in p.vm.currentSlot.globalLabel) != null; + return p.vm.chklabel(label); + } + static int CHKVAR(PetitComputer p, wstring var) + { + var = var.toUpper; + return p.vm.chkvar(var); } static wstring INKEY(PetitComputer p) {