{ PURPOSE
{   Defines the calling sequence for a condition handler.  A condition handler
{   is a procedure which is executed when a condition occurs for which it has
{   been established.
{
{ DESIGN
{   CONDITION: Information on the specific condition that occurred.  The
{     selector will one of the conditions for which the handler was established
{     and never the values pmc$condition_combination or pmc$all_conditions.
{
{   CONDITION_DESCRIPTOR: Additional information optionally provided for user
{     conditions.  The specific meaning depends upon the user condition.  This
{     is normally NIL.
{
{   SAVE_AREA: A pointer to the stack frame save area of the procedure which
{     caused the condition.  Depending on the condition, the P address in the
{     save area may be that of the instruction causing the condition or the
{     instruction following.
{
{   STATUS: This is NOT the ordinary status variable.  It MUST NOT be set to
{     NORMAL upon entry or exit or used as the status variable on any call
{     except to PMP$CONTINUE_TO_CAUSE where it MUST be used.

  TYPE
    pmt$condition_handler = ^procedure
          (    condition {input} : pmt$condition;
               condition_descriptor {input} : ^pmt$condition_information;
               save_area {input, output} : ^ost$stack_frame_save_area;
           VAR status {output} : ost$status);

*copyc ost$stack_frame_save_area
*copyc ost$status
*copyc pmt$condition
*copyc pmt$condition_information

