diff options
author | B. Watson <urchlay@slackware.uk> | 2024-06-13 17:33:43 -0400 |
---|---|---|
committer | B. Watson <urchlay@slackware.uk> | 2024-06-13 17:33:43 -0400 |
commit | 1701b8c7c14d38ff2de5703065d013ebe5c8f889 (patch) | |
tree | 571f209e111ee3b11159086a899c3bbc77cf8189 /vxrefbas.c | |
parent | ce201121b5785d9ecb2829d262c23050e537fa9e (diff) | |
download | bw-atari8-tools-1701b8c7c14d38ff2de5703065d013ebe5c8f889.tar.gz |
vxrefbas: WIP.
Diffstat (limited to 'vxrefbas.c')
-rw-r--r-- | vxrefbas.c | 47 |
1 files changed, 32 insertions, 15 deletions
@@ -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; } } |