From 1701b8c7c14d38ff2de5703065d013ebe5c8f889 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 13 Jun 2024 17:33:43 -0400 Subject: vxrefbas: WIP. --- vxrefbas.c | 47 ++++++++++++++++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 15 deletions(-) (limited to 'vxrefbas.c') 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; } } -- cgit v1.2.3