Date: Wed, 14 Oct 1998 14:24:10 -0400 From: milendor@chicklet.east.sun.com (Michael Milendorf (Godin)) Subject: Item #448: The definition of ABORT" function is unclear P1275 Open Firmware Working Group Proposal -- Proposal #:448 Ver 1 Title: Clarification on ABORT" function description Author: Michael Milendorf Date: October 14, 1998 Ed/Tech: Technical Synopsis: The definition of ABORT" function is unclear Doc & Version: IEEE Std. 1275-1994 Problem: IEEE 1275-1994 explains the function of ABORT" in the following way: If flag is nonzero, display text and call abort. Equivalent to: -2 THROW The whole description is confusing and unclear. IEEE 1275 refers to definition of EXTENSION 9.6.2.0680 ANS Forth ABORT function. However the ANS Forth 9.6.2.0680 ABORT function description is not just "-2 THROW" but rather "Remove flag from the stack. If any bit of flag is non-zero, perform the function of -2 THROW, displaying ccc string if there is no exception frame on the exception stack". This explanation of the function implies that the text may not be displayed in all cases, but only when there will be no exception frame on the exception stack, which contradicts 1275 definition. Therefore we can conclude that the current 1275 description of ABORT" function is incorrect, because it says "display text" (in all cases). It looks like ANS Forth doesn't specify exactly how EXTENSION 9.6.2.0680 ABORT" function may behave. All following behavious are legally fell under the description of 9.6.2.0680 ABORT": If there is no exception frame on the exception stack: 1. Display text first, then execute ABORT. 2. Execute ABORT first, then the system displays text, because the system must provide an exception frame on the highest level to CATCH all possible THROWs. If there is an exception frame on the exception stack: 1. Display text first, then execute ABORT (ABORT is being intercepted half-way through by exception frame). 2. Execute ABORT first, then ABORT is being intercepted half-way through by exception frame. At this point the text may or may not be displayed by the user program. Finally, it is understood that for all ANS Forth words of IEEE 1275-1994, the 1275 descriptions may be rather casual and usually take a second priority after ANS Forth, when clarification is needed. However it would be undesirable to alter the meaning or functionality of any specific ANS Forth function, like ABORT", by providing too casual definition in IEEE 1275-1994 Std. document. Proposal: I would suggest to change the description of ABORT" function of IEEE 1275-1994 (p. 107) to the following text: The version of ABORT" defined by the ANS Forth EXCEPTION wordset applies. Another possibility would be to change IEEE 1275 ABORT description to clarify on all possible behavious, as described in the "Problem" section of the current proposal. [ P1275 Item #448 -- Received: Wed Oct 14 11:24:16 PDT 1998 ]