V1/man/man1/bas.1
11/3/71 BAS (I)
NAME bas ---- basic
SYNOPSIS bas [file]
DESCRIPTION bas is a dialect of basic. If a file argument is provided,
the file is used for input before the console is read.
bas accepts lines of the form:
statement
integer statement
Integer numbered statements (known as internal statements)
are stored for later execution. They are stored in sorted
ascending order. Non-- numbered statements are immediately
executed. The result of an immediate expression statement
(that does not have `=` as its highest operator) is printed.
Statements have the following syntax: (expr is short for
expression)
expr
The expression is executed for its side effects
(assignment or function call) or for printing as
described above.
done
Return to system level.
draw expr expr expr
draw is used to draw on a 611--type storage scope
through a TSP--i plotter interface. The coordinates of
the scope face are zero to one in both the x and y
directions. (Zero,zero being the lower left corner.)
The expressions are evaluated and design at-- ed X, Y,
and Z. A line is drawn from the previous X, Y to the
new X, Y * If Z is non--zero, the line is visible,
otherwise the line is invisible.
for name = expr expr statement
for name = expr expr
.. .
next
The for statement repetatively executes a statement
(first form) or a group of statements (second form)
under control of a named variable. The variable takes
on the value of the first expression, then is
incremented by one on each loop, not to exceed the
value of the second expression.
11/3/71 BAS (I)
goto expr
The expression is evaluated, truncated to an integer
and execution goes to the corresponding integer
numbered statement. If executed from immediate mode,
the internal statements are compiled first.
if expr statement
The statement is executed if the expression
evaluates to non--zero.
list [ expr [expr]]
list is used to print out the stored internal
statements. If no arguments are given, all internal
statements are printed. If one argument is given, only
that internal statement is listed. If two arguments
are given, all internal statements inclusively between
the arguments are printed.
print expr
The expression is evaluated and printed.
return expr
The expression is evaluated and the result is passed
back as the value of a function call.
run
The internal statements are compiled. The symbol table
is re--initialized. The random number generator is re--
set. Control is passed to the lowest numbered internal
statement.
Expressions have the following syntax:
name
A name is used to specify a variable. Names are
composed of a letter (`a' -- `z') followed by letters
and digits. The first four characters of a name are
significant.
number
A number is used to represent a constant value. A
number is composed of digits, at most one decimal
point ('.') and possibly a scale factor of the form e
digits or e-- digits.
( expr )
Parentheses are used to alter normal order
of evaluation.
expr op expr
Common functions of two arguments are
11/3/71 BAS (I)
abbreviated by the two arguments separated by an
operator denoting the function. A complete list of
operators is given below.
expr ( [expr [ , expr ]]
Functions of an arbitrary number of arguments can be
called by an expression followed by the arguments in
parentheses separated by commas. The expression
evaluates to the line number of the entry of the
function in the internally stored statements. This
causes the internal statements to be compiled. If the
expression evaluates negative, an builtin function is
called. The list of builtin functions appears below.
name [ expr [ , expr ...] ]
Arrays are not yet implemented.
The following is the list of operators:
= is the assignment operator. The left operand must be
a name or an array element. The result is the right
operand. Assignment binds right to left, all other
operators bind left to right.
& |
& (logical and) has result zero if either of its
arguments are zero. It has result one if both its
arguments are non--zero. | (logical or) has result
zero if both of its arguments are zero. It has result
one if -either of its arguments are non--zero.
< <= > >= == <>
The relational operators (< less than, <= less than or
equal, > greater than, >= greater than or equal, ==
equal to, <> not equal to) return one if their
arguments are in the specified relation. They return
zero otherwise. Relational operators at the same level
extend as follows: a>b>c is the same as a>b&b>c.
+ -
Add and subtract.
* /
Multiply and divide.
^
Exponeniation.
11/3/71 BAS (I)
-The following is a list of builtin functions:
arg
Arg(i) is the value of the ith actual parameter on the
current level of function call.
exp
Exp(x) is the exponential function of x.
log
Log(x) is the logarithm base of x.
sin
Sin(x) is the sine of x (radians).
co s
Cos(x) is the cosine of x (radians).
atn
Atn(x) is the arctangent of x. (Not implemented.)
md
Rnd() is a uniformly distributed random
number between zero and one.
expr
Expr() is the only form of program input. A line is
read from the input and evaluated as an expression.
The resultant value is returned.
int
Int(x) returns x truncated to an integer.
FILES /tmp/btma, btmb *.. temporary
SEE ALSO
DIAGNOSTICS Syntax errors cause the incorrect line to be typed with an
underscore where the parse failed. All other diagnostics are
self explanatory.
BUGS Arrays [] are not yet implemented. In general, program
sizes, recursion, etc are not checked, and cause trouble.
OWNER ken