aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2024-07-09 00:07:29 -0400
committerB. Watson <urchlay@slackware.uk>2024-07-09 00:07:29 -0400
commit87ab59df83efffaf0066308339da0fd228ad9cc9 (patch)
tree4b1adc7b24486b3346e81fac7de1253b0e1c8acd
parent50d59202354201e404e02bac1187e50abf07e4b3 (diff)
downloadbw-atari8-tools-87ab59df83efffaf0066308339da0fd228ad9cc9.tar.gz
whichbas: Detect INPUT "PROMPT";VAR.
-rw-r--r--whichbas.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/whichbas.c b/whichbas.c
index 7f315a4..490e517 100644
--- a/whichbas.c
+++ b/whichbas.c
@@ -154,6 +154,13 @@ CALLBACK(handle_cmd) {
print_result();
}
break;
+ case CMD_INPUT:
+ /* TB, BXL, BXE all support INPUT "Prompt",VAR with the same tokenized
+ form. Atari BASIC doesn't allow string constants in INPUT args. */
+ if(nexttok == OP_STRCONST) {
+ remove_type(BT_ATARI);
+ }
+ break;
case CMD_GET:
case CMD_PUT:
/* TB uses the same tokens for GET and PUT as Atari/BXL/BXE, but it allows
@@ -222,7 +229,7 @@ CALLBACK(handle_cmd) {
case 0x3a: /* -MOVE <args> or TRACEOFF */
case 0x3d: /* UNTIL <args> or ENDIF */
case 0x56: /* DEL <args> or FAST */
- case 0x62: /* CIRCLE (3 num args) or NORMAL (no args) */
+ case 0x62: /* CIRCLE (3 or 4 num args) or NORMAL (no args) */
if(has_args) {
remove_type(BT_BXL_BXE);
} else {
@@ -269,14 +276,14 @@ CALLBACK(handle_cmd) {
}
break;
case 0x48: /* DIR (optional arg) or PROTECT (req'd arg) */
- /* not conclusive: without args means TB, but with arg,
+ /* partial: without args means TB, but with arg,
it could be either */
if(!has_args) {
remove_type(BT_BXL_BXE);
}
break;
case 0x4a: /* UNLOCK (req'd arg) or DIR (optional arg) */
- /* not conclusive: without args means TB, but with arg,
+ /* partial: without args means TB, but with arg,
it could be either */
if(!has_args) {
remove_type(BT_TURBO);
@@ -557,7 +564,7 @@ CALLBACK(handle_end_stmt) {
case 0x52: /* FCOLOR (1 arg) or PMWIDTH (2 args) */
case 0x53: /* *L (optional + or - only) or SET (req 2 num args) */
case 0x4f: /* PROC (1 arg) or PMCOLOR (3 args) */
- if(comma_count) {
+ if(comma_count) { /* 1 arg means no commas */
remove_type(BT_TURBO);
} else {
remove_type(BT_BXL_BXE);