Annotation of researchv10no/cmd/basic/bite/doc/bite.1, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.