(DE -CMD- () (SETQ CHR (TYI)) (IF (AND (GE CHR 65) (LE CHR 90)) (SETQ CHR (+ CHR 32))) (SELECTQ (ASCII CHR) ("e" (TERPRI) (TPRINT '= (EVAL (READ))) (SELF)) ("a" (TERPRI) -CMD-) (" " (TERPRI) '(EVAL -E-)) ("p" (TERPRI) (TPRINT -E-) (SELF)) ("b" (TPRINT) (SETQ EV* (READ) STEP ()) -CMD-) ("l" (TPRINT) (SETQ -LVL- (READ) STEP ()) -CMD-) ("h" (LET ((-E- (REVERSE (CONS -E- -H-))) (-N- 1) (PRINTLENGTH 10)) (WHILE -E- (TERPRI) (-LVL-) (PRIN -N- '> (NEXTL -E-)) (INCR -N-))) (TPRINT) (SELF)) (T (PRINT "what?") (SELF)))) (DE TPRINT X (MAPC (LAMBDA (X) (PRIN X)) X) (PRIN '":") (TERPRI -1)) (DE EV* (-E-) (IF (AND (NULL STEP) (OR (EQ (1+ -N-) -LVL-) (AND (LISTP -E-) (EQ (CAR -E-) EV*)))) (PROGN (SETQ STEP T -LVL- 0 EV* ()) (SELF -E-)) (INCR -N-) (IFN STEP (SETQ -V- (EVAL -CMD-)) (-LVL-) (LET (PRINTLENGTH 10) (TPRINT -N- '> -E-)) (SETQ -V- (EVAL (-CMD-))) (OR STEP (NEQ -N- -LVL-) (SETQ STEP T -LVL- 0)) (IFN STEP () (-LVL-) (TPRINT -N- '< -V-) (-CMD-))) (NEXTL -H-) (DECR -N-) -V-)) (DE -LVL- () (OUTPOS (IF (< -N- 30) -N- 30))) (DE DEBUG () (SETQ STEP T EV* () -H- () -N- 0 -LVL- 0 -CMD- '(EVALHOOK (CAR (NEWL -H- -E-)) 'EV*) EVALHOOK 'EV*)) (DM LET (LS) (RPLACB LS (CONS (MCONS LAMBDA (MAPCAR 'CAR (CADR LS)) (CDDR LS)) (MAPCAR 'CADR (CADR LS))))) (DE SVDEBUG () (SETQ CPOS 77) (SAVE -CMD- TPRINT EV* -LVL- DEBUG LET SVDEBUG))