Error Messages
==============

Following is an alphabetical list of the error messages produced
by Brandy and explanations of what they mean.

Error messages are divided into three categories depending on how
serious the error is. These are warnings, errors and fatal errors
and are marked below by (Warning), (Error) and (Fatal)
respectively. Warnings are the least serious and the Basic program
continues to run after the error message has been displayed.
Errors will normally cause the program to be halted but they can
be trapped by means of ON ERROR or ON ERROR LOCAL statements.
The third type of error, fatal errors, represent serious
problems that cannot be trapped. The Basic program is always
stopped if one of these in encountered.

A number of these messages refer to the 'Basic stack'. This is an
area of memory that the interpreter uses to temporarily store
information. The 'Basic workspace' is the area of memory that
holds the Basic program plus any variables, arrays and strings it
creates and the Basic stack.

Some of the messages below contain expressions such as '<value>'
or 'PROC<name>'. The purpose of these is to say what appears in
the real error messages, for example, 'PROC<name>' indicates that
the name of a procedure is displayed at that point in the error
message. '<value>' is a numeric value. Other examples are
'<array name>()', which represents the name of an
array and '<file name>' which is the name of a file.

(Error)  '#' missing
--------------------
There is a syntax error in this line. A '#' is expected after one
of the keywords, for example, CLOSE# or BPUT#

(Error)  '(' missing
--------------------
There is a syntax error in this line. A '(' is expected after one
of the keywords, for example, if DIM is used as a function if must
be followed by a (' as in DIM(array(), 2)

(Error)  ')' missing
--------------------
There is a syntax error in this line. The interpreter expected to
find a ')' but found something else.

(Error)  ',' missing
--------------------
There is a syntax error in this line. The interpreter expected to
find a ',' but found something else instead.

(Error)  ',' or ')' expected
----------------------------
There is a syntax error in this line. A ',' or ')' was expected,
for example, in the parameter list of a procedure or function
definition, but something else was found instead.

(Error)  '=' (function return) encountered outside a function
-------------------------------------------------------------
A function return is marked by starting a statement with an '='.
One of these was found outside a function.

(Error)  '=' missing
--------------------
There is a syntax error in an assignment statement in this line.
The assignment operator, =, was expected but something else was
found instead.

(Error)  'CASE' statement has too many 'WHEN' clauses
-----------------------------------------------------
This is an implementation limitation. A single CASE statement
has more than 500 WHEN clauses.

(Error)  'LIBRARY LOCAL' can only be used at the start of a library
-------------------------------------------------------------------
The LIBRARY LOCAL statement, used to define variables and arrays
that will be private to a library, has been encountered at some
place other than the start of a library. It can only be used at
the start of a library before the first procedure or function in
the library.

(Error)  'OF' missing
---------------------
There is a syntax error in a CASE statement in this line. The
keyword OF is missing. This should go after the CASE expression.

(Error)  'ON' statement index value of <value> is out of range
--------------------------------------------------------------
The index value in an ON statement is either less than one or
greater than the number of entries in the ON statement and there
is no ELSE part to deal with this case.

(Error)  'RESTORE DATA' information is not the top item on the Basic stack
--------------------------------------------------------------------------
The LOCAL DATA statement stores information on the Basic stack
that will be retrieved later by a RESTORE DATA statement. This
error message says that the interpreter could not find that
information when it reached a RESTORE DATA statement.
LOCAL DATA and RESTORE DATA statements go in pairs.

(Error)  'RESTORE ERROR' information is not the top item on the Basic stack
---------------------------------------------------------------------------
The LOCAL ERROR statement stores information on the Basic stack
that will be retrieved later by a RESTORE ERROR statement. This
error message says that the interpreter could not find that
information when it reached a RESTORE ERROR statement. LOCAL ERROR
and RESTORE ERROR statements go in pairs.

(Error)  'SPC()' or 'TAB()' found outside an 'INPUT' or 'PRINT' statement
-------------------------------------------------------------------------
The two functions SPC() and TAB() can only be used in INPUT and
PRINT statements.

(Error)  'SYS' statement has too many parameters
------------------------------------------------
In a SYS statement, a maximum of ten parameters can be passed to
a SWI or received back from it.

(Error)  'TO' missing
---------------------
The keyword TO is missing in a FOR statement.

(Error)  '"' missing
---------------------
This error is reported when dealing with a string that is in
quotes in a READ statement. The end of the line in the DATA
statement has been reached and the second '"' has not been found.

(Error)  Address is out of range
--------------------------------
This error can be reported when using indirection operators in an
arithmetic expression. It says that the address from which data is
to be read or to which it is to be written lies outside the Basic
workspace. More specifically, whilst the contents of any address
within the Basic workspace can be read, data can only be written
to addresses that lie between the top of the Basic program itself
and the Basic stack and from HIMEM to the end of the Basic
workspace. This is to prevent the Basic program corrupting itself.

(Fatal)  Amount of memory requested exceeds what is available
-------------------------------------------------------------
This message is produced when a NEW command is used to change the
size of the Basic workspace if the new size is greater than the
memory available to run the interpreter.

(Error)  Arithmetic operations cannot be performed on these operands
--------------------------------------------------------------------
This says that an arithmetic operation is not possible with the
operands provided, for example, it is not possible to subtract one
character string from another.

(Fatal)  Arithmetic stack overflow
----------------------------------
This says that there is no memory left for information to be
stored on the Basic stack. The most likely cause of this is a
problem in the Basic program, for example, it has gone into a loop
making recursive procedure or function calls. Another possibility
is that there is very little memory left once all the arrays and
variables that a program uses have been created and there is no
room for the Basic stack.

(Error)  Array '<array name>()' has already been created
--------------------------------------------------------
The array named in the message has already appeared in a DIM statement.

(Error)  Array '<array name>()' has too many dimensions
-------------------------------------------------------
An attempt has been to create an array with more dimensions than
the interpreter allows. The limit is ten (this is an
implementation restriction of the interpreter).

(Error)  Array index value of <value> is out of range in reference to '<array name>()'
--------------------------------------------------------------------------------------
This error indicates that an array index in a reference to an
element of the array given in the message is bad. It is either
less than zero or greater than the size of the dimension of the
array to which it refers.

(Error)  Bad program
--------------------
The Basic program in memory has been corrupted and is not usable.
This error might appear if the value of PAGE is changed and the
OLD statement is used to recover a program that supposedly starts
at this new location. If there is not a recognisable program then
this error message will be displayed. At this point the only
commands allowed are LOAD, NEW or QUIT. This message will be
displayed again if anything else is used.

(Fatal)  Basic program file '<file name>' is empty
--------------------------------------------------
The basic program file <file name> referenced in a LOAD or CHAIN
statement is empty.

(Error)  Call to built-in function does not have enough parameters
------------------------------------------------------------------
A call in a built-in function such as LEFT$ does not have enough
parameters.

(Error)  Call to built-in function has too many parameters
----------------------------------------------------------
A call to a built-in function such as RIGHT$ has too many
parameters.

(Error)  Cannot find 'ENDCASE'
------------------------------
This can appear when executing the statements following a WHEN
part of a CASE statement. The interpreter has reached the end of
the statements for a particular WHEN and is trying to find the
ENDCASE for the statement so that the program can continue at that
point. The message says that it cannot find the ENDCASE.

(Error)  Cannot find 'ENDWHILE' matching this 'WHILE'
-----------------------------------------------------
The message says that the interpreter encountered a WHILE
statement where the initial value of the expression after the
WHILE was FALSE. This means that the entire loop will be skipped.
The interpreter cannot find the ENDWHILE at the end of the loop.

(Error)  Cannot find array '<array name>()'
-------------------------------------------
The array named in the error message cannot be found, that it, it
was not declared on a DIM statement.

(Fatal)  Cannot find file '<file name>'
---------------------------------------
The file named in the error message could not be found when trying
to open the file for reading.

(Error)  Cannot find function 'FN<name>'
----------------------------------------
This error can show up when evaluating an arithmetic expression.
The function named in the message cannot be found in the Basic
program or any of the currently loaded libraries (assuming that
the Basic program loads any libraries).

(Error)  Cannot find library '<file name>'
------------------------------------------
The library named in the message could not be found when trying to
execute a LIBRARY or INSTALL statement.

(Error)  Cannot find line <value>
---------------------------------
The line with line number given in the message could not be found
when executing, for example, a GOTO or RESTORE statement.

(Error)  Cannot find matching 'ENDIF' for this 'IF' or 'ELSE'
-------------------------------------------------------------
There is a problem with the syntax of the program. An ENDIF could
not be found when trying to find the ENDIF for the current block
IF statement. ENDIFs have to be the first item on a line.

(Error)  Cannot find procedure 'PROC<name>'
-------------------------------------------
The procedure named in the message cannot be found either in the
program or in any libraries that have been loaded. 

(Error)  Cannot find variable '<variable name>'
-----------------------------------------------
There is a reference to the variable named in the message but it
cannot be found. In other words, no value has been assigned to the
variable before that variable is referenced.

(Error)  Cannot open file '<file name>' for output
--------------------------------------------------
In a call to the OPENOUT function, the file named in the message
cannot be opened or created, for example, because the file is
being written to something that can only be read from.

(Error)  Cannot open file '<file name>' for update
--------------------------------------------------
In a call to the OPENUP function, the file named in the message
cannot be opened, for example, because the name of the file is not
legal.

(Error)  Cannot write to file as it has been opened for input only
------------------------------------------------------------------
An attempt has been made to write to a file that has been opened
for input only via the OPENIN function. The file should be opened
with OPENUP if it is to be written to as well as read from.

(Error)  Character string is too long
-------------------------------------
An attempt has been made to create a character string that is
longer than the interpreter allows. The limit is currently 65536
characters.

(Fatal)  Could not create file '<file name>'
--------------------------------------------
This error is reported when trying to save a Basic program if it
is not possible to create the file named in the message, for
example, because the name of the file is not legal.

(Fatal)  Could not finish writing to file '<file name>'
-------------------------------------------------------
An error occured when writing the file named in the message, for
example, the disk filled up.

(Fatal)  Could not read file '<file name>'
------------------------------------------
An error occured when reading the file named in the message that
the program could not deal with.

(Error)  Dimension of array '<array name>()' is negative
--------------------------------------------------------
In a DIM statement, the value of one of the dimensions of the
array named in the message is negative.

(Error)  Division by zero
-------------------------
This says that the interpreter has encountered an attempt to
divide by zero in an arithmetic expression.

(Error)  ENDPROC encountered outside a PROC
-------------------------------------------
The interpreter has reached an ENDPROC statement but no procedures
have been called.

(Error)  Escape
---------------
The 'escape' key has been hit to stop the Basic program running.
Whilst everything in the program is left as it was at the time the
key was pressed to allow, for example, the values of variables to
be printed out, it is not possible to restart the program from he
point at which it halted.

(Fatal)  Expression is too complex to evaluate
----------------------------------------------
This says that the interpreter has come across an arithmetic
expression that is too complicated for it to evaluate. The
expression will have to be simplified.

(Error)  File name missing
--------------------------
A SAVE command needs the name of the file to be supplied as the
name cannot be found anywhere else.

(Error)  Floating point exception
---------------------------------
An arithmetic operation involving floating point number has given
an error, for example, the result of a multiplication is greater
than (roughtly) 10 to the 308.

(Error)  Functions cannot be used as PROCs
------------------------------------------
A statement has been found that starts with a call to a user-
defined function, that is, a function is being used where a
procedure call would be expected. This is not allowed.

(Error)  HIMEM cannot be changed in a PROC, FN or any other program structure
-----------------------------------------------------------------------------
The places in a Basic program where HIMEM can be changed are
limited. It cannot be altered in a procedure, function, subroutine
or in the body of a loop, for example, in the body of a REPEAT
loop. It cannot be altered after either LOCAL DATA or LOCAL ERROR
tatements have been used. In short, it can really only be
hanged at the start of a program.

(Fatal)  Handle is invalid or file associated with it has been closed
---------------------------------------------------------------------
Files are identified by the interpreter by a so-called 'file
handle' when they are being read from or written to. This message
says that the file handle used in a file I/O statement is not
one of the handles currently in use or an attempt has been
made to perform an I/O operation on a file that has been closed.

(Error)  Have reached end of file
---------------------------------
This error can occur when reading a file. An attempt has been made
to read beyond the end of the file.

(Fatal)  Hit problem with file '<file name>'
--------------------------------------------
This says that the interpreter encountered an error when reading
from or writing to a file that it could not handle, for example,
the disk filled up when writing a file to disk.

(Error)  Invalid option found after 'TRACE'
-------------------------------------------
The trace option after TRACE is not one of ON, OFF, PROC, GOTO,
STEP or RETURN.

(Error)  LOCAL found outside a PROC or FN
-----------------------------------------
A LOCAL statement has been encountered by the interpreter but this
statement can only be used in a procedure of function.

(Error)  LOMEM cannot be changed in a PROC or FN
------------------------------------------------
This error message says that an attempt was made to change the
pseudo-variable LOMEM in a procedure or function. LOMEM can only
be altered before calling any procedures or functions (or possible
between calls) as changing it discards all the variables and
arrays created by the program.

(Warning)  Library '<file name>' has already been loaded. Command ignored
-------------------------------------------------------------------------
This is a warning message put out when an attempt is made to load
a library via LIBRARY when there is already a copy of it in memory
loaded by a previous LIBRARY command. (The same message can also
be displayed when INSTALL is used to load a library that has
already been loaded via INSTALL.) Note that it is possible to use
INSTALL to load a library and then for the same library to be
loaded via LIBRARY. The version brought into memory using LIBRARY
will take precedence. 

(Error)  Line number is outside the range 0..65279
--------------------------------------------------
The line number in, for example, a GOTO statement is outside the
range allowed for line numbers.

(Fatal)  Line number went outside the range 0..65279 when renumbering program
-----------------------------------------------------------------------------
This error can appear when the RENUMBER command is used, possible
as a result of using too large a line number step. The program is
renumbered again using a step of one.

(Warning)  Line numbers have been added to the program
------------------------------------------------------
This message is displayed when a program is loaded via the LOAD
command or the command line option '-load'. if the program does
not have line numbers.

(Warning)  Memory available for Basic programs is now <value> bytes
-------------------------------------------------------------------
This message is put out when the NEW command is used to change the
size of the Basic workspace to confirm the new size of the
workspace.

(Error)  Not in a 'FOR' loop
----------------------------
This message says that the interpreter has encountered a NEXT
statement but it is not in a FOR loop.

(Error)  Not in a 'REPEAT' loop
-------------------------------
This error message indicates that the interpreter has run into an
UNTIL statement but it is not in a REPEAT loop.

(Error)  Not in a 'WHILE' loop
------------------------------
This message can be produced when an ENDWHILE statement is
encountered. It says that the statement has been found when the
Basic program is not executing a WHILE loop.

(Warning)  Note: <value> open files have been closed
----------------------------------------------------
The interpreter keeps track of all the files that have been opened
by Basic programs. When the run of the interpreter itself ends it
closes any files that are still open. This message is displayed if
it has to close any.

(Warning)  Note: one open file has been closed
----------------------------------------------
The interpreter keeps track of all the files that have been opened
by Basic programs. When the run of the interpreter itself ends it
closes any files that are still open. This message is displayed if
it has to close any.

(Error)  Number is out of range
-------------------------------
This messages says that an arithmetic operation has given an
error, for example, the result of the multiplication of two
integers is larger than can be stored in an integer variable.

(Error)  Number of array indexes in reference to '<array name>()' is wrong
--------------------------------------------------------------------------
Either too many or two few indexes have been supplied in a
reference to the array named in the message.

(Error)  OS command failed
--------------------------
An operating system command issued via OSCLI or '*' failed. It
returned a negative status code.

(Error)  PROCs cannot be used as functions
------------------------------------------
This error message can be generated when evaluating an arithmetic
expression. It indicates that the Basic program is trying to call
a procedure as if it were a function.

(Error)  Parameter no. <value> is not a valid 'RETURN' parameter
----------------------------------------------------------------
This message can appear when the interpreter is evaluating the
parameters of a function or procedure call. 'Return' parameters
are used to pass back values when a procedure or function call
ends and there are restrictions as to what can be used for such
parameter in the actual procedure or function call. In general,
references to variables, arrays and elements are allowed but
general arithmetic expressions are not. The interpreter has found
a general expression When evaluating the parameter.

(Fatal)  Program execution has run into a PROC or FN
----------------------------------------------------
It is an error in this interpreter for it to encounter a DEF PROC
or DEF FN statement in the normal course of running a program.

(Error)  RETURN encountered outside a subroutine
------------------------------------------------
The interpreter has encountered a RETURN statement but no
subroutines have been called.

(Fatal)  STOP
-------------
This error message is produced when a STOP statement is reached.
The Basic program is halted at this point.

(Error)  Screen mode descriptor is invalid
------------------------------------------
There is something wrong with the screen mode description string
after the MODE keyword.

(Error)  Screen mode is not available
-------------------------------------
A screen mode that matches the one requested in the mode
description string is not available.

(Error)  Silly!
---------------
This message indicates that an error such as setting the STEP
value in a FOR loop to zero has been found.

(Error)  Line is longer than 1024 characters
--------------------------------------------
The maximum length of a line that the interpreter can handle is
1024 characters. However, this message can be produced when the
length of a line is much less than this due to the way in which
the interpreter works. The real limit depends on the contents of
the line but will be around 500 characters.

(Error)  Syntax error
---------------------
There is something wrong with the syntax of the statement, for
example, there is some extra text at the end of it.

(Error)  Syntax error in expression
-----------------------------------
There is an error in the syntax of an arithmetic expression.

(Error)  The dimension number in call to 'DIM()' is out of range
----------------------------------------------------------------
In a call to the DIM function to find the size of an array
dimension, the number of the dimension is less than one or greater
than the number of dimensions of the array supplied as the first
argument of the function call.

(Error)  The dimensions of array '<array name>()' have not been defined
-----------------------------------------------------------------------
The array <array name> has been declared as a LOCAL array in a
procedure or function but its dimensions have not been defined on
a subsequent DIM statement.

(Fatal)  The file pointer cannot be changed
-------------------------------------------
This error can occur when the PTR# statement is used. It means
either that the attempt to set the file pointer of the file being
referenced in the statement failed or that the file itself is of
a type that does not have a file pointer.

(Fatal)  The file pointer's value cannot be found
-------------------------------------------------
This message is associated with the PTR# function. It means either
that the attempt to find the value of the file pointer of the file
being referenced in the function failed or that the file itself is
of a type that does not have a file pointer.

(Fatal)  The interpreter has gone wrong at line <value> in <file name>
----------------------------------------------------------------------
This message indicates that the interpreter has detected something
has gone wrong in itself. <value> and <filename> say where the
problem was discovered. This message should not appear and almost
certainly means that the Basic program being run has revealed a
bug in the interpreter.

(Fatal)  The interpreter has run out of memory
----------------------------------------------
This indicates there is no more memory left in the Basic
workspace. There can be many reasons for this, for example, there
might not be enough room to create a long character string or
there might be no memory to create a local array in a procedure.
The size of the Basic workspace can be increased by means of the
NEW statement, but at a cost of losing everything in the existing
workspace.

(Fatal)  The maximum allowed number of files is already open
------------------------------------------------------------
The interpreter only allows a certain number of files to be open
at the same time and the Basic program is attempting to open more
than that number. The limit is twenty files.

(Fatal)  The size of the file cannot be found
---------------------------------------------
This message is produced by an error in a call to the EXT#
function. It indicates either that the attempt to find the size of
the file referenced in the function failed or, more likely, that
the file itself does not have a set size. An example of this is
when trying to read from the serial port: although the serial port
is seen as a file by the program it is not really one and trying
to find its size is meaningless.

(Error)  There are no more 'DATA' statements to read
----------------------------------------------------
This error message can be generated by a READ statement. It says
that the Basic program is trying to read more data than has been
supplied on the DATA statements.

(Error)  There are not enough parameters in the call to '<name>'
----------------------------------------------------------------
The number of parameters supplied in a call to the procedure or
function named in the error message is less than the number
defined in its DEF PROC or DEF FN statement.

(Error)  There are too many parameters in the call to '<name>'
--------------------------------------------------------------
The number of parameters supplied in a call to the procedure or
function named in the error message is greater than the number
defined in its DEF PROC or DEF FN statement.

(Fatal)  There is not enough memory to create a byte array
----------------------------------------------------------
This says that the Basic program has run out of memory. This
happened when trying to create a byte array in a DIM statement,
that is, when dealing with a '<variable name> <size>' type of
array definition. There was no enough memory left in the Basic
workspace to create an array of the requested size. Assuming that
there was not something wrong with the array size itself, the way
to fix this is to increase the size of the Basic workspace.

(Fatal)  There is not enough memory to create array '<array name>()'
--------------------------------------------------------------------
This error message says that the Basic program has run out of
memory when trying to create the array named in the message. It is
possible for this error to appear if the Basic program goes into
a loop making recursive calls to a procedure or function that
creates local arrays and it runs out of memory because it is
making so many copies of the array, but if there is nothing wrong
with the Basic program then the size of the Basic workspace will
have to be increased.

(Fatal)  There is not enough memory to load library '<file name>'
-----------------------------------------------------------------
This message says that the interpreter ran out of memory when
trying to load a library via INSTALL or LIBRARY. If the failure
occurs when using a LIBRARY statement then the size of the Basic
workspace will have to be increased to make room for the
library. On the other hand, not much can be done if it
ccurs on an INSTALLcommand as there is not enough
memory available to run the interpreter.

(Fatal)  This Basic command cannot be used in a running program
---------------------------------------------------------------
Some Basic commands such as LIST can be used in a program as their
effects are benign, but in general commands tend to have
distructive effects on the program, for example, he NEW command,
so they cannot be used.

(Fatal)  This version of the interpreter does not support graphics
------------------------------------------------------------------
The version of the interpreter being used does not support any of
the graphics statements such as MOVE, DRAW, PLOT, CLG and so
forth.

(Error)  Tried to take log of zero or a negative number
-------------------------------------------------------
This error is produced when LN or LOG are called in an arithmetic
expression when the function argument is zero or negative.

(Error)  Tried to take square root of a negative number
-------------------------------------------------------
This error is reported when SQR is called in an arithmetic
expression when the function argument is negative.

(Error)  Type mismatch: array wanted
------------------------------------
This error is produced when an array is required, for example, as
the first argument in a call to the DIM function, but the item
passed is not an array.

(Error)  Type mismatch: array must have only one dimension
----------------------------------------------------------
The arrays used in some functions calls, for example, when being
used for the translate table in a call to XLATE$, have to have
only one dimension. This error is produced when the array has more
than one dimension.

(Error)  Type mismatch: arrays must have the same dimensions
------------------------------------------------------------
The arrays in such operations as array addition have to have the
same number of dimensions and the number of elements in each
dimension has to be the same.

(Error)  Type mismatch: cannot compare these operands
-----------------------------------------------------
This error indicates that one or both of the operands of a
relational operator is not valid, for example, it is not possible
to compare a string with an integer or to compare arrays.

(Error)  Type mismatch: cannot perform matrix multiplication on these arrays
----------------------------------------------------------------------------
The sizes of the dimensions of the arrays being used as operands
in a matrix multiplication operation are not compatible, for
example, one of the arrays has more than two dimensions or the
number of columns in one matrix is not equal to the number of rows
in the other.

(Error)  Type mismatch: cannot swap variables or arrays of different types
--------------------------------------------------------------------------
This error can be reported on a SWAP statement. It means that an
attempt has been made to swap two items of incompatible types, for
example, an integer variable and a string variable or an integer
array and a floating point array.

(Error)  Type mismatch: floating point array wanted
---------------------------------------------------
This error can show up, for example, in a matrix multiplication
operation where one of the operands contains floating point
numbers but the other one does not. It can also be reported when
trying to assign a value to a floating point array.

(Error)  Type mismatch: integer array wanted
--------------------------------------------
This error can be reported in, for example, a matrix
multiplication operation where one of the matrices contains
integer values but the other one is, for example, a string. It can
also be reported when assigning a value to an integer array.

(Error)  Type mismatch: number or string wanted
-----------------------------------------------
This means that a numeric or string variable is needed but that is
not what was found. This error can be produced, for example, on an
INPUT statement if the item to be read is an array.

(Error)  Type mismatch: number wanted
-------------------------------------
A number is required but the interpreter found something else, for
example, a string. This error can be produced in a number of
places, for example, array indices have to be numeric values.

(Error)  Type mismatch: number wanted for PROC/FN parameter no. <value>
-----------------------------------------------------------------------
An error was found in a procedure of function call. The parameter
supplied for the given parameter position should be numeric but
something else was found instead, for example, a string.

(Error)  Type mismatch: numeric array wanted
--------------------------------------------
This error is reported when a numeric array is required for an
operation but the interpreter found something else.

(Error)  Type mismatch: numeric variable wanted
-----------------------------------------------
This can typically show up in a FOR statement where the loop
control variable has to be numeric.

(Error)  Type mismatch: string array wanted
-------------------------------------------
A string array is required, for example, following the TO part of
an OSCLI...TO statement, but the interpreter found something else
instead.

(Error)  Type mismatch: string wanted
-------------------------------------
This is a very common error to see. A string was required for an
operation but something else, for example, a numeric value, was
found instead.

(Error)  Type mismatch: string wanted for PROC/FN parameter no. <value>
-----------------------------------------------------------------------
An error was found in a procedure or function call when evaluating
the parameters of the call. The parameter at the given position
should be a string but something else was found instead.

(Error)  Unable to read from file
---------------------------------
This message indicates that an error occured when trying to read
from a file that the interpreter could not deal with.

(Error)  Unable to write to file
--------------------------------
This messaeg indicates that an error occured when trying to write
to a file that the interpreter could not deal with.

(Fatal)  Unexpected signal (<value>) received
---------------------------------------------
This message should never appear. If it does then something has
gone wrong internally with the interpreter.

(Error)  Unrecognisable operand
-------------------------------
This error message indicates that there is a syntax error in an
arithmetic expression. The interpreter has found something that
cannot be used as an operand.

(Fatal)  Unsupported Basic V feature found
------------------------------------------
This message says that the interpreter has come across a version
or feature of a Basic V statement that it does not support, for
example, the USR function can only be used for certain specific
purposes and anything else results in this error being flagged. 

(Fatal)  Unsupported Basic V statement type found
-------------------------------------------------
The interpreter does not support all of the Basic V statements,
for example, the OVERLAY statement is not supported.

(Warning)  Value entered is not a legal token value
---------------------------------------------------
Tokens are keywords such as 'IF' but in the form that the
interpreter uses internally. It is possible to type these in
directly from the keyboard. This message is produced if this is
attempted but the value typed in is not that used for a token.

(Warning)  Value of HIMEM must be in the range END to end of the Basic workspace
--------------------------------------------------------------------------------
This messages says that the value to assigned to HIMEM is outside
the allowable range. HIMEM can only be set to a value that puts it
somewhere between the end of the Basic program's variables (given
by the function END) and the end of the Basic workspace.

(Warning)  Value of LOMEM must be in the range TOP to end of the Basic workspace
--------------------------------------------------------------------------------
This says that the value to assigned to LOMEM is outside the
allowable range. LOMEM can only be set to a value that puts it
somewhere between the top of the Basic program (given by the
function TOP) and the end of the Basic workspace.

(Warning)  Value of PAGE must lie in the Basic workspace
--------------------------------------------------------
PAGE gives the location in the Basic workspace where the Basic
program begins. It can be set to point at any location in the
workspace. This message is produced if an attempt is made to
change it to a value that lies outside the workspace.

(Error)  Variable after 'NEXT' is not the control variable of the current 'FOR' loop
------------------------------------------------------------------------------------
The keyword NEXT can be followed by the name of the control
variable of the FOR statement at the start of the FOR loop
currently being executed. This message says that the name supplied
after the NEXT does not match.

(Error)  Variable name expected
-------------------------------
This message says that there is an error in the statement being
executed. The name of a variable was required but something else
was found instead.

(Fatal) VDU commands cannot be used as output is not to a screen
----------------------------------------------------------------
The output produced by the PRINT and VDU statements usually goes
to the screen but can be redirected to a file. VDU commands cannot
be used in a program when output is being sent to a file as they
would be meaningless.

(Warning)  Warning: '"' missing
-------------------------------
When reading a line of the Basic program from either a file or the
keyboard, the interpreter has found a character string that has no
terminating '"'.

(Warning)  Warning: bad binary constant
---------------------------------------
The interpreter has found the start of a binary constant (a '%')
in the Basic program but there are no digits after the %.

(Warning)  Warning: bad hexadecimal constant
--------------------------------------------
The interpreter has found the start of a hexadecimal constant (a
'&') in the Basic program but there are no digits after the &.

(Warning)  Warning: could not find line <value> when renumbering program
------------------------------------------------------------------------
When renumbering the lines of the Basic program, the interpreter
found a reference to a line number on a statement (for example, on
a GOTO or GOSUB statement) that it could not find in the Basic
program.

(Warning)  Warning: exponent is too large
-----------------------------------------
The exponent in a floating point constant is too large. The limit
is about 10 to the 308.

(Warning) Warning: Floating point number format is not known
------------------------------------------------------------
This message is one that should never appear. In the highly
unlikely case that it does, it will be displayed when the program
first starts and means that the interpreter cannot identify the
format of floating point numbers used by the processor on which
the program is being run. This does not affect the normal
operation of the program and can be ignored in the vast majority
of cases. However, if files are being written using 'PRINT#' that
contain floating point numbers and these files are being read on
other types of machine, then there is a chance that the numbers
will be read incorrectly on the other machine. If the file is read
on the machine on which it was created or another one of the same
type then there is no problem. It only becomes an issue if the
file is moved between different machine types.

(Warning)  Warning: line number is outside the range 0..65279
-------------------------------------------------------------
The interpreter has found a line number that is outside the range
0 to 65279. This can be either the number of a line or a reference
to a line in, for example, a GOTO statement.

(Warning)  Warning: number of '(' in line exceeds the number of ')'
-------------------------------------------------------------------
When reading a line of a program from a file or from the keyboard,
the number of '(' in the line was found to be greater than the
number of ')'.

(Warning)  Warning: number of '(' in line is less than the number of ')'
------------------------------------------------------------------------
When reading a line of a program from a file or from the keyboard,
the number of '(' in the line was found to be less than the number
of ')'.

(Warning)  Warning: '(' and ')' are nested incorrectly
------------------------------------------------------
The interpreter found that brackets were incorrectly nested when
reading a line of a program from a file or from the keyboard.


