This is the declaration and comments associated with FaultHandler in the MCP 4.8 at 24620000.
PROCEDURE FAULTHANDLER (FAULTNUM,INFO);
VALUE FAULTNUM,INFO;
REAL FAULTNUM,INFO;
% FAULTHANDLER BECOMES PERMANENTLY RESIDENT AT INITIALIZATION
BEGIN [CONTROLSTATE, SEGMENT = SEGLOCUTIL]
%
% FAULTHANDLER TAKES CARE OF FAULT STATEMENTS IN USER AND MCP CODE.
%
% FAULT STATEMENTS COME IN TWO FLAVORS: THE GOTO
% VERSION AND THE PROCEDURE-CALL VERSION. IN EITHER CASE THE USER
% STATEMENT IS POINTED TO BY AN SIRW OR PCW FOUND IMMEDIATELY
% ABOVE A TAG 4 WORD. IN ADDITION THE USER MAY ASK TO HAVE THE
% STACKHISTORY AND/OR THE FAULT NUMBER STORED IN APPROPRIATE VARIABLES
% OF HIS CHOICE. IN THIS CASE THERE WILL BE ONE OR TWO WORDS BELOW
% THE TAG 4 WORD, AS INDICATED BY THE BITS FAULTHISTORF AND
% FAULTNUMREQF IN THE TAG 4 WORD. THESE WORDS WILL BE POINTERS TO THE
% VARIABLES WHERE THIS INFORMATION IS TO BE STORED. FOR THE GOTO
% VERSION FAULTHANDLER WILL CALL GOTOSOLVER TO BRANCH TO THE SPECIFIED
% STATEMENT. FOR THE PROCEDURE-CALL VERSION, FAULTHANDLER CALLS A
% PROCEDURE WITH EITHER TWO OR NO PARAMETERS, DEPENDING UPON
% FAULTNOPARAMF IN THE TAG 4 WORD:
% AS OF 35.40, THE ONLY CODE THAT KNEW ABOUT THE EXISTENCE OF
% THESE PARAMETERS IS EMITTED BY THE PL/I COMPILER, TO PASS THESE
% WORDS TO THE PLCONDITIONS INTRINSIC. PLCONDITIONS USES ONLY THE
% SECOND PARAMETER. IF ANY OTHER SOFTWARE BECOMES SENSITIVE TO
% THESE PARAMETERS, PLEASE UPDATE THIS COMMENT: THERE'S NO SIMPLE
% WAY TO FIND THEM. NOTE: THE PL/I COMPILER IS NO LONGER
% SHIPPED.
% THE NEWP COMPILER SUPPORTS THESE TWO PARAMETERS TOO.
% THE FIRST PARAMETER IS THE VALUE OF ENV_TOP IN HARDWAREINTERRUPT,
% IF HARDWAREINTERRUPT CALLED FAULTHANDLER; OTHERWISE IT IS ZERO.
% THE SECOND PARAMETER IS THE FAULTREASON, INCLUDING TAG6FAULTF.
%
% THE PARAMETERS TO FAULTHANDLER ARE AS FOLLOWS:
%
% FAULTNUM FAULTREASON (POSSIBLY INVALIDOPV & 1 TAG6FAULTF)
%
% ABS(INFO) STACK OFFSET OF THE HARDWARE INTERRUPT ACTIVATION
% RECORD (I.E. THE VALUE ENV_TOP WOULD HAVE IN HWI)
% OR ZERO (IF NOT CALLED FROM HARDWARE INTERRUPT).
% INFO.SIGNBITF SET CAUSES A DIAGNOSTIC DUMP, IF
% TAKEN, TO BE "ALLINUSE" RATHER THAN "PARTIAL".
%
% WHEN CALLING FAULTHANDLER ONE SHOULD APPROXIMATE THE FOLLOWING
% SEQUENCE OF CODE:
%
% SPIB[SNR,STOPPOINT]:= CONSTRUCT_STOPPOINT (MY_RCW,
% FAULTNUM, 0);
% FAULTHANDLER(FAULTNUM,0);
% DSEDHISTORY(FAULTCAUSE,FAULTNUM);
% MESSER(------------);
% PROCESSKILL;
%
% WARNING WHEN WE CALL USER PROCEDURE (FAULTSTMT) HE MIGHT CALL
% CHECKPOINT SO WE CANNOT LEAVE ANY DESCRIPTORS IN STACK.
%