[net.micro.6809] OS9/68K F$STrap system call

angela@cernvax.UUCP (angela) (09/15/86)

I'd like to pose several questions concerning F$STrap to the os-9
experts.  I'm currently using OS-9/68K, version 1.2.

I'm writing several real-time processes which need to communicate with
MC68008-based boards via dual port memory.  It is conceivable (heaven-
forbid) that somebody could come along and pull out one of these boards,
causing a bus error the next time the cards dual-port memory is addressed.
I would like to use the F$STrap system call to catch the bus error and
do some other processing.  It would be nice to know which process and
which external I/O address caused the bus error (ie. tells me which board
shouldn't be addressed).

1.  Can anybody give me a clearer example than the documentation gives
    on how to use F$STrap when dealing with a bus error?  If possible
    could it include example register values and how the stack image
    would look too.

2.  Is it feasible to find out the process and external I/O address
    causing the bus error?  I can imagine a way of doing this by
    using the PC against the module directory information to identify
    the process and presumably, the address can be got from one of the
    address registers in the stack image.  This, however, sounds long-
    winded and complicated to me.

3.  How could I determine a suitable position to restart the erring process
    so that it can, at least, deal with other boards correctly, and
    ignore the faulty one?  (the process is written in C).  I don't
    really want to terminate the process and then restart it, as it has
    an initialisation phase I don't want repeating.

I would greatly appreciate any suggestions that may push me in the right
direction.

			      Angela Smith
			      CERN, Geneva

			      angela@cernvax.UUCP