aboutsummaryrefslogtreecommitdiff
path: root/vxrefbas.c
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2024-06-13 17:33:43 -0400
committerB. Watson <urchlay@slackware.uk>2024-06-13 17:33:43 -0400
commit1701b8c7c14d38ff2de5703065d013ebe5c8f889 (patch)
tree571f209e111ee3b11159086a899c3bbc77cf8189 /vxrefbas.c
parentce201121b5785d9ecb2829d262c23050e537fa9e (diff)
downloadbw-atari8-tools-1701b8c7c14d38ff2de5703065d013ebe5c8f889.tar.gz
vxrefbas: WIP.
Diffstat (limited to 'vxrefbas.c')
-rw-r--r--vxrefbas.c47
1 files changed, 32 insertions, 15 deletions
diff --git a/vxrefbas.c b/vxrefbas.c
index 839b776..21e8067 100644
--- a/vxrefbas.c
+++ b/vxrefbas.c
@@ -7,7 +7,10 @@
#include "bas.h"
-int target_var, lastline, assign, is_for, is_next;
+/* FIXME: lists don't work correctly yet, DIM/READ/INPUT.
+ Example: 10 DIM A$(10):? B$ ...it thinks B$ was also DIMed. */
+
+int target_var, lastline, assign, is_for, is_next, is_dim, is_read, is_input;
int refcounts[128];
void print_help(void) {
@@ -16,27 +19,41 @@ void print_help(void) {
}
CALLBACK(new_line) {
- assign = is_for = is_next = 0;
+ assign = is_for = is_next = is_dim = is_read = is_input = 0;
}
CALLBACK(end_line) {
if(lastline != lineno) return;
- printf("%d%s%s%s ",
- lineno,
- assign ? "=" : "",
- is_for ? "{": "",
- is_next ? "}": "");
+
+ printf("%d", lineno);
+ if(assign || is_for || is_next || is_dim || is_read || is_input) {
+ putchar('=');
+ if(assign) putchar('A');
+ if(is_for) putchar('F');
+ if(is_next) putchar('N');
+ if(is_dim) putchar('D');
+ if(is_read) putchar('R');
+ if(is_input) putchar('I');
+ }
+ putchar(' ');
}
CALLBACK(new_command) {
- if(program[pos + 1] == (target_var | 0x80)) {
- if(tok == CMD_LET || tok == CMD_ILET) {
- assign = 1;
- } else if(tok == CMD_FOR) {
- is_for = 1;
- } else if(tok == CMD_NEXT) {
- is_next = 1;
- }
+ switch(tok) {
+ case CMD_LET:
+ case CMD_ILET:
+ assign = 1; break;
+ case CMD_FOR:
+ is_for = 1; break;
+ case CMD_NEXT:
+ is_next = 1; break;
+ case CMD_DIM:
+ is_dim = 1; break;
+ case CMD_READ:
+ is_read= 1; break;
+ case CMD_INPUT:
+ is_input= 1; break;
+ default: break;
}
}