home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Boston 2
/
boston-2.iso
/
DOS
/
PROGRAM
/
BASIC
/
POWBASIC
/
LIBRARY3
/
CRSBAS.ZIP
/
CROSSBAS.DOC
< prev
next >
Wrap
Text File
|
1990-12-01
|
44KB
|
1,085 lines
CrossBas Manual
Power-BASIC Cross-Reference List Creator
November 13, 1989 (1990)
(c) Lester L. Noll
CompuServe Id: 72250,2551
CrossBas.exe
version 1.00P
ContentsContents
1 Disclaimer . . . . . . . . . . . . . . . . . . 1
2 Copyright and Usage . . . . . . . . . . . . . . 1
3 Introduction . . . . . . . . . . . . . . . . . 1
4 Running CrossBas . . . . . . . . . . . . . . . 2
5 Command Line Options . . . . . . . . . . . . . 2
6 Changing Defaults File . . . . . . . . . . . . 5
7 The Summary Report . . . . . . . . . . . . . . 6
8 What CrossBas Does . . . . . . . . . . . . . . 8
8.1 Initialize . . . . . . . . . . . . . . . . 8
8.2 InitScreen . . . . . . . . . . . . . . . . 8
8.3 ReadCmdLine . . . . . . . . . . . . . . . 9
8.4 OpenFiles . . . . . . . . . . . . . . . . 9
8.5 CalcFileNames . . . . . . . . . . . . . . 9
8.6 ReadDefaults . . . . . . . . . . . . . . . 9
8.7 CheckStringSpace . . . . . . . . . . . . 10
8.8 CalcWordArraySize . . . . . . . . . . . 10
8.9 PrintScreenTop . . . . . . . . . . . . . 10
8.10 ReadAndParseData . . . . . . . . . . . 10
8.11 PrintScreen1 . . . . . . . . . . . . . 10
8.12 Compare . . . . . . . . . . . . . . . . 11
8.13 PrintScreen2 . . . . . . . . . . . . . 11
8.14 Sort . . . . . . . . . . . . . . . . . 11
8.15 PrintScreen3 . . . . . . . . . . . . . 11
8.16 PrintList . . . . . . . . . . . . . . . 11
8.17 PrintReportBtm . . . . . . . . . . . . 12
8.18 PrintScreen4 . . . . . . . . . . . . . 12
8.19 End Routines . . . . . . . . . . . . . 12
Appendix A CrossBas Files 13
Appendix B Modification History 15
Appendix C Power-BASIC Reserved Words 17
i
ii
FiguresFigures
Figure 1: Summary Report Example . . . . . . . . . . 8
iii
CROSSBAS.DOC CrossBas Manual page 1
1 Disclaimer 1 Disclaimer
Hear ye, hear ye! Be it known that the author hereby
disclaims all warranties expressed or implied as to the quality
or performance of this program. The author will not be held
liable for any lost profits, lost savings or any other direct,
indirect, incidental or consequential damages resulting from the
use of this program. Your use of this program constitutes your
agreement to this disclaimer and your release of the author from
any form of liability or litigation. (Really gives you
confidence, huh?)
2 Copyright and Usage 2 Copyright and Usage
This program, as well as its accompanying files and
documents, is copyright by the author, Lester L. Noll. You are
free to use and distribute it as you wish as long as you charge
no payment, either money or otherwise, for it. Also, you must
keep all the associated files together. The files are listed in
Appendix I. Use PKUNZIP to unarchive.
If you have any questions, comments or suggestions about
this program, feel free to contact me at CompuServe:
Lester L. Noll
[72250,2551]
3 Introduction 3 Introduction
CrossBas will scan a Power-BASIC source file and create a
cross-reference table of variable names, labels, procedure and
function names versus the physical line numbers where those names
occur.
To do this we must first read in all words in the file. We
can skip text to the right of "REM" statements or "'" remark
identifiers; text to the right of "DATA" statements; text between
quote marks; numbers; and operators.
After the program words are read in, we compare them with
Power-BASIC reserved words and metastatements. We keep only
those that are not Power-BASIC words.
Finally, we alphabetize the remaining words and print them
out, one word to a line, followed by the physical source file
line number(s) where these words are found. The list is sorted
without regard to case.
CROSSBAS.DOC CrossBas Manual page 2
We print the list to an ASCII file and allow the user some
control over its format. You may either print it to your printer
using the DOS PRINT or TYPE filename.ext>PRN commands or you may
use a print program such as Norton's LP.
At the end of the file is a summary report showing
processing times, number of words processed and a few
calculations that may be helpful for customizing CrossBas to your
own programming characteristics.
4 Running CrossBas 4 Running CrossBas
Run CrossBas from the DOS command line. There is no
interactive mode. If you enter "CROSSBAS" with no command line
parameters, CrossBas will print a short message showing proper
syntax and the optional switches.
5 Command Line Options 5 Command Line Options
The only required command line parameter is the input file
(source file) path/name. The output file path/name and switches
are optional. If no output file is entered, I append ".cb" to
the input file name to create an output file name. If a file
having the same name as output file already exists, I write over
it -- so be warned.
Command line options can be entered in any order. In fact,
the only rule is that the input file path/name must be entered
before the output file path/name. You may enter switches, one
after the other, without separating spaces. If, however, you
enter a switch before a file path/name you must leave at least
one space between the file path/name and the preceding switch.
Syntax:
crossbas infile[.ext][outfile][.ext][/bw][/p][/u][/s][/l:n][/w:n]
Switches:
/bw Set screen colors to black and white.
/p Paginate output file and print page headers.
/u Print variables to output file in upper case.
/s Print the list to the screen as well as to file.
/l:n Set the printer left margin to n columns.
/w:n Override CrossBas' word array dimension calculation.
CROSSBAS.DOC CrossBas Manual page 3
Input File infile [required]
The input file path/name must be a valid DOS pathname. If
no path is entered, the default path is assumed. If the input
file path/name is not found, CrossBas prints an appropriate
message and quits.
Output File outfile [optional]
The output file path/name must be formed using valid DOS
pathname and filename syntax. If no path is entered, the default
is assumed. If no output file path/name is entered or if the
entered output file path/name is invalid, I append ".cb" to the
input file path/name for the output file.
I do not check if a file with the same name already exists.
If one does exist, I write over it. If you have a main file with
the extension ".bas" and an include file with the extension
".inc" you are responsible for providing output file names that
do not conflict with each other. By allowing CrossBas to use its
default output file name, both cross-reference files would have
the same name, which means the second one would overwrite the
first.
Black & White /bw [optional]
The black and white switch, /bw, sets the screen color to
black and white. The default screen colors are yellow (#14)
foreground on a blue (#1) background. The upper and lower screen
lines (lines 1 and 25) use the same colors but with foreground
and background colors reversed. Since only colors numbered 0
through 7 are allowed for background colors, and since yellow is
14, the upper and lower screen line colors are blue foreground
and brown (#6) background (14 minus 8).
Paginate /p [optional]
The paginate switch, /p, causes the output file to be
written with page breaks and page headers. The header contains
the current system date, the page number and the source file
name. To print a paginated file, type either "TYPE filename.ext
> PRN" or "PRINT filename.ext" from the DOS command line. Blank
lines and form-feeds are inserted in the output file in order to
leave two blank lines at the top of the page and three blank
lines at the bottom of the page. The header appears on line
three of each page, followed by one blank line. On line five is a
column header indicating "Variable/Label/Proc" name on the left,
and "Physical Line Number" on the right.
CROSSBAS.DOC CrossBas Manual page 4
If the paginate switch is not selected, the output file is
printed without page breaks or headers. This method may be
preferable if you use a print formatter like Norton Utilities'
LP, which does its own page formatting.
In either case, the summary report will be printed on the
last page without breaks. Thus if there are not enough lines to
print the entire report on what remains of the last page, I
insert a form-feed and print it on a new page.
Upper-case /u [optional]
The upper-case switch, /u, causes the variable, label,
procedure and function names to be written to the output file in
all upper-case. If this switch is selected, two words, the same
in name but written in different case, would only appear once in
the output listing. If this switch is not selected, for example,
"Label1:", LABEL1:" and "label1:" would all be listed separately.
If you use case to clarify your labels, such as,
"ThisIsLabelOne:", you will probably choose to not use this
switch. Sorting is always done in upper-case order, therefore
"AAA", "aaa" and "Aaa" would be treated equally. (Because I use
UCASE$(word$) to sort the list, the three previous examples could
appear in any order.)
Screen /s [optional]
The screen switch, /s, causes the sorted list to print to
the screen at the same time it prints to the output file. After
22 lines print to the screen, the scroll stops with a "...Press Q
to Quit screen list, any other key to continue" message. When
you press a key the scroll continues for 22 more lines. If you
press <Q> or <ESC> the screen list stops but output to output
file continues until the list print is completed.
[Note: The list prints to the output file at the same time it
prints to the screen. Therefore, if you decide you don't want to
see anymore and press <Ctrl><Break>, you will also abort the
write to file.]
Left Margin /l:n [optional]
The left margin switch and parameter, /l:n, will insert a
printer setup string at the top of the output file to set the
left margin at "n" columns. The left margin range is 0 to 8
columns. Since the page width is 72 columns, having a left
margin of more than 8 would push the page off the edge of an 80
column page. If you enter a left margin greater than 8, the
value defaults to 8.
CROSSBAS.DOC CrossBas Manual page 5
[Note: I use the Epson escape sequence, <ESC> "l" n, where n
equals the left margin column. If you have a different printer
you must modify the code or not use this option.]
Word Array Dimension Override /w:n [optional]
The word dimension override switch and parameter, /w:n, will
override CrossBas' internal word dimension calculation. You may
need to use this if the source file is less densely commented
than CrossBas expects. Let me explain.
CrossBas uses a string array to hold all the words read in
from the input file. I use two default parameters to calculate
how many words to dimension the word array for. The two
parameters are Average Word Length and Packing Factor. The word
array will hold all of the non-comment, non-number words found in
a source file. To calculate the word array dimension, I first
read the source file size in bytes. Then I multiply it by the
Packing Factor. The Packing Factor is a number, less than 1,
that represents the ratio of non-comment, non-number word bytes
versus the total bytes in the file. Then I divide the result by
the Average Word Length. These two parameters are read in from
the defaults file, CROSSBAS.DEF, when CrossBas first starts.
Normally, this calculation is accurate enough. However, if
the actual packing factor of a particular source file is
considerably greater than the default or the actual average word
length is considerably smaller than the default, you may need to
use this switch.
To use the /w:n switch: approximate the number of words,
both Power-BASIC reserved words and non-reserved words: labels,
procedure names, function names, variable names, in the source
file. Do not include comment words, data words or numbers in the
total. This number will become the 'n' parameter of the word
array dimension switch.
6 Changing Defaults File 6 Changing Defaults File
You can change the defaults file with any ASCII editor.
When you run CrossBas the first time it will create CROSSBAS.DEF.
The next time it runs it will look for that file in the default
directory. If it finds it, CrossBas will read in two parameters:
Average Word Length, and Packing Factor.
These two parameters are both in the first line of the
defaults file, separated by a comma. The rest of the defaults
file contains a few lines of text explaining the default
parameters. You may do anything you like to this file except
modify the format of the first line. Change the values, if you
like but be sure the first number, the Average Word Length, is a
CROSSBAS.DOC CrossBas Manual page 6
number greater than one. Likewise, the second number, the
Packing Factor, must be a decimal number less than one. The two
numbers must be separated by a comma.
To determine the best default parameters, check the summary
report, at the end of your CrossBas listings. It shows the
default values used by CrossBas. It also shows the actual
parameters that CrossBas found after reading in the words from
the source file. After CrossBas-ing a few of your source files,
you can get an idea of the Average Word Lengths and Packing
Factors you use in your files.
7 The Summary Report 7 The Summary Report
A summary report appears at the end of the CrossBas cross-
reference file listing.
The top two-thirds of the report is the same as what
CrossBas prints to the screen as it processes the source file.
Your command line options are listed on the top two rows.
The next three lines show the read and parse procedure
statistics. This is where CrossBas reads in source file text
lines, parses them into words and saves all the words that are
not comments (REM or '), data words (DATA), operators (*, AND, =,
etc.), or numbers. The remaining words get stored in a word
array. Line number references for each of the saved words are
stored in a line number array. These three lines show the number
of lines in the source file, the number of words saved to the
word array and the start, end and elapsed processing times.
The next three lines show the compare procedure statistics.
Up to this point, the word array contains Power-BASIC reserved
words, label names, variable names, subprogram (SUB) names and
function (FN) names. Now CrossBas compares each word in the word
array with Power-BASIC reserved words. If the words compare we
do not save them. These three report lines show the number of
words compared, the number of non-Power-BASIC words in the source
file (if the same word appears 5 times then it is counted as 5
words at this point) and the start, end and elapsed processing
times.
The next two lines show the sort procedure statistics.
CrossBas sorts the remaining words in alphabetical order, without
regard for case. These two report lines show the number of words
sorted and the start, end and elapsed processing times.
The next two lines show the printing to file statistics.
CrossBas prints the sorted words to the output file in the manner
specified by the command line options. These two lines show the
number of unique words (if the same word appears 5 times it is
CROSSBAS.DOC CrossBas Manual page 7
counted as only one unique word) printed to the output file and
the start, end and elapsed processing times.
The next line shows the total CrossBas processing times:
start, end and elapsed, from the start of the read and parse
procedure to the end of the print to file procedure.
Next we have an analysis of the source file. Use this to
help you customize your CROSSBAS.DEF file.
The total number of bytes used by the word array is taken at
the time when it contained both non-reserved words (labels,
procedures, functions, variables) and Power-BASIC reserved words.
I use this figure (actually a projection of this figure using the
input file length and the default Packing Factor) to determine if
there will be enough string space to process the source file.
The default word array dimension is the number used to
dimension the word array. This is a calculated value unless you
included a command line override (/w:n). The command line
override is shown at the top of the report. If no override
option was included, the screen report will show "No o/r."
The actual word array dimension is the actual number of
words found in the source file.
The default Average Word Length is the number read in from
the CROSSBAS.DEF file. I use this, along with the default
Packing Factor, to calculate the default word array dimension.
The actual average word length is the actual average word
length of the non-reserved words in the source file. I guess
that explains itself.
The default Packing Factor is the number read in from the
CROSSBAS.DEF file (a number less than one). I use this, along
with the Average Word Length, to calculate the word array
dimension. I use this also to determine if there is enough
string space to process the source file.
Finally, we list the source and output file names and sizes.
CROSSBAS.DOC CrossBas Manual page 8
-+-+-+- Summary Report -+-+-+-
Options: Upper-case: No Screen: No Paginate: Yes
Left Margin: 6 ArrayDim: No o/r
Read: 448 lines from source file CROSSBAS.INC
Found: 919 non-comment words.
Times: Start: 15:06:59 End: 15:07:16 Elapsed: 00:00:17
Compared: 919 non-comment words from source file CROSSBAS.INC
Found: 432 non-reserved words (variables, labels, procedures)
Times: Start: 15:07:17 End: 15:07:27 Elapsed: 00:00:10
Sorted: 432 non-reserved words (variables, labels, procedures)
Times: Start: 15:07:28 End: 15:08:01 Elapsed: 00:00:33
Printed: 93 unique, non-reserved words to CROSSBAS.CBI
Times: Start: 15:08:02 End: 15:08:04 Elapsed: 00:00:02
Totals: Start: 15:06:59 End: 15:08:04 Elapsed: 00:01:05
Word Array Size: 4,852 bytes
Default Word Array Dim.: 1,124 wds Actual Word Array Dim.: 919 wds
Default Avg.Word Length: 6 byt Actual Avg.Word Length: 5 byt
Default Packing Factor: 45.00 % Actual Packing Factor: 32.35 %
Source, CROSSBAS.INC, File size: 14,998 bytes
Cross-Ref, CROSSBAS.CBI, File size: 6,984 bytes
Figure 1: Summary Report Example Figure 1
8 What CrossBas Does 8 What CrossBas Does
CrossBas' main program flow consists of a series of GOSUB-
type subroutines. The following is a description of each one in
the order in which they occur.
8.1 Initialize 8.1 Initialize
Initialize the screen type and color variables. Most of my
numbers will be integers so I define all number variables as
integers. Set up an error trap.
8.2 InitScreen 8.2 InitScreen
Print initializing message to the screen.
CROSSBAS.DOC CrossBas Manual page 9
8.3 ReadCmdLine 8.3 ReadCmdLine
Read in the DOS command line parameters. Set up the
paginate, screen print and upper-case flags, and the left margin
and word array dimension variables. Get input file path/name.
The second parameter that is not a valid switch is assumed to be
the output file path/name. If no input file path/name is found
then print the appropriate message to the screen and die.
8.4 OpenFiles 8.4 OpenFiles
Attempt to open the input and output files. If I fail while
opening the input file, I check to see if it has an extension.
If it doesn't, I append ".bas" and try again. If I fail again, I
print the appropriate message to the screen and die.
If the input I open the input file ok, I next attempt to
open the output file. If no file path/name is given I append
".cb" to the end of the input file (after stripping the
extension, if one exists). If I fail, I somewhere along the way,
I print the appropriate message to the screen and die. If I am
successful I close the output file until I'm ready to write to
it.
[Note: A previously existing file with the same name as the
output file is, at this point, replaced by a file of 0 bytes.]
8.5 CalcFileNames 8.5 CalcFileNames
Strip off the drive and directory specs from the input and
output file path/names. I use these stripped names for output
file page headers and screen and file report headers.
8.6 ReadDefaults 8.6 ReadDefaults
Read in the default values for Average Word Length and
Packing Factor from the defaults file, CROSSBAS.DEF. If this
file does not exist, I make one.
If you run CrossBas from other than its home directory, it
will not find its defaults file and will create a new one in the
default directory. This won't bother CrossBas but if you have
modified the CROSSBAS.DEF and are assuming your modified default
parameters will be used, you may be surprised. In that case, you
had better change directory to the CrossBas directory and run the
program from there. See the default section for more on
modifying the defaults file.
CROSSBAS.DOC CrossBas Manual page 10
8.7 CheckStringSpace 8.7 CheckStringSpace
[Note: I removed this subroutine from the Power-BASIC version of
CrossBas because of PB's increased string space capacity. To use
it with Turbo-BASIC, reinstall.]
Check to see that there is enough free string space for
storing the anticipated input file words. I read the input file
size and multiply it by the packing factor. This should give me
the approximate number of bytes of non-comment, non-number words
in the input file. Then I compare this "effective file size"
with the free string space. If not enough string space, I print
the appropriate message to the screen and die.
8.8 CalcWordArraySize 8.8 CalcWordArraySize
First check to see if there is a command line Word Array
Dimension override (/w:n). If so, use this value to dimension
the word array.
If not calculate the approximate number of words in the
input file. Find the effective input file size by multiplying
the input file size by the Packing Factor. Then divide the
effective file size by the Average Word Length. Packing Factor
and Average Word Length are values read in from the defaults file
in the ReadDefaults section.
8.9 PrintScreenTop 8.9 PrintScreenTop
Print the first few lines of the screen report. These show
the input file name, less any drive or directory specifications;
the condition of the three command line switch flags; and the
option values for left margin and word array dimension override.
8.10 ReadAndParseData 8.10 ReadAndParseData
Read in the input file line by line, and parse out the non-
comment, non-number words. Save these words, along with their
physical line numbers in separate arrays. Keep a running total
of the bytes in the word array. Print the current input file
line number and word to the status bar at the bottom of the
screen after every input file line.
Also, check the free string space after each line and, if it
gets below 300 bytes (249 column limit per line, plus a few extra
for good measure) then abort and print the appropriate message to
the screen and die.
8.11 PrintScreen1 8.11 PrintScreen1
Print the number of lines read from the input file, the
number of non-comment, non-number words read and saved in the
word array, and the start and end times for the operation to the
screen.
CROSSBAS.DOC CrossBas Manual page 11
8.12 Compare 8.12 Compare
Compare the word array words with Power-BASIC reserved
words. If the words are not Power-BASIC words, then save them
and their associated line-number array elements. Print the
current word number to the status bar at the bottom of the screen
after every non-Power-BASIC word is saved.
By checking the first letter of the word array word, I only
need to compare the word array word with Power-BASIC words
beginning with the same letter. Save the non-Power-BASIC words
back into the same array but at a lower location.
Lets say words 1,2 and 3 were Power-BASIC words. Word 4 is
a label. Therefore I save word array element number 4 back to
the same array but as element 1. I also save the associated
line-number array element, in this case, 4 to 1.
When I have compared all the words in the array, I blank out
the remaining, non-used elements in the word array to free up
string space.
8.13 PrintScreen2 8.13 PrintScreen2
Print the number of non-reserved words saved back to the
word array and the start and end times for the operation to the
screen.
8.14 Sort 8.14 Sort
Sort the remaining non-Power-BASIC words into alphabetical
order. I use a modified bubble sort and compare upper-case
values of the words. Print the current pass to the status bar at
the bottom of the screen.
If there are J words in the word array then I make J-1
passes through the array, comparing a word with the word after
it. If the words are in order, I check the next two words. If
the words are out of order I swap them and their associated
line-number array elements. If I make an entire pass without
making any swaps, then the sorting is complete.
8.15 PrintScreen3 8.15 PrintScreen3
Print the number of non-reserved words sorted and the start
and end times for the operation to the screen.
8.16 PrintList 8.16 PrintList
Print the word list to the output file. The words are
listed in the left column. The associated line numbers are
listed in the right eight columns. Print the current page and
word number to the status bar at the bottom of the screen.
CROSSBAS.DOC CrossBas Manual page 12
o If a left margin (/l:n) is selected, print the printer setup
string at the top of the file.
o If the upper-case switch (/u) is selected, convert the words
at print time.
o If the screen print switch (/s) is selected, print the words
and line-numbers to the screen as they print to file.
o If the paginate switch (/p) is selected, print a page header
at the top of each page and a form-feed at the bottom of
each page.
8.17 PrintReportBtm 8.17 PrintReportBtm
Print the summary report on the last page of the report. If
the paginate switch (/s) is selected then if there is not enough
room on the last page for the entire report, send out a form-feed
and put it on a new page. If the paginate switch is not selected
then send out a form-feed to start a new page.
The report contains read, compare, sort and print
information, similar to that displayed on the screen.
Additionally I print total procedure times; source and output
file sizes; word array words and bytes, both default and actual;
and Packing Factors and Average Word Lengths, default and actual.
8.18 PrintScreen4 8.18 PrintScreen4
Print the number of unique words printed to the output file
and the start and end times for the operation to the screen.
Erase the status bar and print a "CrossBas finished" message.
8.19 End Routines 8.19 End Routines
Finally, I close all open files, flush the keyboard buffer
and wait for the user to acknowledge he has read the report
screen by pressing a key. I included this step because some
versions of DOS erase the screen when they reload COMMAND.COM.
CROSSBAS.DOC CrossBas Manual page 13
Appendix AAppendix A
CrossBas FilesCrossBas Files
CrossBas uses the following files:
CRSBAS.ZIP CrossBas archive file that contains the
CrossBas files.
CROSSBAS.EXE CrossBas executable file.
CROSSBAS.DEF CrossBas defaults file. (CrossBas creates
this file the first time it runs.)
CROSSBAS.BAS CrossBas main source file.
CROSSBAS.INC CrossBas subprograms file.
CROSSBAS.DOC CrossBas document file (this file).
CROSSBAS.DOC CrossBas Manual page 14
CROSSBAS.DOC CrossBas Manual page 15
Appendix BAppendix B
Modification HistoryModification History
version 1.00P 12/ 1/90
Uploaded CrossBas version 1.00P to CompuServe PCVENB, Spectra
forum.
version 1.000 11/13/89
Uploaded CrossBas version. 1.00 to CompuServe BPROGA forum,
LIB 9.
KEYWORDS: CROSS-REFERENCE, TABLE, LIST, NON-RESERVED WORDS,
BASIC, CREF, XREF
Description: CrossBas will read in a Power-BASIC source file
and create an alphabetized cross-reference listing
of non-reserved words, i.e., variable, subprogram,
function and label names, along with the physical
line number(s) where they appear. The list is
printed to file. Handy for cleaning up unused
variable names, labels, etc.
CROSSBAS.DOC CrossBas Manual page 16
CROSSBAS.DOC CrossBas Manual page 17
Appendix CAppendix C
Power-BASIC Reserved WordsPower-BASIC Reserved Words
$COM BLOAD DEF FILEATTR()
$COM1 BSAVE DEFBCD FILES
$COM2 DEFDBL FIX()
$COMPILE CALL DEFEXT FIXDIGITS
$CPU CASE DEFFIX FLEXCHR$
$DEBUG CBCD() DEFFLX FN
$DYNAMIC CDBL() DEFINT FOR
$ELSE CEIL() DEFLNG FRE()
$ENDIF CTEXT() DEFQUD FREEFILE
$ERROR CFIX() DEFSNG FROM
$EVENT CHAIN DEFSTR FUNCTION
$FLOAT CHDIR DELAY
$IF CHR$() DELETE GET
$INCLUDE CINT() DESCEND GET()
$INLINE CIRCLE() DIM GET$
$LIB CLEAR DO GOSUB
$LINK CLNG() DRAW GOTO
$LIST CLOSE DYNAMIC
$OPTION CLS HEX$()
$SEGMENT COLLATE ELSE
$SOUND COLOR ELSEIF IF
$STACK COM() END IMP
$STATIC COMMAND$ ENDMEM IN
$STRING COMMON ENVIRON INCR
COS() ENVIRON$() INKEY$
ABS() CQUD() EOF() INP()
ABSOLUTE CSNG() EQV INPUT
AND CSRLIN ERADR INPUT #
ANY CVB() ERASE INPUT$()
APPEND CVD() ERDEV INSERT
ARRAY CVE() ERDEV$ INSTAT
AS CVF() ERL INSTR()
ASC() CVI() ERR INT()
ASCEND CVL() ERROR INTERRUPT
ASCII() CVMD() EXECUTE IOCTL
DATA CVMS() EXIT IOCTL$
AT CVQ() EXP()
ATN() CVS() EXP10() KEY
EXP2() KEY()
BASE DATA EXTERNAL KILL
BEEP DATE$ EXTRACT$()
BIN$() DECLARE LBOUND()
BINARY DECR FIELD LCASE$()
CROSSBAS.DOC CrossBas Manual page 18
LEFT$() OCT$() RESET TALLY()
LEN() OFF RESTORE TAN()
LET ON RESUME THEN
LINE OPEN RETURN TIME$
LINE() OPTION RIGHT$() TIMER
LIST OR RMDIR TIMER()
LOC() OUT RND TO
LOCAL OUTPUT RND() TROFF
LOCATE ROUND() TRON
LOF() PAINT() RSET
LOG() PALETTE RTRIM$() UBOUND()
LOG10() PEEK() RUN UCASE
LOG2() PEEK$() UCASE$()
LOOP PEEKI() SAVE UNTIL
LPOS() PEEKL() SCAN USING
LPRINT PEN SCREEN USING$()
LPRINT # PEN() SCREEN() USR
LSET PLAY SEEK USR0
LTRIM$() PLAY() SEG USR1
PMAP() SELECT USR2
MAP POINT() SERVICE USR3
MAX() POKE SGN() USR4
MAX$() POKE$ SHARED USR5
MAX%() POKEI SHELL USR6
MEMSET POKEL SIN() USR7
MID$() POS SORT USR8
MIN() POS() SOUND USR9
MIN$() PRESET SPACE$()
MIN%() PRINT SPC() VAL()
MKDIR PRINT # SQR() VARPTR()
MKB$() PSET() STATIC VARPTR$()
MKD$() PUBLIC STEP VARSEG()
MKE$() PUT STICK() VERIFY()
MKF$() PUT() STOP VIEW
MKI$() PUT$ STR$() VIEW()
MKL$() STRIG
MKMD$() RANDOM STRIG() WAIT
MKMS$() RANDOMIZE STRING$() WEND
MKQ$() READ STRPTR() WHILE
MKS$() REDIM STRSEG() WIDTH
MOD REG SUB WINDOW
MTIMER REG() SWAP WINDOW()
REM SYSTEM WITH
NAME REMOVE$() WRITE
NEXT REPEAT$() TAB() WRITE #
NOT REPLACE TAGARRAY
XOR