aboutsummaryrefslogtreecommitdiff
path: root/vxrefbas.rst
blob: 510d016da098ea9f5fb29b80256a14b390eba17f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
========
vxrefbas
========

--------------------------------------------------------------
Variable cross-reference for tokenized Atari 8-bit BASIC files
--------------------------------------------------------------

.. include:: manhdr.rst

SYNOPSIS
========

vxrefbas **input-file**

DESCRIPTION
===========

**vxrefbas** reads an Atari 8-bit BASIC tokenized program and prints a
list of variables (names and token numbers), each with a list of line
numbers where the variable is referenced.

String variable names end with *$*. Arrays end with *(*. Numeric
(scalar) variable names don't have a special character.

After the list of lines, the reference count is shown in parentheses.
Variables that aren't used by the program are listed as *(no references)*.

Each line number may be followed by an *=* and one or more markers,
which show the type of variable access.

**A**
  Variable is assigned on this line, with *LET* or "implied LET" (e.g.
  *A=1*).

**F**
  Variable is used as the control variable of a *FOR* loop on this line.

**N**
  Variable is used in a *NEXT* on this line.

**D**
  The variable is dimensioned (*DIM* command) on this line. Only applies to
  string and array variables.

**I**
  Variable was *INPUT* on this line.

**R**
  Variable was *READ* on this line.

OPTIONS
=======

General Options
---------------
**--help**
  Print usage message and exit.

**--version**
  Print version number and exit.

**-v**
  Verbose operation. When displaying a number in verbose mode, it will
  be prefixed with *$* if it's in hex, or no prefix for decimal.

BUGS
====

This program::

  10 FILE=1:INPUT #FILE,LINE$

Results in this::

  FILE/80: 10=AI (1)
  LINE$/81: 10=AI (1)
    2 variables, 0 unreferenced.

**vxrefbas** thinks *FILE* is being *INPUT* on line 10, which it isn't.
The output for *FILE* should read *10=A (1)*.

Also, this program::

  10 DIM A(1):A(0)=10
  20 DIM B(A(0))

Results in this::

  A(/80: 10=AD 20=D (2)
  B(/81: 20=D (1)
    2 variables, 0 unreferenced.

**vxrefbas** thinks *A(* is being DIMensioned on line 20, which it isn't. The
output for *A(* should read *10=AD 20 (2)*.

EXIT STATUS
===========

0 for success, 1 for failure.

.. include:: manftr.rst