|
|
1.1 root 1: .TH BITE 1 local
2: .SH NAME
3: bite \- Basic Interpreter for Testing & Engineering
4: .SH SYNOPSIS
5: .B bite
6: [ - ] [prog1 prog2 prog3 .....]
7: .SH DESCRIPTION
8: .I Bite
9: is a BASIC language interpreter.
10: Its virtues are in that it is written in the Bell System 'C'
11: compiler language which lends itself to
12: .I portability
13: and
14: .I readability.
15: One of the most important aspects is that the interpreter is
16: .I interfaced
17: with the
18: .I system shell via the '!' command.
19: Shell commands can be executed inmmediately or actually typed into
20: the BASIC program itself!
21: "bite" may also be invoked by a shell script and when given an argument
22: (a program name) will automatically cause the BASIC program to be
23: executed. In that case the BASIC program should be terminated with
24: a "bye" statement.
25: The inclusion of the '-' option, along with a BASIC program name will
26: cause "bite" to start and then "load" the BASIC program
27: .I without
28: running it.
29: .PP
30: .I Bite
31: is designed so that BASIC language programs
32: of the original Dartmouth syntax will be loadable
33: with little or no incompatibility and extra features that do not
34: follow common standards will be
35: .I additions
36: to, rather than
37: .I exceptions
38: to the syntax rules of BASIC.
39:
40: The commands and functions in this interpreter
41: are implemented by entries into
42: tables and the procedure for implementing new
43: commands will be documented as another virtue of the
44: configuration of this interpreter.
45: .PP
46: .I Bite
47: was implemented
48: with
49: .I instrument control
50: and
51: .I data collection
52: in mind
53: for the purpose of controlling an
54: .I Automated Test System (ATS).
55: These functions will be available as an extended instruction set.
56: Another version of "bite" is being configured for this purpose
57: which will reside (initially) on an PDP-11/03 (subsequently on
58: a PDP-11/23).
59: .PP
60: A standard string capability is implemented on the BASIC interpreter
61: BITE.
62: .TP 4
63: .I Conventions
64: .TP 8
65: .I THIS DOCUMENT
66: All things enclosed in [] are optional.
67: .TP 8
68: .I EDITING
69: Editing is accomplished as it is in any BASIC language intepreter
70: in that line-numbers are entered by typing a line-number followed
71: by the statement and removed or deleted by merely typing the line-number.
72: Listing is accomplished with the "list" command (explained under "COMMANDS").
73: In addition to the above, it is possible to list single lines by typing
74: the return-key in which case the program is listed one line-at-a-time,
75: starting at the first. When the last one is reached, the sequence starts
76: at the first line again.
77: At any time it is also possible to type the '-' symbol to "backup" a line-
78: at-a-time.
79: Other editing facilities are "s", "delete", and "reseq" also explained
80: under "COMMANDS".
81: .TP 8
82: .I EXPR
83: Any algebraic expression which could be a constant, variable, math
84: function or a combination of same, seperated by arithmetic operators
85: as in: a+b*3.14*(4.4+c2*sin(b+s))+a(2,2)
86: See "variables" and "math functions" below.
87: .TP 8
88: .I OPERATORS
89: +,-,*,/ or ^ for addition, subtraction, multiplication, division or
90: exponentiation in order of lowest to highest precidence. + and - have
91: the same precidence and * and / have the same precidence.
92: .TP
93: .I RELATIONALS
94: <, >, =, <=, >=, <> for less than, greater than, equality, less or equal,
95: greater than or equal and not equal.
96: .TP 8
97: .I SOURCE PATH
98: When reference is made to a "bite" source file (i.e. the "old" and "load"
99: command), at least two directories are searched, the first being the current
100: directory and then /usr/lib/bites which is a "pool" where shared programs
101: should be stored. The /usr/lib/bites directory is analogous to the
102: /usr/bin directory in UNIX.
103: The user may specify extra paths to be searched by defining them in
104: BITEPATH and then exporting BITEPATH like:
105: .br
106: BITEPATH=:$HOME/BASIC:/usr/local/lib/:
107: .br
108: which adds the two pathnames between the ':' delimiters to the
109: other paths. In this way, one may have private BITE programs
110: and execute them from any directory.
111: .TP 8
112: .I SOURCE PROGRAM NAME
113: The source program name is twelve or less characters suffixed by a .b .
114: .TP 8
115: .I STATEMENT
116: A basic statement consists of a line number (integer value between 1 and
117: 32767) followed by a command, space and operand which follows the
118: syntax governed by the command as in: 100 print "hello world"
119: A statement can be typed without a line number in which case it will
120: execute immediately. This is true for all commands, but doesn't make
121: sense for all commands such as "for". Immediate execution is handy
122: for diagnostic purposes such as: print a, to find out what the value
123: of a.
124: .TP 8
125: .I VARIABLES
126: All variable names are either a lower case alpha character (a-z)
127: or a lower-case alpha character followed by an integer (0-9).
128: Array have the same name convention as regular variables and take
129: the form varname(D1,D2,D3....D10) where D1-D10 are the dimension
130: attributes of the array and can take the form of any legal expression
131: (including another array) as in a(b(2,2),x).
132: .TP 8
133: .I STRING VARIABLE
134: A string variable is any single lower case alpha character (a-z)
135: followed by a '$' or any single alpha character followed by a single digit
136: (1-9) then followed by a '$' like a$ or z9$.
137: .TP 8
138: .I STRING ARRAY VARIABLE
139: A string array variable has the same naming convention as a regular string
140: variable and contains one or two "subscripts" enclosed in parenthesis
141: as in:
142: .br
143: x1$(x,y)
144:
145: Like other array variables in BASIC string arrays must be declared
146: in a dimension statement prior to their use: e.g. dim a$(20) or
147: d$(100,3).
148: .TP 8
149: .I STRING EXPRESSION
150: A string expression is any combination of string variables and
151: literals added together by a '+' operator which indicates concatenation.
152: An example of an assignment statement for string variables is:
153:
154: b$="Joan"+a1$+c2$+"John"+x$(20)
155: .SH COMMANDS
156: .TP 8
157: .I bye or q
158: Exit
159: the interpreter.
160: .TP 8
161: .I com[mon]
162: Preserve
163: variables for subsequent "run". Issue of the run command
164: otherwise de-allocates all variables.
165: .TP 8
166: .I con \fR[line#]
167: Continue normal execution from single step mode. See "sing" command.
168: .TP 8
169: .I data \fR(expr),(expr),(expr),..........
170: The data statement is a string of defined constants or expressions referred
171: to by the "read" statement. Unlike most BASIC interpreters, the data is
172: stored only in the form of text strings which allows the read statement to
173: evaluate expressions as well as constants.
174: .TP 8
175: .I del[ete] \fRlownum [, highnum]
176: Delete line-number specified if only lownum given. Delete all lines
177: between lownum and highnum if both are specified.
178: See the "undo" command.
179: .TP 8
180: .I dim \fRvariable(expr1,expr2,....,expr10)
181: Allocate space and define the dimensional characteristics of
182: subscripted variable.
183: .TP 8
184: .I end
185: Define logical end of program. Cause termination or current "run".
186: .TP 8
187: .I expunge
188: Force all variable space, including subscripted variables to be freed.
189: Or de-allocate used varriable space.
190: .TP 8
191: .I f
192: Identify current file. Typing "f" causes the currently referenced
193: file (if any) to be displayed.
194: .TP 8
195: .I for - next
196: Cause code enclosed by this combination to be executed under the
197: conditions specified in the
198: .I for
199: statement as in: for variable = expr1 to expr2 [step expr].
200: .TP 8
201: .I gosub \fRline#
202: Goto subroutine, resume from following statement after "return" encountered.
203: .TP 8
204: .I goto \fRline#
205: Force execution to continue starting at the line# specified.
206: .TP 8
207: .I if \fR(expr1) relational (expr2) \fIthen \fRline#
208: Redirect program flow to line# if expr1 is related to expr2 by the
209: specified relational.
210: String expressions are also compared by the "if" statement as in:
211: .br
212: if a$ < "jim" goto 100
213: .br
214: The results of the comparison are based on alphabetical order
215: of the two objects being compared.
216: The "then" in the "if" statement can be optionally replaced with "goto"
217: "go to" or "gosub". The "if" statement can also take the form:
218: .br
219: .I if \fR(expr) relatioanl (expr) \fIthen \fRvar = (expr)
220: .TP 8
221: .I if \fRmore _fd \fI then \fRline#
222: Direct program flow to line# if there are more lines to be read
223: from the file associated with fd where fd is the file designator
224: between 1 and 4 inclusive. This type if statement is used to detect
225: EOF (End Of File) condition.
226: .br
227: Example: 100 if more _2 then 200
228: .br
229: Note that "gosub" can be used in place of "then" in which case
230: the subroutine would be one for reading another line.
231: .TP 8
232: .I input \fR[_fildes]var1[,var2,var3,....]
233: Prompt for input and assign inputed value to variable.
234: If 's' is typed program is halted.
235: String variables may be specified in the "input" statement. The
236: variables can be mixed like:
237: .br
238: input a$,a,b$(2,2)
239: .br
240: which will interpret the first input as a string, require the second
241: input to be numerical and interpret the third as a string input.
242: .TP 8
243: .I [let] \fRvariable = expr
244: Assign the value of expr to variable.
245: The let is optional.
246: The let or assignment statement also allows the assignment of
247: string expressions to string variables like:
248: .br
249: b$="Joan"+a1$+c2$+"John"+x$(20)
250: .TP 8
251: .I l[ist] \fR[lownum [, highnum]]
252: List the text in working storage. If lownum is given then only that number
253: is listed, if lownum and highnum are specified, then a listing is
254: displayed between the given statement numbers.
255: .TP 8
256: .I load \fR[prog-name]
257: Same as the "old" command, except working storage is not cleared.
258: .TP 8
259: .I ls \foptions
260: List directory. Same as UNIX "ls" command.
261: .TP 8
262: .I mov \fRstartnum,endnum,newnum [,increm]
263: The mov command causes the lines beginning with
264: .I startnum
265: and ending with
266: .I endnum
267: to be moved (ie. resequenced) to the line beginning with
268: .I newnum
269: and incremented by
270: .I increm \fR.
271: The default value for
272: .I increm
273: is 10.
274: All references to the moved lines are updated. The user is responsible to
275: see that line numbers associated with moved lines do not conflict with
276: existing lines which will cause loss of program text.
277: .I mov
278: is similar to
279: .I reseq
280: (see below) except that only the specified lines are resequenced.
281: .TP 8
282: .I n
283: List the next 23 lines. Useful for paging through a listing on a CRT.
284: .TP 8
285: .I new
286: Clear program working storage for new program to be typed.
287: .TP 8
288: .I old \fR[prog-name]
289: Clear user space and load program. If old is typed with no argument
290: it will prompt the user for a program name if not defined or load
291: the last defined program name.
292: .TP 8
293: .I on \fR(expr) \fIgoto \fRline#,line#,.......
294: Is a selective goto with multiple line number targets. The target
295: branched to depends on the value of expr which is truncated.
296: Control is passed to the first line# specified after goto if the
297: value of the expression is 1. Control passes to the second line#
298: if the value is 2, the third if 3 and so on.
299: .TP 8
300: .I on \fR(expr) \fIgosub \fRline#,line#,.......
301: Same action as on-goto, except action taken is that of "gosub".
302: .TP 8
303: .I pause
304: Causes execution to be suspended until a "newline" or "return" is typed.
305: This is useful for programs which need to be continuously in "run", but
306: need to allow a time for user action i.e. unit insertion.
307: .TP 8
308: .I pr[int] \fR[_fildes](expr's,quoted strings or tab operators)
309: The print statment is a limited format display statement in which
310: expressions are evaluated and displayed along with quoted literals.
311: The tab(expr) operator causes the print head to move to the absolute
312: column position computed by expr provided the current head position
313: is less. The specifiers must be seperated by onee or more commas
314: or semicolons.
315: String expressions are also expanded by the print statement.
316: .TP 8
317: .I printf \fR[_fildes]"format string"[,expr1,expr2,.....,expr10]
318: This is an interpretive implementation of the UNIX 'C' library
319: routine, printf. It is, however restricted to only the floating
320: point format control specifiers 'f' and 'g'. Use of any of the
321: other specifiers such as 'o', 'd' or 's' will give erroneous results.
322: Print controls such as \\b (backspace), \\n (newline), \\r (return)
323: or \\t can also be used. The printf format was chosen in lieu
324: of the usual "print using" command because it was felt that
325: printf is not only a 'C' language standard but easier to use
326: than "print using".
327: .br
328: Usage Example:
329: .br
330: 100 printf "Variable a=%2.2f\\tVariable b=%g.\\n",a,b
331: .TP 8
332: .I randomize
333: Causes "rnd" statement to start at an "unpredictable" value.
334: .TP 8
335: .I read \fRvar1,var2,var3,..............
336: The "read" statement causes data to be assigned to each variable in the
337: list from the constants or expressions contained in "data" statements. The
338: reading starts where-ever the data pointer is currently at. The data pointer
339: points to the last data field accessed, if a read was done, the first
340: data field in the first data statment if the "restore" statment is issued
341: or the program is re-run.
342: The "read" statement will also assign values to string variables or
343: expressions in the "data" statement.
344: .TP 8
345: .I rem
346: The remark statement causes no operation in
347: .I bite
348: but may be followed by any string of characters for the purpose of commenting
349: a program. Unlike compiler languages, remarks do take up program buffer space,
350: however, they are of paramount importance in making a program readable by
351: human beings and are therefore strongly recommended.
352: .TP 8
353: .I reseq \fR[startnum [, increm]]
354: The resequence command causes the statement numbers and all references
355: to them (such as if's goto's, gosub's, etc) to be resequenced starting
356: at
357: .I startnum
358: and incremented by
359: .I increm.
360: If startnum and/or increm are omitted, the default values are 10 and
361: 10 respectively.
362: .TP 8
363: .I restore
364: Restores the data pointer to the first field of the first "data" statment.
365: .TP 8
366: .I return
367: Return from subroutine called by "gosub" statement.
368: .TP 8
369: .I rm \ffilename(s)
370: Remove file(s). Same as UNIX "rm" command.
371: .TP 8
372: .I run \fR[prog-name]
373: Run basic program specified. If no argument is given, "run" attempts to
374: execute whatever is currently in working storage.
375: .TP 8
376: .I s \fRline#/old-string/new-string[/]
377: Substitute in line line# the new-string for the old-string. The last delimiter
378: is optional, unless new-string is null in which case it is desired that
379: old-string merely be removed.
380: See the "undo" command.
381: .TP 8
382: .I sing \fR[line#]
383: Enter the single step mode starting at the line# specified or at
384: the first line of the program if no line# is specified.
385: In single step mode an instruction is executed and then the prompt '^'
386: is displayed.
387: At this time the user may enter
388: any command (i.e. print) or hit the "return" key to execute the next
389: instruction.
390: See the "con" instruction.
391: .TP 8
392: .I size
393: Causes amount of storage used and remaining or free space in
394: decimal number of bytes.
395: .TP 8
396: .I stop
397: Stop execution of program.
398: .TP 8
399: .I save \fR[prog-name]
400: Save the contents of working storage in file-name specified by progname.
401: If no progname is given last referenced file-name is used. If no file
402: name was referenced, the user is prompted for a name.
403: .TP 8
404: .I undo
405: Undo last "s" command or
406: .I single line deletion.
407: .TP 8
408: .I ! (any shell command string)
409: Unix shell command invocation allows system commands to be
410: executed from the interpreter.
411: Not available in restricted version.
412: .SH FILE COMMANDS
413: The file commands: append, openi, and openo are followed by one or more
414: file-names seperated by commas, each file-name being no more that
415: 14 characters long. Files are assigned to designators (integer values
416: between 1 and 8 inclusive) in the order that they are open.
417: All commands
418: such as "print" and "input" which refer to a file use the designator
419: number preceded by a '_' character to refer to that file
420: as in: 100 print _1"hello world" or 100 input _3a(x,y) .
421: .TP 8
422: .I append \fRfile1[,file2,.....,file8]
423: If file exists open for output cause new data to be appended. If file
424: does not exist, the named file is created.
425: .TP 8
426: .I openi \fRfile1[,file2,.....,file8]
427: Open file for input. File must exist.
428: .TP 8
429: .I openo \fRfile1[,file2,.....,file8]
430: Create named file(s) and open for output. If named files exist, the old
431: data is destroyed.
432: .TP 8
433: .I seek \fR_fildes, offset, mode
434: Seek to a line whose position in the file is offset. If mode = 0 the
435: offset is from the beginning, if mode = 1 then the offset is relative
436: to the current file pointer.
437: .br
438: Usage Example: 101 seek _1, 33, 0
439: .br
440: would cause the file pointer to the 33rd line.
441: .TP 8
442: .I rewind \fR_fildes
443: Rewind the file specified by fildes to the beginning (first line).
444: This is effectively the same as seek _fildes, 0, 0.
445: .TP 8
446: .I close \fR_fildes
447: Close file associated with file designator.
448: .TP 8
449: .I closeall
450: Close all files input and output.
451: .SH MATH FUNCTIONS
452: .TP 8
453: .I abs\fR(expr)
454: Absolute value.
455: .TP 8
456: .I atn\fR(expr)
457: Arc-tangent.
458: .TP 8
459: .I cos\fR(expr)
460: Cosine.
461: .TP 8
462: .I exp\fR(expr)
463: Natural exponential.
464: .TP 8
465: .I fact\fR(expr)
466: Factorial. (Truncates fractions i.e. fact(3.22) interpreted as fact(3))
467: .TP 8
468: .I int\fR(expr)
469: Integerize or truncate fractional part of result of expr.
470: .TP 8
471: .I log\fR(expr)
472: Natural log.
473: .TP 8
474: .I rnd\fR(expr)
475: Return random number between 0 and evaluated expr.
476: .TP 8
477: .I sin\fR(expr)
478: Sine.
479: .TP 8
480: .I sqr\fR(expr)
481: Square root.
482: .SH STRING FUNCTIONS
483: .TP 8
484: .I asc(string)
485: Returns ASCII value of first character in string.
486: .TP 8
487: .I chr$(expr)
488: Return the character corresponding to the value of expr where expr
489: is a numerical expression. If the value of the expression exceeds
490: octal 177 the least significant 7 bits are used.
491: .TP 8
492: .I ext$(string,pos,len)
493: The ext$ "extract" string function returns a substring of the
494: string expression string starting at position "pos" having length "len".
495: If attempt is made to extract a string beyond the end of "string" the result
496: will be truncated and an error message will be displayed.
497: .TP
498: .I len(string)
499: Return the length of the string expression "string".
500: .TP
501: .I left$(string,n)
502: Return the leftmost n characters of the string. If the string length is
503: less than n, then the string itself is returned.
504: .TP
505: .I loc$(string)
506: Converts all upper case alphabetic characters in the string to lower case.
507: .br
508: EX: a$=loc$("ABCdef123#$^&*")
509: .br
510: returns abcdef123#$^&* to a$
511: .TP
512: .I mid$(string,pos,len)
513: Does exactly same as ext$. Included because it is part of another
514: popular dialect of BASIC.
515: .TP
516: .I right$(string,n)
517: Return rightmost n characters of string. If string length is less than
518: n the string itself is returned.
519: .TP
520: .I str$(expr)
521: Returns value of expr (numerical expression) as an ASCII string.
522: .TP
523: .I string$(n,string)
524: Returns n occurrences of the first character in string.
525: .TP
526: .I upc$(string)
527: Converts all lower case alphabetic characters in the string to upper case.
528: .TP
529: .I val(string)
530: Return numerical value represented by ASCII number.
531: .br
532: Ex: a=val("100.2")
533: .br
534: assigns the value 100.2 to variable a. This function is good for
535: converting ASCII tabulations of numbers. ext$ or mid$ can be used
536: to select the column.
537: .SH ATS INSTRUMENT COMMANDS
538: .TP 8
539: .I buspr \fR'busadr(text and expressions)
540: Buspr is merely an extension of the print statement which allows
541: the print string which would otherwise be displayed on the tty
542: to be sent via the IBV-11 bus to the bus address specified by "busadr".
543: The ' preceding busadr distinguishes the following character from anything
544: other than a single character to be interpreted as an address.
545: .br
546: Usage Example: 100 buspr '6"F2R";r
547: .TP 8
548: .I cmd "string"
549: Send character string over IBV-11 command lines.
550: .TP 8
551: .I delay num
552: Causes a delay of num 60ths of a second where num is an integer.
553: .br
554: Usage Example: 100 delay 120 (delay 2 minutes or 120/60ths sec)
555: .TP 8
556: .I dvminit
557: Initialize Digital Voltmeter.
558: .TP 8
559: .I dvms \fRfunction, range
560: Digital voltmeter set command, where: function is "ac", "dc" or "ohms"
561: and range is .1, 1, 10, 100, 1k, 10k or "aut". i.e.
562: .br
563: Usage Example: 100 dvms dc,1k
564: .TP 8
565: .I hprintf \fR"format text"[,expr1,expr2,...,expr10]
566: Formatted print to strip printer. Syntax rules are the same as
567: . I printf.
568: Strip printer is 20 columns wide, anything past the 20th column is
569: truncated.
570: .TP 8
571: .I lodset \fRlodnum,mode,value
572: Set load. Where lodnum an integer describing which load referred to,
573: mode is the manner in which the load is set and value is an expression
574: describing the current or resistance the load was set to depending on the
575: mode. Mode is a single character 'r', 'R', 'i' or 'I' where 'r' is resistance
576: mode (value in ohms) and 'i' is current mode (value in amperes). Small
577: letter causes a hunt for the value and capital causes set on first try.
578: .TP 8
579: .I relay \fRfunction, relnum1[, relnum2, relnum3,... ]
580: Set multiprogrammer relays. Function is m (make), b (break) or c (clear).
581: Function is followed by all relay numbers to be acted upon which may
582: be expressions or variables. The clear function when not followed by
583: anything, simply means open all relays. When followed by relay numbers,
584: clear means all relays are open EXCEPT the ones specified.
585: .br
586: Usage Example: 100 relay m,10,20,21,a,b,rnd(10)
587: .TP 8
588: .I ps \fRpsno, voltage, current limit, overvoltage
589: Set power supply parameters. Psno is an integer representing the
590: power supply number describing which power supply is to be used,
591: voltage, current limit and overvoltage are self explanatory. Each
592: one of the parameters may be a legal algebraic expression so that
593: they may be controlled by the program.
594: .br
595: Usage Example: 100 dvms 1,10,1,11 or 100 dvms n,v1,i1,v1+1
596: .SH INSTRUMENT FUNCTIONS
597: .TP 8
598: .I btn\fR(expr)
599: Button function returns non-zero if control button number (expr) is
600: depressed.
601: .TP 8
602: .I dvmr()
603: Return digital voltmeter reading.
604: .TP 8
605: .I error()
606: Return 1 if last instrument command caused instrument error, otherwise
607: return 0.
608:
609: .SH AUTHORS
610: Richard B. Drake & James P. Hawkins
611: .SH FILES
612: source.b
613: .br
614: /usr/lib/bites/<source>
615: .br
616: .SH "SEE ALSO"
617: sh(1),bstring(1)
618: BASIC Programming and Applications, C. Joseph Sass 1972
619: .br
620: .br
621: BITE Users Guide, J.P.Hawkins, Bell Labs, TM-79-2425-4
622: .SH DIAGNOSTICS
623: Diagnostic error messages are issued by the interpreter
624: which indicate syntax errors , system failure, illegal commands or expressions,etc.
625: The
626: .I LSI-11/03
627: Version of
628: .I bite
629: does not issue explicit error messages, but displays an error number
630: in which the meanings are listed below. This is done to regain approx.
631: 2Kb memory in an already tight LSI-11/03 memory.
632: .nf
633: .I Standard Error Messages
634:
635: NUMBER MESSAGE TEXT
636: --------------------
637: 0 REFERS TO A NON EXISTING LINE NUMBER
638: 1 UNRECOGNIZABLE OPERATION
639: 2 CANNOT OPEN FILE
640: 3 ILLEGAL VARIABLE NAME
641: 4 BAD FILENAME
642: 5 WORKING STORAGE AREA EMPTY
643: 6 RUNS NESTED TOO DEEPLY
644: 7 UNASSIGNED VARIABLE
645: 8 EXPRESSION SYNTAX
646: 9 BAD KEYWORD IN STATEMENT
647: 10 IMPROPER OR NO RELATIONAL OPERATOR
648: 11 UNBALANCED QUOTES
649: 12 FILE EDITING NOT PERMITTED IN SINGLE STEP MODE
650: 13 MISSING OR ILLEGAL DELIMITER
651: 14 GOSUB WITH NO RETURN
652: 15 IS FATAL
653: 16 UNBALANCED PARENTHESIS
654: 17 UNKNOWN MATH FUNCTION
655: 18 NEXT WITH NO OR WRONG FOR IN PROGRESS
656: 19 CANNOT PROCESS IMAGINARY NUMBER
657: 20 WHAT ?
658: 21 BAD DIMENSION SYNTAX
659: 22 TOO MANY DIMENSIONS
660: 23 REDUNDANT DIM STATEMENT
661: 24 NOT ENOUGH WORKING STORAGE SPACE
662: 25 VARIABLE NOT DIMENSIONED
663: 26 WRONG NUM OF DIMS
664: 27 ONE OR MORE DIMS LARGER THAN ASSIGNED
665: 28 NEG. OR ZERO DIMENSION ILLEGAL
666: 29 DIVIDE BY ZERO
667: 30 BAD TAB SPEC. IN PRINT
668: 31 SYS CALL FAILED
669: 32 BAD FILE DECLARE SYNTAX
670: 33 OUT OF DATA
671: 34 FILE-NAME TOO LONG
672: 35 FILE DES. USED UP
673: 36 FILE NOT OPEN FOR OUTPUT
674: 37 FILE NOT OPEN FOR INPUT
675: 38 EXPRESSION YIELDS AN IMPOSSIBLE VALUE
676: 39 PRINTF: ARG COUNT MISMATCH
677: 40 PRINTF: MORE THAN 10 ARGS
678: 41 LINE TOO LONG FOR STRIP PRINTER
679: 42 MOV REQUIRES 3 LINE #'s SPACING IS OPTIONAL
680: .I String error messages
681: 49 STRING VARIABLE IN NUMERICAL EXPR.
682: 50 NON-STRING IN STRING ASSIGNMENT
683: 51 NUMERIC IN STRING EXPRESSION
684: 52 INVALID STRING OPERATOR
685: 53 CANNOT COMPARE STRING WITH NUM. TYPES
686: 54 UNKNOWN STRING FUNCTION
687: 55 OUT OF STRING RANGE
688:
689: .I Test Set and Instrument Error Messages
690:
691: 100 MISSING ' DELIMITER BEFORE BUS ADDR
692: 101 PS: VOLTAGE OUT OF RANGE
693: 102 PS: CURRENT OUT OF RANGE
694: 103 PS: OVERVOLTAGE OUT OF RANGE
695: 104 RELAY ERR
696: 105 RELAY: INVALID FUNC.
697: 106 RELAY: INVALID NUMBER
698: 107 DVM: INVALID MODE
699: 108 DVM: INVALID RANGE
700: 109 LODSET: IMPROPER NUMBER OF ARGUMENTS
701: 110 LODSET: IMPROPER MODE
702: 111 LODSET: UNABLE TO SET LOAD
703: .fi
704: .SH BUGS
705: There are more or less common features not yet available such as
706: .I string variables, multiple statment lines, matrix statements
707: and the
708: .I def
709: statement.
710: Array variables do not accept reference to 0th elements.
711: Bugs will be found as local users write and execute programs and report
712: their problems.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.