BAS(I) 5/15/74 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:
expression
The expression is executed for its side effects (as-
signment or function call) or for printing as described
above.
comment ...
This statement is ignored. It is used to interject
commentary in a program.
done
Return to system level.
draw expression expression expression
A line is drawn on the Tektronix 611 display `/dev/vt0'
from the current display position to the XY co-ordi-
nates specified by the first two expressions. The
scale is zero to one in both X and Y directions. If
the third expression is zero, the line is invisible.
The current display position is set to the end point.
display list
The list of expressions and strings is concatenated and
displayed (i.e. printed) on the 611 starting at the
current display position. The current display position
is not changed.
dump
The name and current value of every variable is print-
ed.
edit
The UNIX editor, ed, is invoked with the file argument.
After the editor exits, this file is recompiled.
- 1 -
BAS(I) 5/15/74 BAS(I)
erase
The 611 screen is erased.
for name = expression expression statement
for name = expression expression
...
next
The for statement repetitively executes a statement
(first form) or a group of statements (second form) un-
der 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.
goto expression
The expression is evaluated, truncated to an integer
and execution goes to the corresponding integer num-
bered statment. If executed from immediate mode, the
internal statements are compiled first.
if expression statement
if expression
...
[ else
... ]
fi
The statement (first form) or group of statements (sec-
ond form) is executed if the expression evaluates to
non-zero. In the second form, an optional else allows
for a group of statements to be executed when the first
group is not.
list [expression [expression]]
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 list
The list of expressions and strings are concatenated
and printed. (A string is delimited by " characters.)
prompt list
Prompt is the same as print except that no newline
character is printed.
return [expression]
The expression is evaluated and the result is passed
back as the value of a function call. If no expression
is given, zero is returned.
run
The internal statements are compiled. The symbol table
is re-initialized. The random number generator is re-
- 2 -
BAS(I) 5/15/74 BAS(I)
set. Control is passed to the lowest numbered internal
statement.
save [expression [expression]]
Save is like list except that the output is written on
the file argument. If no argument is given on the com-
mand, b.out is used.
Expressions have the following syntax:
name
A name is used to specify a variable. Names are com-
posed of a letter 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 num-
ber is written in Fortran style, and contains digits,
an optional decimal point, and possibly a scale factor
consisting of an e followed by a possibly signed expo-
nent.
( expression )
Parentheses are used to alter normal order of evalua-
tion.
_ expression
The result is the negation of the expression.
expression operator expression
Common functions of two arguments are abbreviated by
the two arguments separated by an operator denoting the
function. A complete list of operators is given below.
expression ( [expression [ , expression] ... ] )
Functions of an arbitrary number of arguments can be
called by an expression followed by the arguments in
parentheses separated by commas. The expression evalu-
ates to the line number of the entry of the function in
the internally stored statements. This causes the in-
ternal statements to be compiled. If the expression
evaluates negative, a builtin function is called. The
list of builtin functions appears below.
name [ expression [ , expression ] ... ]
Each expression is truncated to an integer and used as
a specifier for the name. The result is syntactically
identical to a name. a[1,2] is the same as a[1][2].
The truncated expressions are restricted to values be-
tween 0 and 32767.
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
- 3 -
BAS(I) 5/15/74 BAS(I)
operand. Assignment binds right to left, all other op-
erators bind left to right.
& |
& (logical and) has result zero if either of its argu-
ments are zero. It has result one if both its argu-
ments 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 argu-
ments are in the specified relation. They return zero
otherwise. Relational operators at the same level ex-
tend as follows: a>b>c is the same as a>b&b>c.
+ -
Add and subtract.
* /
Multiply and divide.
^
Exponentiation.
The following is a list of builtin functions:
arg(i)
is the value of the i -th actual parameter on the cur-
rent level of function call.
exp(x)
is the exponential function of x.
log(x)
is the natural logarithm of x.
sqr(x)
is the square root of x.
sin(x)
is the sine of x (radians).
cos(x)
is the cosine of x (radians).
atn(x)
is the arctangent of x. Its value is between -/2 and
/2.
rnd( )
is a uniformly distributed random number between zero
and one.
- 4 -
BAS(I) 5/15/74 BAS(I)
expr( )
is the only form of program input. A line is read from
the input and evaluated as an expression. The resul-
tant value is returned.
abs(x)
is the absolute value of x.
int(x)
returns x truncated (towards 0) to an integer.
FILES
/tmp/btm? temporary
b.out save file
DIAGNOSTICS
Syntax errors cause the incorrect line to be typed with an
underscore where the parse failed. All other diagnostics
are self explanatory.
BUGS
Has been known to give core images.
- 5 -