{Tag BREAKCOMFONT}

{note this may have to formatted seperately (if we want to show exactly how it will look}

{note all the function names should be in boldface of various sizes}

{lispcode
(BREAKCOM{note big boldface}
  [LAMBDA (BRKCOM BRKFLG)	{it (* Interprets a
						single command.)}
    (PROG (BRKZ)
       TOP (SELECTQ
               BRKCOM
               [↑ (RETEVAL (QUOTE BREAK1)
                                (QUOTE (ERROR]]
               (GO				{it (* Evaluate BRKEXP
						unless already evaluated,
						print value, and exit.)}
                   (BREAKCOM1 BRKEXP BRKCOM NIL BRKVALUE)
                   (BREAKEXIT{note little boldface}))
               (OK				{it (* Evaluate BRKEXP,
						unless already evaluated,
						do NOT print value,
						and exit.)}
                   (BREAKCOM1 BRKEXP BRKCOM BRKVALUE BRKVALUE)
                   (BREAKEXIT T))
               (↑WGO			{it (* Same as GO except
						never saves evaluation
						on history.)}
                   (BREAKCOM1 BRKEXP BRKCOM T BRKVALUE)
                   (BREAKEXIT))
               (RETURN

		{it (* User will type in expression to be evaluated and
		returned as value of BREAK. Otherwise same as GO.)}

                   (BREAKCOM1 [SETQ BRKZ (COND
                                         (BRKCOMS (CAR BRKCOMS))
                                         (T (LISPXREAD T]
                                     (QUOTE RETURN)
                                     NIL NIL (LIST (QUOTE RETURN)
                                                       BRKZ))
                   (BREAKEXIT))
           (EVAL				{it (* Evaluate BRKEXP but
						do not exit from BREAK.)}
                   (BREAKCOM1 BRKEXP BRKCOM)
                   (COND
                       (BRKFLG (BREAK2)
                                 (PRIN1 BRKFN T)
                                 (PRIN1 (QUOTE " EVALUATED
")
                                          T)))
                       (SETQ !VALUE (CAR BRKVALUE))
						{it (* For user's benefit.)}
                       )}


{index *END* font package}


}{End SubSec Font Package}



{note this listing is a loser --- first, it is not the real BREAKCOM, but that doesn't matter.  However, the original prettyprinting was WRONG.  For instance, (QUOTE (ERROR]] should be (QUOTE (ERROR!].  Also, (EVAL ...) should be indented to the same level as (GO ...) and (RETURN ...).  Also, this is an incorrect SELECTQ, because it doesn't have a final case.  (I guess what happened is that someone yanked out a section of code, and ran the pretty printer on it, without looking to see if it made sense.  I believe that a new, different example should be created. ----mjs}


{Tag BREAKCOM}

{lispcode
(BREAKCOM
  [LAMBDA (BRKCOM BRKFLG)        (* Interprets a
                                  single command.)
    (PROG (BRKZ)
       TOP (SELECTQ
               BRKCOM
               [↑ (RETEVAL (QUOTE BREAK1)
                                (QUOTE (ERROR]]
               (GO                (* Evaluate BRKEXP
                                  unless already evaluated,
                                  print value, and exit.)
                   (BREAKCOM1 BRKEXP BRKCOM NIL BRKVALUE)
                   (BREAKEXIT))
               (OK                (* Evaluate BRKEXP,
                                  unless already evaluated,
                                  do NOT print value,
                                  and exit.)
                   (BREAKCOM1 BRKEXP BRKCOM BRKVALUE BRKVALUE)
                   (BREAKEXIT T))
               (↑WGO              (* Same as GO except
                                  never saves evaluation
                                  on history.)
                   (BREAKCOM1 BRKEXP BRKCOM T BRKVALUE)
                   (BREAKEXIT))
               (RETURN

          (* User will type in expression to be evaluated and
          returned as value of BREAK. Otherwise same as GO.)

                   (BREAKCOM1 [SETQ BRKZ (COND
                                         (BRKCOMS (CAR BRKCOMS))
                                         (T (LISPXREAD T]
                                     (QUOTE RETURN)
                                     NIL NIL (LIST (QUOTE RETURN)
                                                       BRKZ))
                   (BREAKEXIT))
           (EVAL                (* Evaluate BRKEXP but
                                  do not exit from BREAK.)
                   (BREAKCOM1 BRKEXP BRKCOM)
                   (COND
                       (BRKFLG (BREAK2)
                                 (PRIN1 BRKFN T)
                                 (PRIN1 (QUOTE " EVALUATED
")
                                          T)))
                       (SETQ !VALUE (CAR BRKVALUE))
                                  (* For user's benefit.)
                       )}