DEIMOS Fault Messages There are three main classes of fault messages output by DEIMOS, they are 1) Compiler run time messages 2) Loader error messages 3) System detected error messages. 1) Compiler run time messages. These 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: F A U L T n where 'n' has the following values. 'n' Meaning 1 Excess Blocks. NB: only produced inside string handling routine 2 Symbol in Data. 'READ' routine. 3 String inside out. 4 Not used 5 No switch label. 6 Capacity exceeded. Strings only. 25 An input file does not exist. 26 Syntax fault on the Input/Output definitions string. 27 Read or Write a block to the disc failed (e.g. illegal block, aborted transfer etc). 28 The Disc is full or the users directory is full. 2) Loader error messages. These messages are produced when the loader attempts to load a file and fails. The format is:- fault n where 'n' has the following meanings. 'n' Meaning 1 The free core is insufficient to load the program. 2 Format of the initial block of the program is wrong - it is too short. 3 Ditto - but is too long. 4 The checksum on a block is wrong. NB: This can also be generated when the end of a file is reached prematurely. 5 Out of Range. The program is attempting to load into a non-existent part of its VM. 6 End of file. EOF is reached before the final binary block is seen. 7 System Full. The maximum number of tasks is already loaded. In addition the following messages are also output. ERROR MESSAGES no FRED - an attempt was made to load the file 'FRED' but it didn't exist or wasn't Binary. TASK? - a command has been issued to a Task which doesn't exist. INFORMATION MESSAGES STOPPED - a program, under the control of the loader, has stopped normally. NB. 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. F A U L T n - See the earlier section. TERM REQ. - a 'KILL' has been given to a task and it has stopped. XXXX PURGED - a 'PURGE' has been issued to a TASK and has been carried out. 3) System Detected Error Messages. These messages are issued when the system notices that A TASK has misbehaved in some way. The format in each case is the same:- <TASK NAME>:<ERROR MESSAGE> The following messages are used: BAD SEGMENT a b The 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. ADDRESS ERROR This 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. ILLEGAL INSTRUCTION Same as above except the task attempted to execute an illegal instruction. It is also fatal to the task. ILLEGAL SVC The task has called a SVC that is not recognised by the system. It will normally be fatal. BAD SER The 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. TIME FAULT The task has attempted to request the clock to kick it more than once. It is not fatal but indicates problems with the code. NOT READ! n This 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.