$A INVERT=0; INVO=0 $A LINE=76; PAGE=0; MARK=2 $A CAP=0; CAPO=0; CAPSH=0; CAPSHO=0 $A TAB=4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68 $L1M DEIMOS $B2$T0%Fault$ Messages $P1There are three main classes of fault messages output by DEIMOS, they are $A INDENT=3 $B1$T3$C-3 1)$T3Compiler run time messages $B0$T3$C-3 2)$T3Loader error messages $B0$T3$C-3 3)$T3System detected error messages. $A INDENT=1 $B2$T0 1)$T1Compiler run time messages. $P1These messages are produced when the compiler run time support code detects an error. The program is stopped and the error number is returned to the %task$ which$ started$ the$ program$ up. This task will normally be the loader and the error message is produced in the form: $B1$T2F A U L T n $B1$T1where 'n' has the following values. $A INDENT=3 $B1$T1 'n' $T3Meaning $B0$T1$C+1 1$T3Excess Blocks. NB: only produced inside string handling routine $B0$T1$C+1 2$T3Symbol in Data. 'READ' routine. $B0$T1$C+1 3$T3String inside out. $b0$T1$C+1 4$T3Not used $B0$T1$C+1 5$T3No switch label. $B0$T1$C+1 6$T3Capacity exceeded. Strings only. $B1$T1 25$T3An input file does not exist. $B0$T1 26$T3Syntax fault on the Input/Output definitions string. $B0$T1 27$T3Read or Write a block to the disc failed (e.g. illegal block, aborted transfer etc). $B0$T1 28$T3The Disc is full or the users directory is full. $A INDENT=1 $B2$T0 2)$T1Loader error messages. $P1These messages are produced when the loader attempts to load a file and fails. $B1The format is:- $B1$T3fault n $B1where 'n' has the following meanings. $A INDENT=3 $B1$T1'n'$T3Meaning $B0$T1$C+1 1$T3The free core is insufficient to load the program. $B0$T1$C+1 2$T3Format of the initial block of the program is wrong - it is too short. $B0$T1$C+1 3$T3Ditto - but is too long. $B0$T1$C+1 4$T3The checksum on a block is wrong. NB: This can also be generated when the end of a file is reached prematurely. $B0$T1$C+1 5$T3Out of Range. The program is attempting to load into a non-existent part of its VM. $B0$T1$C+1 6$T3End of file. EOF is reached before the final binary block is seen. $B0$T1$C+1 7$T3System Full. The maximum number of tasks is already loaded. $A INDENT=1 $B1In addition the following messages are also output. $B1ERROR MESSAGES $A INDENT=5 $B1$T1no FRED$T5$C-2 - an attempt was made to load the file 'FRED' but it didn't exist or wasn't Binary. $B0$T1TASK?$T5$C-2 - a command has been issued to a Task which doesn't exist. $B2$T1INFORMATION MESSAGES $B1$T1STOPPED $T5$C-2 - a program, under the control of the loader, has stopped normally. $A INDENT=2 $B2$T1NB. This message will only appear when this is more than one user task running in the System. When only one task is running and it stops the system prompt is issued. $A INDENT=5 $B2$T1F A U L T n $T5$C-2 - See the earlier section. $B0$T1TERM REQ. $T5$C-2 - a 'KILL' has been given to a task and it has stopped. $B0$T1XXXX PURGED$T5$C-2 - a 'PURGE' has been issued to a TASK and has been carried out. $A INDENT=1 $B2$T0 3)$T1System Detected Error Messages. $P1These messages are issued when the system notices that A TASK has misbehaved in some way. The format in each case is the same:- $B1$t4: $B1The following messages are used: $A INDENT=2 $B1$T2BAD SEGMENT a b $P1The named task has caused a segmentation trap by writing or reading outside its virtual memory. The two octal numbers 'a' and 'b' are the value of the error register and the PC at the time of the trap. This Message is fatal, the TASK cannot run any more and should be investigated (using DEBUG) or PURGEa to remove it. $B1$T2ADDRESS ERROR $P1This is the same as BAD SEGMENT, except that an address error was seen by the hardware (e.g. addressing a word on a non-word aligned boundary, or an illegal stack pointer). It is also fatal to the task. $B1$T2ILLEGAL INSTRUCTION $P1Same as above except the task attempted to execute an illegal instruction. It is also fatal to the task. $B1$T2ILLEGAL SVC $P1The task has called a SVC that is not recognised by the system. It will normally be fatal. $B1$T2BAD SER $P1The task has sent a message to a non-existent process. This is %not fatal, the task will continue to run but if it was expecting a reply it will never receive it. $B1$T2TIME FAULT $P1The task has attempted to request the clock to kick it more than once. It is not fatal but indicates problems with the code. $B1$T2NOT READ! n $P1This message is issued when a peripheral wants operator action, when this is done, a FREE or ABORT command should be sent to the task. The octal number 'n' is device dependant. $E