The TDS9092 gives the following error messages. If the message
is followed by the usual 'ok' then it is a warning only. In the absence
of 'ok' then this was a true error and the procedure has aborted.
These are messages you may see during compilation or at run
time. If this is a syntax error compilation stops and the line number at which
the problem was identified is given. The actual error may be a few lines earlier.
word was found during execution. It should only be used when compiling.
Perhaps a colon is missing?
not part of the Forth error system. It indicates that the microprocessor
on the TDS9092 lost control through execution from an invalid address
or an undefined machine op-code. If this happens the hardware facilities
are used to safely re-enter the Forth system. The message indicates what
has happened. Although this is a warm restart there can be no guarantee
that the memory data remained intact while the microprocessor was running
out of control. When the application program is in EPROM the cold-start
word whose cfa is at address 08+ORIGIN will be re-entered after the error
message has been transmitted. This means that applications can be designed
to tolerate most crashes from spikes etc. The action to be taken on a
crash can be altered to something you define by changing the action of
the TRAP interrupt. See the section
for details. E.g. TRAP ASSIGN WORK will cause WORK to
be entered on a crash; this can do whatever you want.
is not enough room left in the dictionary for the proposed operation.
This message is given on executing WORD or
PAD or words containing these. The
value of the variable FENCE marking the end of available
dictionary may be too low. See DICTIONARY
ALLOCATION for details of dictionary allocation.
many items have been pulled off the data stack.
referenced word was found during compilation. It should only be used when
executing. Perhaps a semicolon is missing from the previous definition.
stack is close to overflowing. Check whether an extra unwanted parameter
is being left on the stack each loop.
An IF without
a THEN or
access to a block not allocated, see PORTABLE
USE OF MEMORY.
word shown has no pair, e.g. a LOOP without a
DO will give this error.
is already present, warning only. The new word will supersede the old
unless the new one is erased with FORGET.
number on the stack was illegal for word PICK or
ROLL or a word containing one of
these. Should be 1 or greater.
tried to FORGET a
word behind the protective fence. The fence is in address 1C +ORIGIN and can be changed.
word specified is not in the context or Forth vocabularies. If VLIST shows
it in the dictionary, then the word was never properly defined, e.g. the
compiler found a syntax error while trying to compile this word. Eliminate
SMUDGE FORGET cccc , where cccc is the word.
When the error comes from normal processing, not a CRASHED MACHINE,
your own error messages or actions can be defined by putting the Code Field
Address (cfa) of the word you want to execute into the user variable WARNING . (Normally this contains zero, which activates the above
CASE 1 OF ." Error type 1" ENDOF
2 OF ." Error type 2" ENDOF
3 OF ." Error type 3" ENDOF
: INITIALISE ' ERRORS CFA WARNING ! ;
If INITIALISE has been executed in the application program then the
word ?ERROR will
as defined above if the flag is set:
1 1 ?ERROR gives 'Error type 1'
1 2 ?ERROR gives 'Error type 2'
1 3 ?ERROR gives 'Error type 3'
0 2 ?ERROR gives no error, flag not set.
See CRASHED MACHINE above
for details on defining the action to be taken when the microprocessor loses
control because of electrical spikes, etc.