summaryrefslogtreecommitdiff
path: root/static/v10/man1/bite.1
blob: 41638a816b88716c1f92fab3621c2d219aacc8e1 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
.TH BITE 1 local
.SH NAME
bite \- Basic Interpreter for Testing & Engineering
.SH SYNOPSIS
.B bite
[ - ] [prog1 prog2 prog3 .....]
.SH DESCRIPTION
.I Bite
is a BASIC language interpreter.
Its virtues are in that it is written in the Bell System 'C'
compiler language which lends itself to
.I portability
and
.I readability.
One of the most important aspects is that the interpreter is
.I interfaced
with the
.I system shell via the '!' command.
Shell commands can be executed inmmediately or actually typed into
the BASIC program itself!
"bite" may also be invoked by a shell script and when given an argument
(a program name) will automatically cause the  BASIC program to be
executed. In that case the BASIC program should be terminated with
a "bye" statement.
The inclusion of the '-' option, along with a BASIC program name will
cause "bite" to start and then "load" the BASIC program
.I without
running it.
.PP
.I Bite
is designed so that BASIC language programs
of the original Dartmouth syntax will be loadable
with little or no incompatibility and extra features that do not
follow common standards will be
.I additions
to, rather than
.I exceptions
to the syntax rules of BASIC.

The commands and functions in this interpreter
are implemented by entries into
tables and the procedure for implementing new
commands will be documented as another virtue of the
configuration of this interpreter.
.PP
.I Bite
was implemented
with
.I instrument control
and
.I data collection
in mind
for the purpose of controlling an
.I Automated Test System (ATS).
These functions will be available as an extended instruction set.
Another version of "bite" is being configured for this purpose
which will reside (initially) on an PDP-11/03 (subsequently on
a PDP-11/23).
.PP
A standard string capability is implemented on the BASIC interpreter
BITE.
.TP 4
.I Conventions
.TP 8
.I THIS DOCUMENT
All things enclosed in [] are optional.
.TP 8
.I EDITING
Editing is accomplished as it is in any BASIC language intepreter
in that line-numbers are entered by typing a line-number followed
by the statement and removed or deleted by merely typing the line-number.
Listing is accomplished with the "list" command (explained under "COMMANDS").
In addition to the above, it is possible to list single lines by typing
the return-key in which case the program is listed one line-at-a-time,
starting at the first. When the last one is reached, the sequence starts
at the first line again.
At any time it is also possible to type the '-' symbol to "backup" a line-
at-a-time.
Other editing facilities are "s", "delete", and "reseq" also explained
under "COMMANDS".
.TP 8
.I EXPR
Any algebraic expression which could be a constant, variable, math
function or a combination of same, seperated by arithmetic operators
as in: a+b*3.14*(4.4+c2*sin(b+s))+a(2,2)
See "variables" and "math functions" below.
.TP 8
.I OPERATORS
+,-,*,/ or ^ for addition, subtraction, multiplication, division or
exponentiation in order of lowest to highest precidence. + and - have
the same precidence and * and / have the same precidence.
.TP
.I RELATIONALS
<, >, =, <=, >=, <> for less than, greater than, equality, less or equal,
greater than or equal and not equal.
.TP 8
.I SOURCE PATH
When reference is made to a "bite" source file (i.e. the "old" and "load"
command), at least two directories are searched, the first being the current
directory and then /usr/lib/bites which is a "pool" where shared programs
should be stored. The /usr/lib/bites directory is analogous to the
/usr/bin directory in UNIX.
The user may specify extra paths to be searched by defining them in
BITEPATH and then exporting BITEPATH like:
.br
BITEPATH=:$HOME/BASIC:/usr/local/lib/:
.br
which adds the two pathnames between the ':' delimiters to the
other paths. In this way, one may have private BITE programs
and execute them  from any directory.
.TP 8
.I SOURCE PROGRAM NAME
The source program name is twelve or less characters suffixed by a .b .
.TP 8
.I STATEMENT
A basic statement consists of a line number (integer value between 1 and
32767) followed by a command, space and operand which follows the
syntax governed by the command as in: 100 print "hello world"
A statement can be typed without a line number in which case it will
execute immediately. This is true for all commands, but doesn't make
sense for all commands such as "for". Immediate execution is handy
for diagnostic purposes such as: print a, to find out what the value
of a.
.TP 8
.I VARIABLES
All variable names are either a lower case alpha character (a-z)
or a lower-case alpha character followed by an integer (0-9).
Array have the same name convention as regular variables and take
the form varname(D1,D2,D3....D10) where D1-D10 are the dimension
attributes of the array and can take the form of any legal expression
(including another array) as in a(b(2,2),x).
.TP 8
.I STRING VARIABLE
A string variable is any single lower case alpha character (a-z)
followed by a '$' or any single alpha character followed by a single digit
(1-9) then followed by a '$' like a$ or z9$.
.TP 8
.I STRING ARRAY VARIABLE
A string array variable has the same naming convention as a regular string
variable and contains one or two "subscripts" enclosed in parenthesis
as in:
.br
	x1$(x,y)

Like other array variables in BASIC string arrays must be declared
in a dimension statement prior to their use: e.g. dim a$(20) or
d$(100,3).
.TP 8
.I STRING EXPRESSION
A string expression is any combination of string variables and
literals added together by a '+' operator which indicates concatenation.
An example of an assignment statement for string variables is:

	b$="Joan"+a1$+c2$+"John"+x$(20)
.SH COMMANDS
.TP 8
.I bye or q
Exit
the interpreter.
.TP 8
.I com[mon]
Preserve
variables for subsequent "run". Issue of the run command
otherwise de-allocates all variables.
.TP 8
.I con \fR[line#]
Continue normal execution from single step mode. See "sing" command.
.TP 8
.I data \fR(expr),(expr),(expr),..........
The data statement is a string of defined constants or expressions referred
to by the "read" statement. Unlike most BASIC interpreters, the data is
stored only in the form of text strings which allows the read statement to
evaluate expressions as well as constants.
.TP 8
.I del[ete] \fRlownum [, highnum]
Delete line-number specified if only lownum given. Delete all lines
between lownum and highnum if both are specified.
See the "undo" command.
.TP 8
.I dim \fRvariable(expr1,expr2,....,expr10)
Allocate space and define the dimensional characteristics of
subscripted variable.
.TP 8
.I end
Define logical end of program. Cause termination or current "run".
.TP 8
.I expunge
Force all variable space, including subscripted variables to be freed.
Or de-allocate used varriable space.
.TP 8
.I f
Identify current file. Typing "f" causes the currently referenced
file (if any) to be displayed.
.TP 8
.I for - next
Cause code enclosed by this combination to be executed under the
conditions specified in the
.I for
statement as in: for variable = expr1 to expr2 [step expr].
.TP 8
.I gosub \fRline#
Goto subroutine, resume from following statement after "return" encountered.
.TP 8
.I goto \fRline#
Force execution to continue starting at the line# specified.
.TP 8
.I if \fR(expr1) relational (expr2) \fIthen \fRline#
Redirect program flow to line# if expr1 is related to expr2 by the
specified relational.
String expressions are also compared by the "if" statement as in:
.br
if a$ < "jim" goto 100
.br
The results of the comparison are based on alphabetical order
of the two objects being compared.
The "then" in the "if" statement can be optionally replaced with "goto"
"go to" or "gosub". The "if" statement can also take the form:
.br
.I if \fR(expr) relatioanl (expr) \fIthen \fRvar = (expr)
.TP 8
.I if \fRmore _fd \fI then \fRline#
Direct program flow to line# if there are more lines to be read
from the file associated with fd where fd is the file designator
between 1 and 4 inclusive. This type if statement is used to detect
EOF (End Of File) condition.
.br
Example: 100 if more _2 then 200
.br
Note that "gosub" can be used in place of "then" in which case
the subroutine would be one for reading another line.
.TP 8
.I input \fR[_fildes]var1[,var2,var3,....]
Prompt for input and assign inputed value to variable.
If 's' is typed program is halted.
String variables may be specified in the "input" statement. The
variables can be mixed like:
.br
input a$,a,b$(2,2)
.br
which will interpret the first input as a string, require the second
input to be numerical and interpret the third as a string input.
.TP 8
.I [let] \fRvariable = expr
Assign the value of expr to variable.
The let is optional.
The let or assignment statement also allows the assignment of
string expressions to string variables like:
.br
b$="Joan"+a1$+c2$+"John"+x$(20)
.TP 8
.I l[ist] \fR[lownum [, highnum]]
List the text in working storage. If lownum is given then only that number
is listed, if lownum and highnum are specified, then a listing is
displayed between the given statement numbers.
.TP 8
.I load \fR[prog-name]
Same as the "old" command, except working storage is not cleared.
.TP 8
.I ls \foptions
List directory. Same as UNIX "ls" command.
.TP 8
.I mov \fRstartnum,endnum,newnum [,increm]
The mov command causes the lines beginning with
.I startnum
and ending with
.I endnum
to be moved (ie. resequenced) to the line beginning with
.I newnum
and incremented by
.I increm \fR.
The default value for
.I increm
is 10.
All references to the moved lines are updated. The user is responsible to
see that line numbers associated with moved lines do not conflict with
existing lines which will cause loss of program text.
.I mov
is similar to
.I reseq
(see below) except that only the specified lines are resequenced.
.TP 8
.I n
List the next 23 lines. Useful for paging through a listing on a CRT.
.TP 8
.I new
Clear program working storage for new program to be typed.
.TP 8
.I old \fR[prog-name]
Clear user space and load program. If old is typed with no argument
it will prompt the user for a program name if not defined or load
the last defined program name.
.TP 8
.I on \fR(expr) \fIgoto \fRline#,line#,.......
Is a selective goto with multiple line number targets. The target
branched to depends on the value of expr which is truncated.
Control is passed to the first line# specified after goto if the
value of the expression is 1. Control passes to the second line#
if the value is 2, the third if 3 and so on.
.TP 8
.I on \fR(expr) \fIgosub \fRline#,line#,.......
Same action as on-goto, except action taken is that of "gosub".
.TP 8
.I pause
Causes execution to be suspended until a "newline" or "return" is typed.
This is useful for programs which need to be continuously in "run", but
need to allow a time for user action i.e. unit insertion.
.TP 8
.I pr[int] \fR[_fildes](expr's,quoted strings or tab operators)
The print statment is a limited format display statement in which
expressions are evaluated and displayed along with quoted literals.
The tab(expr) operator causes the print head to move to the absolute
column position computed by expr provided the current head position
is less. The specifiers must be seperated by onee or more commas
or semicolons.
String expressions are also expanded by the print statement.
.TP 8
.I printf \fR[_fildes]"format string"[,expr1,expr2,.....,expr10]
This is an interpretive implementation of the UNIX 'C' library
routine, printf. It is, however restricted to only the floating
point format control specifiers 'f' and 'g'. Use of any of the
other specifiers such as 'o', 'd' or 's' will give erroneous results.
Print controls such as \\b (backspace), \\n (newline), \\r (return)
or \\t can also be used. The printf format was chosen in lieu
of the usual "print using" command because it was felt that
printf is not only a 'C' language standard but easier to use
than "print using".
.br
Usage Example:
.br
100 printf "Variable a=%2.2f\\tVariable b=%g.\\n",a,b
.TP 8
.I randomize
Causes "rnd" statement to start at an "unpredictable" value.
.TP 8
.I read \fRvar1,var2,var3,..............
The "read" statement causes data to be assigned to each variable in the
list from the constants or expressions contained in "data" statements. The
reading starts where-ever the data pointer is currently at. The data pointer
points to the last data field accessed, if a read was done, the first
data field in the first data statment if the "restore" statment is issued
or the program is re-run.
The "read" statement will also assign values to string variables or
expressions in the "data" statement.
.TP 8
.I rem
The remark statement causes no operation in 
.I bite
but may be followed by any string of characters for the purpose of commenting
a program. Unlike compiler languages, remarks do take up program buffer space,
however, they are of paramount importance in making a program readable by
human beings and are therefore strongly recommended.
.TP 8
.I reseq \fR[startnum [, increm]]
The resequence command causes the statement numbers and all references
to them (such as if's goto's, gosub's, etc) to be resequenced starting
at
.I startnum
and incremented by
.I increm.
If startnum and/or increm are omitted, the default values are 10 and
10 respectively.
.TP 8
.I restore
Restores the data pointer to the first field of the first "data" statment.
.TP 8
.I return
Return from subroutine called by "gosub" statement.
.TP 8
.I rm \ffilename(s)
Remove file(s). Same as UNIX "rm" command.
.TP 8
.I run \fR[prog-name]
Run basic program specified. If no argument is given, "run" attempts to
execute whatever is currently in working storage.
.TP 8
.I s \fRline#/old-string/new-string[/]
Substitute in line line# the new-string for the old-string. The last delimiter
is optional, unless new-string is null in which case it is desired that
old-string merely be removed.
See the "undo" command.
.TP 8
.I sing \fR[line#]
Enter the single step mode starting at the line# specified or at
the first line of the program if no line# is specified.
In single step mode an instruction is executed and then the prompt '^'
is displayed.
At this time the user may enter
any command (i.e. print) or hit the "return" key to execute the next
instruction.
See the "con" instruction.
.TP 8
.I size
Causes amount of storage used and remaining or free space in 
decimal number of bytes.
.TP 8
.I stop
Stop execution of program.
.TP 8
.I save \fR[prog-name]
Save the contents of working storage in file-name specified by progname.
If no progname is given last referenced file-name is used. If no file
name was referenced, the user is prompted for a name.
.TP 8
.I undo
Undo last "s" command or
.I single line deletion.
.TP 8
.I ! (any shell command string)
Unix shell command invocation allows system commands to be
executed from the interpreter.
Not available in restricted version.
.SH FILE COMMANDS
The file commands: append, openi, and openo are followed by one or more
file-names seperated by commas, each file-name being no more that
14 characters long. Files are assigned to designators (integer values
between 1 and 8 inclusive) in the order that they are open.
All commands
such as "print" and "input" which refer to a file use the designator
number preceded by a '_' character to refer to that file
as in: 100 print _1"hello world" or 100 input _3a(x,y) .
.TP 8
.I append \fRfile1[,file2,.....,file8]
If file exists open for output cause new data to be appended. If file
does not exist, the named file is created.
.TP 8
.I openi \fRfile1[,file2,.....,file8]
Open file for input. File must exist.
.TP 8
.I openo \fRfile1[,file2,.....,file8]
Create named file(s) and open for output. If named files exist, the old
data is destroyed.
.TP 8
.I seek \fR_fildes, offset, mode
Seek to a line whose position in the file is offset.  If mode = 0 the
offset is from the beginning, if mode = 1 then the offset is relative
to the current file pointer.
.br
Usage Example: 101 seek _1, 33, 0
.br
would cause the file pointer to the 33rd line.
.TP 8
.I rewind \fR_fildes
Rewind the file specified by fildes to the beginning (first line).
This is effectively the same as seek _fildes, 0, 0.
.TP 8
.I close \fR_fildes
Close file associated with file designator.
.TP 8
.I closeall
Close all files input and output.
.SH MATH FUNCTIONS
.TP 8
.I abs\fR(expr)
Absolute value.
.TP 8
.I atn\fR(expr)
Arc-tangent.
.TP 8
.I cos\fR(expr)
Cosine.
.TP 8
.I exp\fR(expr)
Natural exponential.
.TP 8
.I fact\fR(expr)
Factorial. (Truncates fractions i.e. fact(3.22) interpreted as fact(3))
.TP 8
.I int\fR(expr)
Integerize or truncate fractional part of result of expr.
.TP 8
.I log\fR(expr)
Natural log.
.TP 8
.I rnd\fR(expr)
Return random number between 0 and evaluated expr.
.TP 8
.I sin\fR(expr)
Sine.
.TP 8
.I sqr\fR(expr)
Square root.
.SH STRING FUNCTIONS
.TP 8
.I asc(string)
Returns ASCII value of first character in string.
.TP 8
.I chr$(expr)
Return the character corresponding to the value of expr where expr
is a numerical expression. If the value of the expression exceeds
octal 177 the least significant 7 bits are used.
.TP 8
.I ext$(string,pos,len)
The ext$ "extract" string function returns a substring of the
string expression string starting at position "pos" having length "len".
If attempt is made to extract a string beyond the end of "string" the result
will be truncated and an error message will be displayed.
.TP
.I len(string)
Return the length of the string expression "string".
.TP
.I left$(string,n)
Return the leftmost n characters of the string. If the string length is
less than n, then the string itself is returned.
.TP
.I loc$(string)
Converts all upper case alphabetic characters in the string to lower case.
.br
EX: a$=loc$("ABCdef123#$^&*")
.br
returns abcdef123#$^&* to a$
.TP
.I mid$(string,pos,len)
Does exactly same as ext$. Included because it is part of another
popular dialect of BASIC.
.TP
.I right$(string,n)
Return rightmost n characters of string. If string length is less than
n the string itself is returned.
.TP
.I str$(expr)
Returns value of expr (numerical expression) as an ASCII string.
.TP
.I string$(n,string)
Returns n occurrences of the first character in string.
.TP
.I upc$(string)
Converts all lower case alphabetic characters in the string to upper case.
.TP
.I val(string)
Return numerical value represented by ASCII number.
.br
Ex: a=val("100.2")
.br
assigns the value 100.2 to variable a. This function is good for
converting ASCII tabulations of numbers. ext$ or mid$ can be used
to select the column.
.SH ATS INSTRUMENT COMMANDS
.TP 8
.I buspr \fR'busadr(text and expressions)
Buspr is merely an extension of the print statement which allows
the print string which would otherwise be displayed on the tty
to be sent via the IBV-11 bus to the bus address specified by "busadr".
The ' preceding busadr distinguishes the following character from anything
other than a single character to be interpreted as an address.
.br
Usage Example:	100 buspr '6"F2R";r
.TP 8
.I cmd "string"
Send character string over IBV-11 command lines.
.TP 8
.I delay num
Causes a delay of num 60ths of a second where num is an integer.
.br
Usage Example:	100 delay 120		(delay 2 minutes or 120/60ths sec)
.TP 8
.I dvminit
Initialize Digital Voltmeter.
.TP 8
.I dvms \fRfunction, range
Digital voltmeter set command, where: function is "ac", "dc" or "ohms"
and range is .1, 1, 10, 100, 1k, 10k or "aut". i.e.
.br
Usage Example:	100 dvms dc,1k
.TP 8
.I hprintf \fR"format text"[,expr1,expr2,...,expr10]
Formatted print to strip printer. Syntax rules are the same as
. I printf.
Strip printer is 20 columns wide, anything past the 20th column is
truncated.
.TP 8
.I lodset \fRlodnum,mode,value
Set load. Where lodnum an integer describing which load referred to,
mode is the manner in which the load is set and value is an expression
describing the current or resistance the load was set to depending on the
mode. Mode is a single character 'r', 'R', 'i' or 'I' where 'r' is resistance
mode (value in ohms) and 'i' is current mode (value in amperes). Small
letter causes a hunt for the value and capital causes set on first try.
.TP 8
.I relay \fRfunction, relnum1[, relnum2, relnum3,... ]
Set multiprogrammer relays. Function is m (make), b (break) or c (clear).
Function is followed by all relay numbers to be acted upon which may
be expressions or variables. The clear function when not followed by
anything, simply means open all relays. When followed by relay numbers,
clear means all relays are open EXCEPT the ones specified.
.br
Usage Example:	100 relay m,10,20,21,a,b,rnd(10)
.TP 8
.I ps \fRpsno, voltage, current limit, overvoltage
Set power supply parameters. Psno is an integer representing the
power supply number describing which power supply is to be used,
voltage, current limit and overvoltage are self explanatory. Each
one of the parameters may be a legal algebraic expression so that
they may be controlled by the program.
.br
Usage Example:	100 dvms 1,10,1,11 or 100 dvms n,v1,i1,v1+1
.SH INSTRUMENT FUNCTIONS
.TP 8
.I btn\fR(expr)
Button function returns non-zero if control button number (expr) is
depressed.
.TP 8
.I dvmr()
Return digital voltmeter reading.
.TP 8
.I error()
Return 1 if last instrument command caused instrument error, otherwise
return 0.

.SH AUTHORS
Richard B. Drake & James P. Hawkins
.SH FILES
source.b
.br
/usr/lib/bites/<source>
.br
.SH "SEE ALSO"
sh(1),bstring(1)
BASIC Programming and Applications, C. Joseph Sass 1972
.br
.br
BITE Users Guide, J.P.Hawkins, Bell Labs, TM-79-2425-4
.SH DIAGNOSTICS
Diagnostic error messages are issued by the interpreter
which indicate syntax errors , system failure, illegal commands or expressions,etc.
The
.I LSI-11/03
Version of
.I bite
does not issue explicit error messages, but displays an error number
in which the meanings are listed below. This is done to regain approx.
2Kb memory in an already tight LSI-11/03 memory.
.nf
.I	Standard Error Messages

	NUMBER	MESSAGE TEXT
	--------------------
	0	REFERS TO A NON EXISTING LINE NUMBER
	1	UNRECOGNIZABLE OPERATION
	2	CANNOT OPEN FILE
	3	ILLEGAL VARIABLE NAME
	4	BAD FILENAME
	5	WORKING STORAGE AREA EMPTY
	6	RUNS NESTED TOO DEEPLY
	7	UNASSIGNED VARIABLE
	8	EXPRESSION SYNTAX
	9	BAD KEYWORD IN STATEMENT
	10	IMPROPER OR NO RELATIONAL OPERATOR
	11	UNBALANCED QUOTES
	12	FILE EDITING NOT PERMITTED IN SINGLE STEP MODE
	13	MISSING OR ILLEGAL DELIMITER
	14	GOSUB WITH NO RETURN
	15	IS FATAL
	16	UNBALANCED PARENTHESIS
	17	UNKNOWN MATH FUNCTION
	18	NEXT WITH NO OR WRONG FOR IN PROGRESS
	19	CANNOT PROCESS IMAGINARY NUMBER
	20	WHAT ?
	21	BAD DIMENSION SYNTAX
	22	TOO MANY DIMENSIONS
	23	REDUNDANT DIM STATEMENT
	24	NOT ENOUGH WORKING STORAGE SPACE
	25	VARIABLE NOT DIMENSIONED
	26	WRONG NUM OF DIMS
	27	ONE OR MORE DIMS LARGER THAN ASSIGNED
	28	NEG. OR ZERO DIMENSION ILLEGAL
	29	DIVIDE BY ZERO
	30	BAD TAB SPEC. IN PRINT
	31	SYS CALL FAILED
	32	BAD FILE DECLARE SYNTAX
	33	OUT OF DATA
	34	FILE-NAME TOO LONG
	35	FILE DES. USED UP
	36	FILE NOT OPEN FOR OUTPUT
	37	FILE NOT OPEN FOR INPUT
	38	EXPRESSION YIELDS AN IMPOSSIBLE VALUE
	39	PRINTF: ARG COUNT MISMATCH
	40	PRINTF: MORE THAN 10 ARGS
	41	LINE TOO LONG FOR STRIP PRINTER
	42	MOV REQUIRES 3 LINE #'s SPACING IS OPTIONAL
.I	String error messages
	49	STRING VARIABLE IN NUMERICAL EXPR.
	50	NON-STRING IN STRING ASSIGNMENT
	51	NUMERIC IN STRING EXPRESSION	
	52	INVALID STRING OPERATOR
	53	CANNOT COMPARE STRING WITH NUM. TYPES
	54	UNKNOWN STRING FUNCTION
	55	OUT OF STRING RANGE

.I	Test Set and Instrument Error Messages

	100	MISSING ' DELIMITER BEFORE BUS ADDR
	101	PS: VOLTAGE OUT OF RANGE
	102	PS: CURRENT OUT OF RANGE
	103	PS: OVERVOLTAGE OUT OF RANGE
	104	RELAY ERR
	105	RELAY: INVALID FUNC.
	106	RELAY: INVALID NUMBER
	107	DVM: INVALID MODE
	108	DVM: INVALID RANGE
	109	LODSET: IMPROPER NUMBER OF ARGUMENTS
	110	LODSET: IMPROPER MODE
	111	LODSET: UNABLE TO SET LOAD
.fi
.SH BUGS
	There are more or less common features not yet available such as
.I string variables, multiple statment lines, matrix statements
and the
.I def
statement.
Array variables do not accept reference to 0th elements.
Bugs will be found as local users write and execute programs and report
their problems.