Another variant:
(defun busy ( )
(princ
(strcat "\r"
(if
(setq *busy* ;; oh my, a global
(cdr
(assoc *busy*
'( ("|" . "/")
("/" . "-")
("-" . "\\")
("\\" . "|")
)
)
)
)
*busy*
(setq *busy* "\\")
)
)
)
(princ)
)
Test drive:
(defun nop ( )
(repeat 50000
(princ)
)
)
(repeat 100
(nop)
(busy)
)