mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
697 lines
32 KiB
Plaintext
Executable File
697 lines
32 KiB
Plaintext
Executable File
|
||
|
||
--- THE LISP STEPPER ---
|
||
|
||
(FOR MORE INFORMATION THAN PROVIDED HERE CONTACT THE AUTHOR:
|
||
MATTHEW MORGENSTERN M.I.T. NE43-317 253-3546
|
||
OR :MAIL TO MM; @ML:)
|
||
|
||
TO LOAD: FROM LISP EXECUTE (FASLOAD STEPMM FASL COM).
|
||
|
||
|
||
NOTE: THE STEPPER HAS BEEN MODIFIED TO WORK IN BOTH OLDIO AND
|
||
NEWIO LISP ENVIRONMENTS. AN ENDPAGEFN IS PROVIDED
|
||
WITHIN THE STEPPER FOR NEWIO AND IT MAY BE CHANGED BY
|
||
GIVING A DIFFERENT VALUE TO THE ATOM MMSTEP-ENDPAGEFN .
|
||
THIS IS ALSO THE NAME OF THE INITIAL ENDPAGEFN, AND IT
|
||
CAN BE USED OUTSIDE THE STEPPER TOO BY DOING
|
||
(ENDPAGEFN T 'MMSTEP-ENDPAGEFN).
|
||
|
||
|
||
TO CURRENT USERS:
|
||
A NEW INTERESTING DISPLAY MODE IS NOW AVAILABLE, SEE THE
|
||
S COMMAND. OTHER NEW COMMANDS INCLUDE (U -), PATTERN MATCHING
|
||
FOR AN S-EXPRESSION IN A (COND ...), E(VAL), WTALL (WAIT-ALL),
|
||
WTIF (WAIT-IF), AND VARIABLE LENGTH PAUSING WHILE IN A AND C
|
||
MODES.
|
||
|
||
|
||
I CAPABILITIES
|
||
|
||
THE LISP STEPPER PACKAGE PROVIDES DEBUGGING CAPABILITIES
|
||
FOR INTERPRETED LISP PROGRAMS THAT ARE COMPARABLE TO THE CAPABILITIES
|
||
PROVIDED BY DDT FOR ASSEMBLER CODE. THESE CAPABILITIES INCLUDE:
|
||
|
||
1) SINGLE STEPPING THROUGH THE EVALUATION OF A FUNCTION AND
|
||
OVER OR INTO OTHER INTERPRETED FUNCTIONS, WHEN CALLED, ON A
|
||
SELECTIVE BASIS AS DETERMINED BY THE USER. EACH SUCH FORM
|
||
AND ITS RESULTING VALUE MAY BE DISPLAYED.
|
||
|
||
2) DYNAMIC BREAKPOINTING ON ONE OR MORE OF THE FOLLOWING
|
||
CONDITIONS: THE S-EXPRESSION OR ATOM ABOUT TO BE EVALUATED
|
||
MATCHES A PATTERN YOU PROVIDE; A SPECIFIC FUNCTION IS EXPLICITLY
|
||
EVAL'D; A GIVEN ATOM EVALUATES TO A GIVEN VALUE; A GIVEN ATOM
|
||
IS TO BE BOUND IN A PROG, EITHER TYPE OF DO, OR AN EVAL'D
|
||
LAMBDA; OR UPON AN ARBITRARY USER-SPECIFIED CONDITION.
|
||
|
||
3) RETURNING A DIFFERENT VALUE FOR A GIVEN S-EXPRESSION --
|
||
THIS ALLOWS FOR CHANGING THE ACTION THAT WOULD BE INITIATED BY
|
||
CONDITIONALS IN THE PROGRAM AND/OR BY GO'S IN A PROG OR DO.
|
||
YOU CAN ALSO "GO" TO ANY <TAG> INSIDE THE CURRENT PROG.
|
||
|
||
4) THESE CAPABILITIES MAY BE REQUESTED WHEN THE INITIAL
|
||
FUNCTION IS STARTED, OR THEY MAY BE INITIATED AT ANY
|
||
OTHER POINT IN THE COURSE OF EXECUTION -- EITHER FROM THE
|
||
CONSOLE WHILE IN A BREAKPOINT, OR DIRECTLY FROM THE PROGRAM.
|
||
|
||
|
||
II HOW TO USE
|
||
|
||
THE STEPPER MAY BE INVOKED INITIALLY BY USING THE
|
||
FUNCTION MEV AS ONE WOULD USE EVAL OF ONE ARGUMENT; EG.
|
||
(MEV '(FCN ARG1 ARG2)). FROM A BREAKPOINT OR IN A PROGRAM,
|
||
THE STEPPER MAY BE TURNED ON BY INVOKING (HKSTART) WITH NO
|
||
ARGUMENTS. IT MAY BE TURNED OFF BY THE Q COMMAND DESCRIBED
|
||
BELOW, OR OF COURSE BY CONTROL-G. AFTER MEV EVALUATES ITS
|
||
ARGUMENT, IT RETURNS THE VALUE AND TURNS OFF THE STEPPER.
|
||
NOTE THAT IN THE ABOVE EXAMPLE THE FORM TO MEV WAS QUOTED.
|
||
IF, SAY, THE VALUE OF F WAS THE S-EXPRESSION (FCN ARG1 ARG2),
|
||
THEN ONE COULD USE (MEV F) INSTEAD.
|
||
|
||
AT ANY POINT DURING THE STEPPING, ONE MAY INSPECT THE
|
||
VALUES OF OTHER VARIABLES, AND EVEN REAPPLY MEV TO ANY FORM.
|
||
THIS MAY BE DONE IN EITHER OF THREE WAYS. EACH COMMAND WILL BE
|
||
PROMPTED FOR BY // , USUALLY FOLLOWING THE LAST FORM PRINTED
|
||
OUT. ANY S-EXPRESSION THAT YOU TYPE WHICH IS NOT RECOGNIZED AS
|
||
A COMMAND WILL BE EVAL'D (WITHIN AN ERRSET TO CATCH ERRORS).
|
||
ALTERNATIVELY, YOU CAN USE THE E COMMAND TO EVAL ANY EXPRESSION,
|
||
OR THE H COMMAND TO GET A NICE TYPE OF CONTROL-H BREAK.
|
||
|
||
EACH COMMAND MUST BE FOLLOWED BY A SPACE (UNLESS THE
|
||
COMMAND IS A LIST). EACH FORM AND RESULT WHICH IS
|
||
PRINTED OUT WILL BE FOLLOWED BY #<NUMBER> INDICATING THE
|
||
RELATIVE LEVEL OF EVALUATION (IE. STACK DEPTH SINCE INVOCATION).
|
||
|
||
|
||
THE PRIMARY COMMANDS ARE:
|
||
|
||
D (MNEMONIC FOR DOWN) GO DOWN TO THE NEXT DEEPER LEVEL OF
|
||
EVALUATION AND DISPLAY THE FIRST FORM THERE BEFORE EVALUATING
|
||
IT. EG. IF THE FORM IS A FUNCTION CALL, WILL DISPLAY THE FIRST
|
||
ARGUMENT OF THE FUNCTION IF IT HAS ARGUMENTS IN THE CALL;
|
||
ELSE WILL DISPLAY THE FIRST S-EXP OF THE FUNCTION.
|
||
THEN PROMPTS FOR THE NEXT COMMAND.
|
||
|
||
E (EVAL) CAN BE USED TO EVAL AN ARBITRARY EXPRESSION. IT
|
||
STARTS A NEW LINE, WAITS FOR YOU TO TYPE THE EXPRESSION,
|
||
THEN EVAL'S IT WITHIN AN ERRSET, AND PRINTS THE RESULT.
|
||
COMPARABLE TO JUST TYPING THE EXPRESSION OR ATOM AFTER
|
||
THE //, BUT CANNOT BE CONFUSED WITH A COMMAND, AND THE
|
||
FORMAT IS NICER.
|
||
|
||
H (CONTROL-H) EXECUTES A CONTROL-H BREAK, AND WHEN $P'ED
|
||
DISPLAYS THE CURRENT FORM. WITHIN THE BREAK, ONE CAN
|
||
INSPECT THE VALUES OF VARIABLES, ETC., AND EVEN REAPPLY MEV
|
||
TO ANY FORM.
|
||
|
||
N (NEXT) DISPLAY THE NEXT FORM (IE. S-EXP) AT THIS LEVEL,
|
||
WITHOUT SHOWING OR INSPECTING THE EVALUATION OF THE LOWER
|
||
LEVELS OF THE CURRENT FORM. THE VALUE OF THE CURRENT FORM
|
||
IS DISPLAYED FIRST. IF YOU WISH A CONDITION TO BE TESTED FOR
|
||
AT LOWER LEVELS, USE NN INSTEAD.
|
||
|
||
NN LIKE N BUT SLOWER SINCE IT INSPECTS THE LOWER LEVELS.
|
||
USE INSTEAD OF N WHEN TESTING FOR A CONDITION.
|
||
|
||
U (UP) GO UP TO THE NEXT HIGHER LEVEL OF EVALUATION AND SHOW
|
||
THE NEXT FORM AT THAT LEVEL. THE FORM(S) AT THE CURRENT AND
|
||
LOWER LEVELS ARE EVALUATED WITHOUT DISPLAY. AS AN EXAMPLE
|
||
OF ITS USE, AFTER YOU HAVE SEEN THE EVALUATION OF THE
|
||
ARGUMENTS TO A FUNCTION, THE NEXT FORM TO BE EVALUATED, IF
|
||
THE FUNCTION IS BEING INTERPRETED, WILL BE THE FIRST
|
||
S-EXPRESSION OF THE FUNCTION; TO AVOID SEEING HOW THE
|
||
FUNCTION IS EVALUATED INTERNALLY, YOU CAN TYPE U .
|
||
NOTE THAT THE LOWER LEVELS ARE NOT INSPECTED -- THUS
|
||
IF A CONDITION IS TO BE TESTED FOR AT THESE LEVELS, USE UU.
|
||
|
||
(U <NUM>) IF <NUM> IS POSITIVE (INCL. 0), FORMS ARE NOT
|
||
INSPECTED NOR DISPLAYED UNTIL THAT LEVEL NUMBER IS RETURNED
|
||
TO. IF NEGATIVE, GOES UP THIS NUMBER (ABSOLUTE VALUE) OF
|
||
LEVELS RELATIVE TO THE CURRENT LEVEL. THUS (U -1) IS
|
||
EQUIVALENT TO U .
|
||
|
||
UU LIKE U BUT SLOWER. USE IF TESTING FOR A CONDITION.
|
||
|
||
(UU <NUM>) LIKE (U <NUM>) BUT SLOWER. USE IF TESTING FOR A
|
||
CONDITION.
|
||
|
||
Q (QUIT) EXIT FROM THE STEPPER.
|
||
|
||
S (SHOW OR DISPLAY MODE) FOR DATAPOINTS AND OTHER DISPLAY
|
||
CONSOLES, THIS GIVES A NICE EASY READING OUTPUT
|
||
OF SELECTED LEVELS THAT CONSTITUTE THE CONTEXT OF THE
|
||
CURRENT EVALUATION. SPECIFICALLY, IT SELECTS THE CURRENT
|
||
LEVEL FOR SPRINTING AS A "HEADER", AND AS YOU GO DEEPER, THE
|
||
LOCAL CONTEXT IS ABBREVIATE-PRINTED UNDER THIS HEADER, AND
|
||
THE CURRENT OUTPUT WILL BE SPRINTED. S MAY BE USED AS OFTEN
|
||
AS YOU LIKE. HEADERS WILL AUTOMATICALLY BE POPPED WHEN YOU
|
||
RETURN . THE COMMAND (S <NUM>) SELECTS A PARTICULAR LEVEL
|
||
AS A HEADER. IT AND THE COMMAND SN AND SEVERAL USER
|
||
SETTABLE PARAMETERS ARE DESCRIBED IN THE MORE DETAILED
|
||
SECTION BELOW.
|
||
|
||
(= <S-EXP>) THE S-EXPRESSION IS SUBSTITUTED FOR THE CURRENT
|
||
FORM AND ANOTHER COMMAND IS PROMPTED FOR (IE. YOU CAN STEP
|
||
INTO OR OVER THE NEW FORM IF YOU WANT TO). WHEN THE
|
||
RESULTING VALUE IS RETURNED IT WILL BE AS IF THE
|
||
ORIGINAL FORM HAD YIELDED THAT VALUE. FOR
|
||
EXAMPLE YOU CAN CHANGE THE APPARENT TRUTH OR FALSITY OF
|
||
PREDICATES OR BYPASS A (GO <LABEL>), AS WELL AS JUST RETURN-
|
||
ING DIFFERENT VALUES FOR AN S-EXPRESSION.
|
||
|
||
(COND ...) TESTS FOR CONDITIONS PRIOR TO EVALUATION OF EACH
|
||
FUTURE FORM, AND WHEN SATISFIED WILL PRINT A MESSAGE,
|
||
DISPLAY THE FORM, AND WAIT FOR ANOTHER COMMAND (WHICH
|
||
MAY OF COURSE BE H FOR A BREAK). THE ARGUMENT TO THIS
|
||
"COND" IS AN ARBITRARY S-EXPRESSION OR ATOM WHICH IS
|
||
EVALUATED LIKE A PREDICATE (SIMILAR TO THAT IN THE
|
||
TRACE PACKAGE).
|
||
IN SPECIFYING THE PREDICATE, THE FORM ABOUT TO BE
|
||
EVALUATED MAY BE OBTAINED AS THE VALUE OF %%FORM. THE
|
||
FUNCTION (HOOKLEVEL) RETURNS THE RELATIVE LEVEL OF EVALUATION.
|
||
MORE THAN ONE ARGUMENT MAY BE GIVEN, IN WHICH CASE
|
||
THEY ARE OR'ED TOGETHER, EXCEPT WHEN TWO ARGUMENTS FORM A
|
||
SPECIAL TEST AS DESCRIBED IN THE MORE DETAILED SECTION BELOW.
|
||
THE CONDITION WILL REMAIN ACTIVE AT ALL LEVELS THAT ARE
|
||
INSPECTED BY THE STEPPER UNTIL EXPLICITLY TURNED OFF BY
|
||
(COND NIL).
|
||
|
||
(MATCHF ...) IS A FUNCTION WHICH WILL PATTERN MATCH AGAINST
|
||
THE CURRENT FORM, AND MAY BE USED IN THE PREDICATE OF THE
|
||
COND. (ALSO SEE ITS RELATED USE AS A COMMAND.) THE ARGUMENT
|
||
TO MATCHF IS COMPARED TO %%FORM ELEMENT BY ELEMENT FROM LEFT
|
||
TO RIGHT, AND SUCCEEDS WHEN EACH ELEMENT OF THE PATTERN
|
||
SUCCEEDS. OF IMPORTANCE, THE PATTERN NEED NOT INCLUDE THE
|
||
ENTIRE S-EXPRESSION OF %%FORM. * MATCHES ANYTHING. THE
|
||
PROCEDURE IS APPLIED RECURSIVELY TO SUBLISTS, UNLESS THE
|
||
SUBLIST IS OF THE FORM (# ...) IN WHICH CASE # IS BOUND TO
|
||
THE CURRENT ELEMENT OF %%FORM AND THE CDR (NOT CADR) OF THE
|
||
#-LIST IS EVAL'D AS THE TEST ON THAT ELEMENT. EXCEPT IN THIS
|
||
CASE, ATOMS AND LISTS SHOULD BE GIVEN AS IN THE ORIGINAL CODE
|
||
AS THEY ARE NOT EVALUATED. SOME SIMPLE EXAMPLES ARE:
|
||
(MATCHF XYZ) SUCCEEDS IF THE ATOM XYZ IS ABOUT TO BE EVAL'D
|
||
(MATCHF (SETQ ALPHA)) SUCCEEDS IF THE ATOM ALPHA IS ABOUT TO
|
||
BE SETQ'D.
|
||
(MATCHF (PUTPROP NAME * 'SOURCE)) SUCCEEDS IF THE PROPERTY
|
||
SOURCE IS ABOUT TO BE PUTPROP'D ON THE ATOM POINTED TO
|
||
BY (IE. THE VALUE OF) NAME.
|
||
(MATCHF (SETQ (# MEMBER # '(ALPHA BETA S3)))) SUCCEEDS IF
|
||
EITHER ALPHA, BETA, OR S3 ARE ABOUT TO BE SETQ'D.
|
||
(MATHCF (RPLACD * '(* 9))) FOR EXAMPLE MATCHES
|
||
(RPLACD (LAST URLIST) '(2 9 4))
|
||
(MATHCF ((# MEMBER # '(FOO BAR)))) SUCCEEDS IF A FUNCTION
|
||
CALL TO EITHER FOO OR BAR IS ABOUT TO BE EVAL'D (MORE
|
||
PRECISELY IF THE CAR OF THE LIST ABOUT TO BE EVAL'D
|
||
IS EITHER FOO OR BAR).
|
||
|
||
|
||
NIL (COND NIL) TURNS THE CONDITION OFF AND SAVES THE
|
||
CURRENT NON-NIL CONDITION.
|
||
|
||
(COND) WHEN NO ARGUMENT IS GIVEN, THE LAST NON-NIL CONDITION
|
||
(WHICH IS THE 'OLD PROPERTY OF '%%COND) IS ESTABLISHED
|
||
AS THE CURRENT CONDITION (WHICH IS THE VALUE OF
|
||
%%COND). (IF THE PREVIOUS CONDITION WAS NOT NIL THEN
|
||
IT IS SAVED AS THE 'OLD PROPERTY, THUS ALLOWING FOR
|
||
ALTERNATION OF TWO CONDITIONS.)
|
||
|
||
(MATCHF ...) IS EQUIVALENT TO (COND (MATCHF ...)), SEE ABOVE.
|
||
|
||
|
||
RELATED FUNCTIONS:
|
||
|
||
(HKSTART) WILL INITIATE STEPPING WHEN ENCOUNTERED IN A PROGRAM
|
||
OR TYPED FROM A BREAKPOINT. (HKSTOP) WILL ACT LIKE THE Q
|
||
COMMAND TO TURN OFF STEPPING. (ALSO SEE BELOW FOR MORE INFO.)
|
||
|
||
(MBAK) IS A FUNCTION TO BE USED LIKE THE LISP SYSTEM'S
|
||
(BAKLIST). (MBAK) STRIPS OUT FROM THE RESULT OF (BAKLIST)
|
||
THOSE FUNCTIONS THAT HAVE TO DO WITH THE STEPPER.
|
||
|
||
|
||
-------------------------
|
||
|
||
|
||
III COMPLETE LIST OF COMMANDS:
|
||
|
||
COMMANDS WHICH ARE NOT LISTS MUST BE FOLLOWED BY A SPACE.
|
||
YOU CAN USE RUBOUT BEFORE COMPLETING THE COMMAND (AND ITS SPACE
|
||
IF NECESSARY). ALTERNATIVELY YOU MAY ABORT THE COMMAND
|
||
BEFORE COMPLETING IT BY DOING CONTROL-X.
|
||
|
||
ANY S-EXPRESSION THAT YOU TYPE WHICH IS NOT RECOGNIZED AS A
|
||
COMMAND WILL BE EVAL'D (WITHIN AN ERRSET TO CATCH ERRORS). THUS
|
||
YOU CAN EVALUATE ANY ATOM OR DO ANY FUNCTION CALL SIMPLY BY
|
||
TYPING IT FOLLOWING THE PROMPTING // SO LONG AS IT IS NOT
|
||
INTERPRETABLE AS ONE OF THE COMMANDS BELOW (OR NIL). NOTE THAT
|
||
YOU CAN ACTUALLY "GO" TO A <TAG> WITHIN YOUR PROGRAM SIMPLY BY
|
||
TYPING (GO <TAG>) AFTER THE //. TO EVALUATE A FORM WHICH LOOKS
|
||
LIKE A COMMAND, TYPE (OR <S-EXP>) TO EVALUATE IT, EG. (OR A)
|
||
EVALUATES THE ATOM A. (IF YOU WISH YOU CAN EVEN WRITE FUNCTIONS
|
||
WITH REGARD TO THE STEPPER AND TREAT THEM AS COMMANDS.)
|
||
|
||
|
||
A (ALL) AUTOMATICALLY DISPLAYS ALL FORMS AND VALUES SEEN BY
|
||
THE STEPPER AT ALL LEVELS. TYPING A SPACE AT ANY TIME
|
||
THEREAFTER WILL CAUSE THE STEPPER TO LEAVE THIS MODE AND
|
||
PROMPT FOR A NEW COMMAND. IF YOU WANT THE STEPPER TO WAIT
|
||
FOR A COMMAND AFTER EACH FORM, YOU CAN USE THE D COMMAND.
|
||
COMMANDS A AD (A -) C AND CC PAUSE AFTER EACH NEW FORM
|
||
IS DISPLAYED IF %%AC-SLEEP IS NON-NIL, ITS VALUE IS USED AS
|
||
THE SLEEP TIME IN SECONDS.
|
||
|
||
AD (ALL DOWN) AUTOMATICALLY DISPLAYS ALL FORMS AND VALUES
|
||
ENCOUNTERED BY THE STEPPER IN EVALUATING THE CURRENT FORM
|
||
(IE. AT DEEPER LEVELS). TYPING A SPACE PRIOR TO COMPLETION
|
||
WILL CAUSE THE STEPPER TO LEAVE THIS MODE AND PROMPT FOR A
|
||
NEW COMMAND. (ALSO SEE D.) SLEEPS AFTER EACH FORM, AS
|
||
DESRIBED UNDER THE A COMMAND.
|
||
|
||
(A <LEV>) AUTOMATICALLY DISPLAYS ALL FORMS AND VALUES AT THE
|
||
INDICATED LEVEL AND LOWER (DEEPER) LEVELS, TURNING ITSELF
|
||
OFF WHEN EVALUATION POPS TO A LEVEL WITH A SMALLER LEVEL
|
||
NUMBER. TYPING A SPACE PRIOR TO COMPLETION WILL CAUSE
|
||
THE STEPPER TO LEAVE THIS MODE AND PROMPT FOR A NEW
|
||
COMMAND. (ALSO SEE D.) SLEEPS AFTER EACH FORM, AS
|
||
DESRIBED UNDER THE A COMMAND.
|
||
|
||
B SETS A BREAKPOINT TO OCCUR AFTER EVALUATION OF THE CURRENT
|
||
FORM. AT THE BREAK, THE VALUE TO BE RETURNED IS THE VALUE
|
||
OF %%VALUE, AND MAY BE CHANGED BY SETQING THIS VARIABLE.
|
||
THE FORM THAT YIELDED THIS VALUE IS THE VALUE OF %%FORM.
|
||
DO $P TO PROCEED FROM THE BREAKPOINT. IF YOU PREFER THE
|
||
SYSTEM TO WAIT RATHER THAN BREAK SEE THE WTIF COMMAND.
|
||
(B OPERATES BY ADDING THE CURRENT HOOKLEVEL TO
|
||
%%BREAKLIST.) YOU CAN GET AUTOMATIC BREAKING AT ALL LEVELS
|
||
BY USING (RETCOND T) OR CONDITIONAL BREAKING AS DESCRIBED
|
||
BELOW FOR THE (RETCOND ...) COMMAND.
|
||
|
||
C (CURRENT) AUTOMATICALLY DISPLAYS ALL FORMS AND VALUES AT
|
||
JUST THE CURRENT LEVEL. TYPING A SPACE AT ANY TIME DURING
|
||
THE DISPLAY WILL CAUSE THE STEPPER TO LEAVE THIS MODE AND
|
||
PROMPT FOR A NEW COMMAND. THE STEPPER DOES NOT INSPECT
|
||
THE FORMS OF LOWER LEVELS -- THUS IF A CONDITION IS TO
|
||
BE TESTED FOR AT THESE LEVELS, USE CC. SLEEPS AFTER EACH
|
||
FORM, AS DESRIBED UNDER THE A COMMAND.
|
||
|
||
CC LIKE C, BUT INSPECTS THE LOWER LEVELS.
|
||
|
||
CTOG FLIPS THE %%CONDNOTALLOW TOGGLE WHICH IS INITIALLY T,
|
||
MEANING DO NOT ALLOW C, M, N, OR U COMMANDS IF A CONDITION
|
||
IS BEING TESTED FOR. NIL MEANS ALLOW THESE ANYWAY.
|
||
|
||
(COND ...) TESTS FOR CONDITIONS PRIOR TO EVALUATION OF EACH
|
||
FUTURE FORM. FOR PATTERN MATCHING AGAINST THE FORM USING
|
||
THE MATCHF FUNCTION AND FOR OTHER INFOR. ALSO SEE THE
|
||
DESCRIPTION OF (COND ...) IN SECTION II ABOVE.
|
||
|
||
SPECIAL TESTS FOR (COND ...) :
|
||
TO AID THE SPECIFICATION OF COMMON TESTS, THE FOLLOWING
|
||
"FLAGS" ARE PROVIDED -- THE SAME EFFECTS COULD BE OBTAINED
|
||
BY INSPECTING %%FORM IN YOUR OWN PREDICATE GIVEN TO "COND".
|
||
IF THE FIRST ARGUMENT TO THE COND IS FROM THE SET:
|
||
(FORM FORMQ BIND BINDQ ATOMVAL ATOMVALQ
|
||
FCN FCNQ AND ANDQ)
|
||
THEN THE SECOND ARGUMENT IS USED TO DERIVE A TEST.
|
||
THIS PROCESS IS REPEATED WITH THE REMAINING ARGUMENTS,
|
||
IF ANY. THE RESULTING TESTS, TOGETHER WITH ANY
|
||
REMAINING ARGUMENTS NOT SATISFYING THIS PROCESS, ARE
|
||
EFFECTIVELY OR'ED TOGETHER TO DERIVE THE OVERALL
|
||
CONDITION (EXCEPT FOR THE "AND ANDQ FLAG" SPECIAL TESTS
|
||
WHICH ARE AND'ED). THE ARGUMENTS ARE NOT EVALUATED WHEN
|
||
TYPED BUT ARE EVAL'D EACH TIME THE CONDITION IS TESTED.
|
||
THESE FLAGS EACH MAY BE USED MORE THAN ONCE.
|
||
THE MEANING OF THESE FLAGS ARE:
|
||
|
||
ANDQ THE NEXT ARGUMENT IS AND'ED WITH THE REMAINING
|
||
TESTS, AND MUST YIELD A NON-NIL VALUE FOR THE
|
||
REMAINDER OF THE CONDITION TO SUCCEED. (SEE THE
|
||
COMMENTS FOR COND IN THE "COMPLETE LIST OF
|
||
COMMANDS" BELOW REGARDING THE USE OF SIDE EFFECTS)
|
||
ATOMVALQ THE NEXT ARGUMENT SHOULD BE A LIST OF TWO
|
||
ELEMENTS, THE FIRST AN (UNQUOTED) NAME OF AN ATOM,
|
||
AND THE SECOND THE VALUE OF THIS ATOM FOR THE TEST
|
||
TO SUCCEED.
|
||
BINDQ WATCH FOR THE FOLLOWING (UNQUOTED) ATOM
|
||
TO BE BOUND IN A PROG, OR IN EITHER TYPE OF DO, OR
|
||
AN EXPLICITLY "EVAL'D" LAMBDA (AS DISTINCT FROM AN
|
||
"APPLY'D" LAMBDA OR FUNCTION CALL).
|
||
FCNQ WATCH FOR THE FOLLOWING (UNQUOTED) FUNCTION NAME
|
||
TO BE SEEN BY "EVAL" AS THE "CAR" OF THE FORM
|
||
ABOUT TO BE EVALUATED (CANNOT CHECK FOR "APPLY'D"
|
||
OR "MAP'D" FUNCTION CALLS).
|
||
FORMQ THE FOLLOWING (UNQUOTED) S-EXP IS TO BE WATCHED
|
||
FOR. EG.USE TO CHECK WHEN AN ATOM IS ABOUT TO BE
|
||
EVALUATED.
|
||
|
||
AND : THESE EVALUATE THEIR ARGUMENT EACH TIME THE
|
||
BIND : CONDITION IS TESTED IN ORDER TO GET THE DESIRED
|
||
FCN : S-EXP OR ATOM NAME, AND THEN PERFORM LIKE THEIR
|
||
FORM : "Q" COUNTERPARTS. PARTICULARLY USEFUL IF THE
|
||
: FLAG'S ARGUMENT IS THE VALUE OF AN ATOM.
|
||
: (BE SURE NOT TO CHANGE THE ATOM'S VALUE ACCIDENT-
|
||
: ALLY WHILE THE CONDITION REMAINS IN EFFECT.)
|
||
ATOMVAL SIMILARLY, EVALUATES THE CAR OF ITS ARGUMENT TO GET
|
||
THE ATOM NAME, AND THEN ACTS LIKE ATOMVALQ.
|
||
|
||
|
||
AS A SIMPLE EXAMPLE, (COND FCNQ RPLACD) WILL CHECK AND
|
||
STOP WHEN THE FUNCTION RPLACD IS ABOUT TO BE EVALUATED
|
||
(IE. WHEN IT IS THE THE "CAR" OF THE FORM TO BE EVAL'D).
|
||
|
||
|
||
THE COMMANDS C, M, N, AND U DO NOT INSPECT ALL
|
||
LEVELS, AND THUS THE CONDITION CANNOT BE TESTED FOR AT
|
||
THESE LEVELS. YOU CAN USE CC, NN, MM, OR UU INSTEAD, OR
|
||
USE THE CTOG COMMAND. NATURALLY, CONDITION TESTING SLOWS
|
||
THE SPEED OF EXECUTION AT LEVELS THAT ARE INSPECTED BY
|
||
THE STEPPER BUT WHICH YOU DO NOT HAVE DISPLAYED.
|
||
IF YOU CHOOSE TO, YOU CAN HAVE YOUR PREDICATES
|
||
PRODUCE SIDE-EFFECTS SUCH AS RECORDING INFORMATION OF VALUE
|
||
TO YOU OR SETTING STATES FOR USE BY THE CONDITION LATTER.
|
||
YOU CAN USE THE AND ANDQ FLAGS (MORE THAN ONCE IF
|
||
YOU LIKE) TO HAVE THE EXPRESSIONS EXECUTED EVEN UPON
|
||
SUCCESS, SO LONG AS THESE FLAGS APPEAR FIRST IN THE
|
||
CONDITION. OTHER CONDITIONS ARE EVALUATED IN THE ORDER
|
||
OF APPEARANCE UNTIL THE FIRST SUCCESS IS FOUND.
|
||
|
||
D (DOWN) DISPLAYS THE NEXT LEVEL DOWN (AS DESCRIBED ABOVE ALSO).
|
||
NOTE THAT IF THE FORM IS AN ATOM, THE EFFECT IS THE SAME
|
||
AS THE N COMMAND. HENCE IF YOU WANT THE STEPPER TO DISPLAY
|
||
EVERY FORM AND VALUE, BUT TO WAIT FOR A COMMAND AFTER EACH
|
||
FORM, JUST KEEP USING THE D COMMAND.
|
||
|
||
E (EVAL) CAN USE TO EVAL AN ARBITRARY EXPRESSION. IT STARTS
|
||
A NEW LINE, WAITS FOR YOU TO TYPE IT, THEN EVAL'S IT WITHIN
|
||
AN ERRSET, AND PRINTS THE RESULT. COMPARABLE TO JUST
|
||
TYPING THE EXPRESSION OR ATOM AFTER THE //, BUT CANNOT BE
|
||
CONFUSED WITH A COMMAND, AND THE FORMAT IS NICER.
|
||
|
||
(= <S-EXP>) REPLACES THE CURRENT FORM WITH THE GIVEN
|
||
S-EXPRESSION, AND THEN PROMPTS FOR ANOTHER COMMAND,
|
||
AS DESCRIBED ABOVE. IF TWO ARGUMENTS ARE GIVEN, THEN
|
||
THIS EXPRESSION WILL NOT BE TREATED AS A STEPPER COMMAND,
|
||
RATHER IT WILL BE EVALUATED (SEE COMMENTS AT TOP OF THIS
|
||
SECTION).
|
||
|
||
H CONTROL-H BREAK IS EXECUTED. CURRENT FORM IS REDISPLAYED
|
||
WHEN $P IS DONE. THE FORM ABOUT TO BE EVALUATED IS THE
|
||
VALUE OF %%FORM. WITHIN THE BREAK, ONE CAN INSPECT
|
||
THE VALUES OF VARIABLES, ETC., AND EVEN REAPPLY MEV TO
|
||
ANY FORM.
|
||
|
||
K (KILL) DOES NOT EVALUATE THE CURRENT FORM NOR DISPLAY
|
||
ANY VALUE. EG. GOOD FOR AVOIDING SIDE EFFECTS IF
|
||
RESTEPPING THROUGH A PROGRAM AGAIN. EQUIVALENT TO (= NIL)
|
||
FOLLOWED BY M COMMAND.
|
||
|
||
LR (LAST RESULT) A COMPLETE RATHER THAN ABBREVIATED PRINTOUT
|
||
OF THE LAST RESULT IS GIVEN. (SEE (P - -) FOR FURTHER INFO)
|
||
|
||
M NEXT, LIKE N BUT THE RESULT OF THE CURRENT FORM IS NOT
|
||
DISPLAYED. IF A CONDITION IS TO BE TESTED FOR AT LOWER
|
||
LEVELS, USE MM.
|
||
|
||
(MATCHF ...) IS EQUIVALENT TO (COND (MATCHF ...)), SEE THE
|
||
THE DESCRIPTION OF (COND ...) IN SECTION II ABOVE.
|
||
|
||
MM NEXT, LIKE NN BUT THE RESULT OF THE CURRENT FORM IS NOT
|
||
DISPLAYED
|
||
|
||
N (NEXT) DISPLAYS THE VALUE OF THE CURRENT FORM AND DISPLAYS
|
||
THE NEXT FORM, THEN AWAITS THE NEXT COMMAND. DOES NOT
|
||
INSPECT THE LOWER LEVELS. IF A CONDITION IS TO BE TESTED
|
||
FOR AT LOWER LEVELS, USE NN INSTEAD.
|
||
|
||
NN LIKE N BUT INSPECTS THE LOWER LEVELS.
|
||
|
||
O (OLD) DOES (MEV '<LAST FORM>). USEFUL FOR SEEING HOW A
|
||
FORM PRODUCED AN UNEXPECTED VALUE WHEN YOU WENT OVER IT
|
||
WITH N OR NN. IF REEVALUATING THE FORM CAN PRODUCE SIDE
|
||
EFFECTS BE CAREFUL. CAN BE EXITED FROM BY THE XX COMMAND.
|
||
(THE OLD FORM IS THE VALUE OF %%OLDFORM.)
|
||
|
||
OL (OLD, AT CURRENT LEVEL) DOES (MEV '<LAST FORM AT THIS
|
||
LEVEL>). BEHAVES LIKE O. USEFUL TO SEE THE FORM (AT
|
||
THIS LEVEL) WHICH PRODUCED THE CURRENT VALUE -- RATHER
|
||
THAN THE LAST FORM PRINTED OUT, AS O WOULD YIELD.
|
||
(THE OLD FORM USED HERE CAN BE OBTAINED BY
|
||
(GET %%HOOKLEVEL 'OLDFORM).)
|
||
|
||
P (PRINT) REDISPLAYS THE CURRENT FORM. EG. USEFUL IF YOU
|
||
WISH TO CLEAR SCREEN FIRST WITH CONTROL-L. GIVES TYPICAL
|
||
ABBREVIATED DISPLAY (SEE (P - -)), EXCEPT HAS SOMEWHAT
|
||
DIFFERENT EFFECT IF IN DISPLAY MODE (SEE S COMMAND).
|
||
(FOR HACKERS OF SPECIAL DATA STRUCTURES, EG "OWL",
|
||
PRINTING WILL BE DONE WITH THE FUNCTION WHICH IS THE
|
||
VALUE OF THE ATOM PRIN1 IF NON-NIL -- AS ALSO APPLIES
|
||
TO TOP-LEVEL IN LISP. THIS VALUE OF PRIN1 IS CHECKED
|
||
ONLY IN MEV FUNCTION. MOREOVER, UNLESS YOU REQUEST
|
||
LISP NOT TO "SNAP LINKS" IN COMPILED CODE, YOU MAY HAVE
|
||
TO RELOAD THE STEPPER AFTER CHANGING PRIN1. TO AVOID
|
||
THE RELOADING MESSAGES HAVE FASLOAD = NIL.)
|
||
|
||
PP (FULL PRINT) GIVES A COMPLETE PRINTOUT OF THE CURRENT FORM.
|
||
3
|
||
PPP (P , IE. EVEN BETTER PRINTOUT) PRETTY-PRINTS THE CURRENT
|
||
FORM USING THE SPRINT FUNCTION. USES A LOT OF SCREEN IN
|
||
GENERAL, AND SO WILL PAGEPAUSE FOR YOU.
|
||
|
||
(P - -) RESETS THE PARAMETERS FOR THE ABBREVIATED PRINTOUT USED
|
||
FOR RESULTS, FORMS AND THE P COMMAND. FIRST PARAMETER IS
|
||
THE PRINLEVEL, THE SECOND IS PRINLENGTH (AS IN THE LISP
|
||
MANUAL); BOTH MUST BE GIVEN. IF NIL IS GIVEN INSTEAD OF A
|
||
NUMBER NO ABBREVIATING IS DONE WITH RESPECT TO THAT
|
||
PARAMETER; THUS (P NIL NIL) TURNS OFF ABBREVIATING. (THE
|
||
CURRENT SETTINGS ARE THE VALUE OF %%HOOKPRIN.)
|
||
|
||
Q (QUIT) EXITS FROM THE STEPPER. PREVIOUSLY REQUESTED BREAKS
|
||
AND CONDITIONS ARE DISABLED, AND ANY NON-NIL CONDITIONS
|
||
ARE SAVED ON THE 'OLD PROPERTY OF THE CONDITON NAME.
|
||
(CONTROL-G ALSO EXITS AS USUAL.)
|
||
|
||
S (SHOW OR DISPLAY MODE) FOR DATAPOINTS AND OTHER DISPLAY
|
||
CONSOLES, THIS GIVES A NICE EASY READING OUTPUT
|
||
OF SELECTED LEVELS THAT CONSTITUTE THE CONTEXT OF THE
|
||
CURRENT EVALUATION. SPECIFICALLY, IT SELECTS THE CURRENT
|
||
LEVEL FOR SPRINTING AS A "HEADER", AND AS YOU GO DEEPER,
|
||
THE LOCAL CONTEXT IS ABBREVIATE-PRINTED UNDER THIS HEADER,
|
||
AND THE CURRENT OUTPUT WILL BE SPRINTED. S MAY BE USED AS
|
||
OFTEN AS YOU LIKE. HEADERS WILL AUTOMATICALLY BE POPPED
|
||
WHEN YOU RETURN. ALL SPRINTING IS DONE WITH PAGEPAUSE ON.
|
||
IF CONTROL-X IS TYPED DURING SPRINTING, THAT EXPRESSION
|
||
WILL BE REDISPLAYED USING ABBREVIATED-PRINTING INSTEAD.
|
||
WHEN IN THIS DISPLAY MODE, THE P COMMAND WILL CLEAR THE
|
||
SCREEN FROM THE LAST FORM DOWN, UNLESS PRECEEDED BY
|
||
CONTROL-L (OR IF WRAP-AROUND OCCURRED), IN WHICH CASE THE
|
||
SCREEN IS FULLY REDISPLAYED. ALSO SEE (S <ARG>) FOR MORE
|
||
INFORMATION AND OPTIONS.
|
||
|
||
(S <ARG>) IF <ARG> IS POSITIVE, SELECTS THE FORM AT THAT LEVEL
|
||
AS THE "HEADER" FOR S(HOW) MODE. IF NEGATIVE, USES THE
|
||
FORM AT <ARG> LEVELS ABOVE THE CURRENT ONE. IF <ARG> IS
|
||
NIL, DISPLAY MODE IS TURNED OFF (HEADERS ARE REMEMBERED
|
||
THO). (S T) JUST TURNS DISPLAY MODE ON IF CURRENTLY OFF
|
||
USING THE PREVIOUSLY REMEMBERED HEADERS IF STILL APPLICABLE
|
||
; BUT IF ALREADY ON, THIS POPS THE STACK OF HEADERS BY ONE
|
||
(NORMALLY HEADERS ARE AUTOMATICALLY POPPED WHEN THE LEVEL
|
||
RETURNED FROM). ALL SPRINTING IS DONE WITH PAGEPAUSE ON.
|
||
IF CONTROL-X IS TYPED DURING SPRINTING, THAT EXPRESSION
|
||
WILL BE REDISPLAYED USING ABBREVIATED-PRINTING INSTEAD.
|
||
ALSO SEE SN COMMAND.
|
||
SEVERAL PARAMETERS ARE USER SETTABLE FROM THEIR
|
||
DEFAULTS. %%LOWERDISPLAY AND %%LOWERDISPLAY-MIN CONTROL
|
||
THE MAX AND MIN NUMBER OF LEVELS TO DISPLAY BELOW THE
|
||
HEADER (DEFAULTS OF 5 AND 2). THIS IS DONE IN IN
|
||
ABBREVIATE-PRINTED FORM USING %%SHORTPRIN WHICH IS A
|
||
LIST OF THE PRINLEVEL AND PRINLENGTH (DEFAULT 3 3).
|
||
SPRINTING OF FORMS AND RESULTS WILL BE ABBREVIATE-SPRINTED
|
||
BY THE MSPRINT FUNCTION IF THE FLATSIZE OF THE EXPRESSION
|
||
EXCEEDS %%FLATSIZE-MAX (DEFAULT ABOUT 450). THE PRINLEVEL
|
||
AND PRINLENGTH FOR THE LATTER ARE THE LIST %%SPRINTABBR
|
||
(DEFAULT IS 7 8). IF %%FLATSIZE IS NIL, FULL SPRINTING
|
||
WILL ALWAYS BE USED; (IF NEGATIVE, ABBREVIATE SPRINTING
|
||
WILL ALWAYS BE USED SO THAT INFINITE PRINTING
|
||
CIRCULAR STRUCTURES WILL SPRINT AND ABBREVIATE-PRINT
|
||
FINITELY -- REQUESTED BY SUN; FOR "OWL" WORKERS).
|
||
TO TURN OFF SPRINTING OF RESULTS SETQ
|
||
%%RESULT-SPRINT TO NIL (DEFAULT T). IF %%MDISTITLE IS
|
||
NEITHER NIL OR A NUMBER, IT WILL BE EVAL'D JUST AFTER THE
|
||
SCREEN IS CLEARED, ALLOWING PRINTING OF A TITLE. IF IT IS
|
||
A NUMBER, THAT NUMBER OF BLANK LINES WILL BE LEFT AT THE
|
||
TOP OF THE SCREEN (ALSO SEE SVIEWMSG FUNCTION BELOW).
|
||
IF THE PARTIAL CLEARING OF THE SCREEN BOTHERS YOUR EYES,
|
||
SETQ'ING %%EYESTRAIN1 TO A NUMBER OF SECONDS (EG 0.5
|
||
TO 2.0) WILL SLOW DOWN THE NEW DISPLAY DEPENDING ON THE
|
||
NUMBER OF LINES CLEARED.
|
||
|
||
SN JUST FOR S(HOW) DISPLAY MODE. IT PREVENTS CLEARING OF THE
|
||
SCREEN AFTER PROMPTING FOR ANOTHER COMMAND, BUT ONLY UNTIL
|
||
THE NEXT PROMPTING // AFTER THAT. USEFUL IF YOU WANT A
|
||
RESULT TO REMAIN DISPLAYED A LITTLE LONGER. IF YOU WANT TO
|
||
PREVENT CLEARING OF THE SCREEN FOR MORE THAN A COUPLE OF
|
||
TIMES, USE (S NIL), THEN DO (S T) WHEN YOU WANT TO RESUME
|
||
DISPLAY MODE.
|
||
|
||
(RETCOND ...) TESTS FOR CONDITIONS JUST AFTER EACH FORM IS
|
||
EVALUATED, AND BREAKS WHEN SUCH CONDITION IS SATISFIED.
|
||
AT THE BREAK, THE VALUE TO BE RETURNED IS THE VALUE
|
||
OF %%VALUE, AND MAY BE CHANGED BY SETQING THIS VARIABLE.
|
||
THE FORM THAT YIELDED THIS VALUE IS THE VALUE OF %%FORM.
|
||
DO $P TO PROCEED FROM THE BREAKPOINT. THE CONDITIONS ARE
|
||
SPECIFIED AS FOR (COND ...) NOTE THAT (RETCOND T) WILL
|
||
GIVE YOU A BREAK AS EACH LEVEL IS POPPED (RETURNED FROM),
|
||
INCLUDING LEVELS ABOVE THE ONE WHERE THE REQUEST WAS
|
||
MADE. (RETCOND NIL) DISABLES THE RETCOND. IF YOU PREFER
|
||
WAITING RATHER THAN BREAKING SEE THE WTIF COMMAND.
|
||
ALSO, TWO ADDITIONAL FLAGS ARE AVAILBLE:
|
||
VALUEQ THE TEST (EQUAL %%VALUE <NEXT-ARGUMENT>) IS
|
||
PERFORMED AS IF IT WERE ANDED WITH THE REMAINING
|
||
PREDICATES IN THE CONDITION.
|
||
VALUE LIKE VALUEQ BUT THE TEST IS
|
||
(EQUAL %%VALUE (EVAL <NEXT-ARGUMENT>)) .
|
||
THE OVERALL CONDITION IS MAINTAINED ON THE ATOM %%RETCOND,
|
||
AND THE PREVIOUS NON-NIL CONDITION IS ON THE 'OLD PROPERTY
|
||
OF THIS ATOM. IF YOU WANT BOTH COND AND RETCOND CONDITIONS
|
||
TO BE THE SAME YOU CAN (SETQ %%RETCOND %%COND). THE VALUE
|
||
AND VALUEQ PREDICATES WILL BE IGNORED IN A (COND ...).
|
||
|
||
U (UP) GO UP TO NEXT HIGHER LEVEL. CURRENT AND LOWER LEVELS
|
||
ARE EXECUTED WITHOUT DISPLAY. THE LOWER LEVELS ARE NOT
|
||
INSPECTED -- THUS IF A CONDITION IS TO BE TESTED FOR AT
|
||
THESE LEVELS, USE UU. CAN BE USED TO SKIP THE DISPLAY
|
||
OF A FUNCTION'S INTERNAL EVALUATION AFTER HAVING
|
||
SEEN THE ARGUMENTS, AS DESCRIBED IN THE PREVIOUS SECTION.
|
||
|
||
(U <NUM>) IF <NUM> IS POSITIVE (INCL. 0), FORMS ARE NOT
|
||
INSPECTED NOR DISPLAYED UNTIL THAT LEVEL NUMBER IS REACHED.
|
||
IF NEGATIVE, GOES UP THIS NUMBER (ABSOLUTE VALUE) OF LEVELS
|
||
RELATIVE TO THE CURRENT LEVEL. THUS (U -1) IS EQUIVALENT
|
||
TO U .
|
||
|
||
UU LIKE U, BUT ALSO INSPECTS LOWER LEVELS. USE IF YOU
|
||
HAVE A CONDITION TO BE TESTED.
|
||
|
||
(UU <NUM>) LIKE (U <NUM>) BUT SLOWER. USE IF TESTING FOR A
|
||
CONDITION. NOTE THAT (UU -999) EFFECTIVELY MEANS THAT
|
||
YOU WON'T SEE ANY LEVELS UNLESS THE CONDITION IN A COND
|
||
OR RETCOND IS SATISFIED.
|
||
|
||
WTAL (WAIT-ALL) FLIPS A TOGGLE WHICH WHEN ON CAUSES A PAUSE
|
||
AFTER THE EVALUATION OF EVERY FORM, BUT BEFORE THAT VALUE
|
||
IS RETURNED. THE SYSTEM WAITS FOR AN INPUT CHARACTER.
|
||
TYPING Y(ES), B(REAK), OR H (FOR CONTROL-H) FOLLOWED BY
|
||
SPACE WILL CAUSE A BREAK AS WOULD THE B COMMAND. TYPING
|
||
JUST A SPACE, OR ANY OTHER CHARACTER FOLLOWED BY A SPACE,
|
||
WILL PROCEED FROM THE PAUSE. DEFAULT IS OFF.
|
||
|
||
WTIF (WAIT-IF) FLIPS A TOGGLE WHICH WHEN ON CAUSES REQUESTS BY
|
||
THE B AND (RETCOND ...) COMMANDS TO RESULT IN A PAUSE
|
||
RATHER THAN A BREAK. THE PAUSE IS LIKE THAT OF THE WTAL
|
||
COMMAND, AND MAY BE PROCEEDED BY A SPACE; OR A BREAK
|
||
INITIATED BY TYPING Y, B, OR H FOLLOWED BY A SPACE.
|
||
DEFAULT IS OFF.
|
||
|
||
XX DOES A CONTROL-X TYPE OF LISP QUIT.
|
||
(A CONTROL-X TYPED AFTER THE // PROMPTER WILL BE CAUGHT
|
||
BY AN ERRSET. THE XX COMMAND IS EXECUTED OUTSIDE OF THAT
|
||
ERRSET.)
|
||
|
||
|
||
|
||
|
||
OTHER FACILITIES:
|
||
|
||
(GETHKLEVEL <NO.>) THIS FUNCTION RETURNS THE S-EXPRESSION
|
||
THAT IS ON THE EXECUTION STACK OF THE STEPPER AT THE GIVEN
|
||
LEVEL NUMBER (SEE HKSHOW). CAN BE USED TO GET AN
|
||
UNSPRINTED UNABBREVIATED DISPLAY OF THE FORM OR TO RECORD
|
||
OR PROCESS THE FORM AS YOU DESIRE, INCLUDING REAPPLICATION
|
||
OF MEV TO IT IN THE CURRENT CONTEXT.
|
||
|
||
(HKSHOW <NO.>) THIS FUNCTION WILL DISPLAY PREVIOUS FORMS WHICH
|
||
ARE ON THE EXECUTION STACK, AS SEEN BY THE STEPPER WHILE
|
||
IT HAS BEEN ACTIVATED. THE PREVIOUS <NO.> OF LEVELS ARE
|
||
SHOWN, WITH THE CURRENT FORM LAST. IF NO ARGUMENT IS
|
||
GIVEN, THEN ALL LEVELS ARE SHOWN. THE DISPLAY IS DONE UNDER
|
||
THE CONTROL OF PRINLEVEL AND PRINLENGTH WHICH ARE SETTABLE
|
||
BY THE (P - -) COMMAND. OF COURSE THIS FUNCTION CAN ALSO
|
||
BE USED AS IF IT WERE A COMMAND BY TYPING IT AFTER THE
|
||
PROMPTING // .
|
||
|
||
(HKSPRINT <NO.>) THIS FUNCTION WILL SPRINT THE FORM ON THE
|
||
LEVEL WHOSE NUMBER IS GIVEN AS THE ARGUMENT. CAN ALSO
|
||
BE USED AS A COMMAND.
|
||
|
||
(HKSTART) USE THIS FUNCTION TO INVOKE OR REINVOKE THE STEPPER
|
||
FROM A BREAKPOINT OR FROM A PROGRAM AS DESCRIBED ABOVE.
|
||
IF USED WITHIN A BREAK, TYPE (HKSTART) BY ITSELF
|
||
RATHER THAN WITHIN ANOTHER S-EXPRESSION OR FUNCTION,
|
||
AS IT HAS TO CLIMB THE STACK FROM THE POINT OF INVOCATION.
|
||
IF AN ARGUMENT IS GIVEN TO THIS FEXPR, IT WILL BE EVAL'D
|
||
JUST PRIOR TO ESTABLISHING STEPPING, WITH ^W BOUND TO NIL,
|
||
-- EG. YOU CAN PRINT OUT INFOR. IF CALLED FROM A PROGRAM.
|
||
(IT IS POSSIBLE FOR THE INVOCATION OF THE
|
||
STEPPER BY THIS METHOD TO HAVE LIMITED SCOPE UNDER
|
||
SOME CIRCUMSTANCES. SUCH A BOUNDARY WOULD BE
|
||
A SECOND BREAKPOINT HIGHER ON THE STACK OR A PREVIOUSLY
|
||
TERMINATED INVOCATION OF THE STEPPER THAT IS STILL ON THE
|
||
STACK. ALSO IF THE PROGRAM WAS INITIALLY STARTED WITHOUT
|
||
MEV, AND STEPPING IS RETAINED THOUGHOUT THE REST OF THE
|
||
EXECUTION, STEPPING MAY ALSO REMAIN FOR FORMS TYPED AT TOP
|
||
LEVEL -- TO STOP THIS JUST DO CONTROL-G (OR USE THE Q
|
||
COMMAND) .)
|
||
|
||
(HKSTOP) THIS FUNCTION TURNS OFF THE STEPPER WHENEVER EXECUTED
|
||
-- IN THE SAME MANNER AS THE Q COMMAND WOULD.
|
||
|
||
HOOKLIST IS AN ATOM WHOSE VALUE IS INSPECTED BEFORE
|
||
EACH ATTEMPT TO READ A COMMAND FROM THE CONSOLE.
|
||
IF HOOKLIST IS NON-NIL, IT IS ASSUMMED TO BE A
|
||
LIST OF COMMANDS TO THE STEPPER -- EACH IS PRINTED OUT WHEN
|
||
USED AND TREATED AS IF IT CAME FROM YOUR TYPEIN. HOOKLIST
|
||
IS ALSO EXAMINED AT EACH LEVEL THAT IS INSPECTED BY THE
|
||
STEPPER EVEN IF NO COMMAND READING IS DONE (EG. NN OR UU
|
||
MODES).
|
||
|
||
(MBAK) THIS FUNCTION GIVES (BAKLIST) BUT WITHOUT THE STEPPER
|
||
FUNCTIONS, AS DESCRIBED ABOVE.
|
||
|
||
(MEV <TOP-FORM>) THIS FUNCTION INITIATES STEPPING AND OTHERWISE
|
||
ACTS LIKE EVAL OF ONE ARGUMENT, AS DESCRIBED ABOVE.
|
||
|
||
(MSPRINT <FORM>) GIVES "ABBREVIATED" SPRINTING OF THE <FORM>.
|
||
A SECOND AND THIRD NUMERIC ARGUMENT SPECIFY THE EFFECTIVE
|
||
PRINLEVEL AND PRINLENGTH HERE, ELSE A LIST OF TWO NUMBERS
|
||
FOUND AS THE VALUE OF MSPRINT ARE USED. THE CURRENT
|
||
IMPLEMENTATION IS SOMEWHAT SLOW AS THE REGULAR SPRINT DOES
|
||
NOT RESPOND TO STANDARD ABBREVIATING.
|
||
|
||
(SVIEWMSG <LINENO.> <TOEVAL>) USEFUL IN CONJUNCTION WITH S(HOW)
|
||
MODE. PUTS THE CURSOR AT THE <LINENO.> AND EVAL'S THE
|
||
SECOND ARGUMENT, THEN RETURNS THE CURSOR TO ITS ORIGINAL
|
||
POSITION BEFORE THE CALL. <LINENO.> = 0 MEANS TOP; IF
|
||
NEGATIVE COUNTS FROM BOTTOM, WITH -1 THE BOTTOM LINE.
|
||
TYPICALLY HAVE %%MDISTITLE (SEE (S -) COMMAND) BE A NUMBER
|
||
TO SKIP LINES ON TOP, AND USE SVIEWMSG TO DISPLAY
|
||
YOUR DEBUG INFOR. UP THERE.
|
||
|
||
|
||
IF YOU REALLY WANT SPECIALIZED PROCESSING IN PARTICULAR
|
||
SITUATIONS, YOU CAN INSPECT AND/OR CHANGE %%FORM IN A (COND ...)
|
||
PREDICATE, AND %%VALUE IN A (RETCOND ...). IF %%NOHOOKFLAG
|
||
IS T, FORM AND VALUE PRINTOUT AND COMMAND READING (EXCEPT FROM
|
||
A NON-NIL HOOKLIST) IS INHIBITED UNTIL IT IS RESET TO NIL.
|
||
NORMAL COMMAND PROCESSING IS INVOKED BY (%%MHOOKCOM) WITH
|
||
%%NOHOOKFLAG BOUND TO NIL. ALSO DESCRIBED ABOVE ARE
|
||
%%BREAKLIST, %%COND, %%RETCOND, AND %%HOOKPRIN.
|
||
|
||
|
||
DECEMBER 2, 1974 UPDATED MARCH 1976.
|
||
|
||
|
||
(c) Copyright 1974, 1975, and 1976 by Matthew Morgenstern,
|
||
Massachusetts Institute of Technology.
|
||
|
||
|
||
|