Contents of the QBX.DOC file
QBX - Quick Basic Cross Referencer Version 4.00g
(c) Copyright Vernon D. Buerg 1986-88 October 9,1988
ALL RIGHTS RESERVED.
Determines cross references to alphanumeric labels and symbols
within a BASIC source program.
QBX [filename[.BAS]] [/D] [/Lnn] [/Cnnn] [/R]
If no filename is supplied, you are prompted to enter the
file name of the BASIC source file. The source file must
have been saved in ASCII (,A) format. The program may contain
any valid combination of numeric and alphameric labels. The
syntax is dictated by the Microsoft Quick Basic Compiler manual
and the IBM BASIC, Version 3.1, manual.
The source file may contain TAB characters but their use
may cause the listing to be mis-aligned.
The output consists of a program listing and a cross-reference
listing. The destination for the listing may be specified in
the command as:
/D display listings on the console display
/P print the listings on the LPT1: printer
/F write the listings to a file; may be supplied as (filename)
/N suppress all listings
For example, /F(MYPROG.LST) sets a destination of a file with
the name MYPROG.LST. If no extension is supplied, .LST is used
for the program listing and .REF is used for the cross-reference
If no destination parameter is supplied, you will be asked to supply
The number of lines per page may be suppied by the /L parameter,
for example /L66 sets a default of 66 lines per page.
The number of columns per line may be supplied by the /C parameter,
for example /C132 sets a default of 133 columns per line.
Actual file record (line) numbers may be used instead of statement
numbers by supplying the /R option.
The source file may contain the meta commands described in
the Quick Basic (versions 1 or 2) manuals. These meta commands
are currently recognized:
$INCLUDE - cause QBX to include the named file with
the current source program, and may be nested
to approximately 15 levels;
$LINESIZE - sets the number of characters per page;
$PAGESIZE - sets the number of program lines per page;
$PAGE - forces a new listing page
$SKIP - inserts one blank line into the listing
$SKIP:n - inserts "n" blank lines into the listing
$SUBTITLE - adds a subtitle to each listing page second line
$TITLE - adds a title to each listing page; if none
are supplied, the title is "QBX"
There are two parts to the operation of QBX. The first phase
produces a program listing and builds the internal tables
representing the program's labels and symbols. The second
phase produces a label and a symbol cross reference.
The output from each phase may be directed to the screen,
a printer (LPT1), a file, or nowhere. You are prompted for
The format of the listings is governed by two values: the
number of lines per page, and the number of columns per line.
You supply both values. The defaults are 66 lines per page
and 80 columns. You may over-ride these values by using the
meta commands $PAGESIZE and $LINESIZE in the program. If the
console is used for output, the values are always set to 24
lines and 80 columns with an option at the end of each page
to pause or continue.
You must set your printer to the appropriate lines and columns
values before running QBX. It does not send any printer codes.
The internal tables contain the labels, symbols, and cross
reference information. The current limits are 2500 labels and
symbols, and approximately 16000 cross references (depends
upon the amount of memory available. There is also a limit
off 200 fields per statement. A field is a symbol, label,
delimiter, or operator. These values are summarized at the
end of program execution.
You may terminate processing by pressing the ESCape key.
1.01-1.08, 1/17/86, the hack begins
- fix Error6 in line 3440
- correct listing of long program lines
- add missing 30 keywords (oops)
1.10, 1/19/86 - speed up analysis phase
1.11, 1/22/86 - correction for comments
1.12,1.13; 1/22/86 - revise symbol table lookup
1.14, 1/24/86 - implement meta commands
1.15, 1/27/86 - correct FIELD as labels
1.16,1.17, 1/28/86 - improve analysis routines
- externalize XREFS table to improve housekeeping time
- requires LINK QBX+XREF; followed by EXEPATCH to set x1800 max paras
- optimize xref listing and external xref subroutines
- add external UPC subroutine
- add hash table for symbol look-up
- use binary search for keyword look-up
- correct Error 6 at line 3900
- remove UPC due to fouling meta commands
- clean up headings and titles
1.29, 3/9/86 - correct EXEPATCH problem
1.30, 3/11/86 - correct Print function
1.31, 4/02/86 - print after parsing record
1.32, 4/08.86 - correct label case, correct tabs
1.33, 4/22/86 - correct page title positioning
1.34, 6/23/86 - increase maximum FIELDS to 200
2.00, 7/18/86 - add QB 2.00 keywords
2.01, 9/27/86 - correct not finding labels with leading blanks
- Correct problem with $INCLUDE
- Correct error 52 at 3350 if don't want xref output
- expand label tables from 2000 to 2500
- supply documentation
- correct handling of continued lines (using underscore) which
are followed by comments
- correct handling of $TITLE; default title is now program name
- correct handling of lower case meta commands
- show name(s) of included files during first phase
Version history (cont'd)
- add command line options for destination, lines per page,
and columns per line
- improve detection of label versus symbol references for numbers
- note assignment to symbols by an asterisk in cross reference
- fix incorrect statment numbers in xref after labels
- remove duplicate references
2.07, 3/3/87 by David W. Campbell
- acknowledge missing trailing double quotes
- don't number blank or null lines
- don't print page eject or blank line at top of first page
- correct meta pagesize
- correct default pagesize
2.07b, 3/4/87 by David W. Campbell
- add distinction between dimensioned and undimensioned variables
- added keywords for QB version 3
- more work needs to be done.
- add QB 4 keywords
- expand maximum fields to 600
- expand symbol table to include symbol type
- expand xref table to include reference type
- correct Goosen's problem with open (double quote) comments
- change default filename for xref from .REF to .LST
- increase capacity, allow up to 2500 symbols
- add cross reference of SUBs and DEF FN routines
- add /R option to use record (line) instead of statement numbers
- correct missing numeric labels in label listing
| - correct overwrite of output file if /f(filename) is used
| - correct "ERROR: Include file 'filename' is missing" message
Copyright Vernon D. Buerg 1986-88. All rights reserved.
QBX was written using the Microsoft Quick Basic Compiler,
Version 3.00, and one assembler subroutine. At least 128K
of memory is required, but 192K or more is recommended. The
additional memory is used to increase the limits of the numbers
of labels, symbols and cross references that QBX can process.
QBX issupplied for personal, private use. Feel free to
distribute QBX given these restrictions:
o the program shall be supplied in its original, unmodified
form, which includes this documentation;
o no fee is charged;
o "commmercial" use without a license is prohibited;
o the program may not be included -or bundled - with other
goods or services. Exceptions may be granted upon written
request only. This also applies to clubs and distributors.
If you find QBX of value, your gift of $15, or any amount, would
be greatly appreciated.
Please direct your inquiries, complaints, suggestions, etc., to:
Vernon D. Buerg
139 White Oak Circle
Petaluma, CA 94952
Data: (707) 778-8944, 24 hour BBS
-or- (707) 778-8841