#adptwv (* Pre-process with filter *)
(*
PASCAL BASED MINI-LISP
File: PASN.RED - Trailer File
ChangeDate: 5:39am Saturday, 26 September 1981
By: M. L. Griss
Add Hooks for CATCH/THROW
All RIGHTS RESERVED
COPYRIGHT (C) - 1981 - M. L. GRISS
Computer Science Department
University of Utah
Do Not distribute with out written consent of M. L. Griss
*)
(* pasN.PAS ---- the last file to be appended, close CATCH, do init *)
BEGIN (* Body of Catch *)
IF initphase=0 THEN (* Kludge to get into scope of CATCH *)
BEGIN init; initphase := 1; firstp; END
ELSE BEGIN
#p initphase:=initphase+1; (* ??? *)
idspace[xthrowing].val := nilref;
catch_stk:=st; (* Capture Stack *)
catch_bstk:=idspace[xbstack].val; (* Capture Bstack *)
xeval;
#p initphase:=initphase-1; (* ??? *)
(* Return Point *)
#adv 9999:
IF idspace[xthrowing].val <> nilref
THEN BEGIN
st:=catch_stk;
r[2]:=catch_bstk;
xunbindto; (* return value, old stack *)
END;
END
END (* catch *);
BEGIN (* Top Level *)
initphase := 0;
r[1] := nilref;
Xcatch;
#d break(tty);
end.