root@bu-cs.UUCP (Barry Shein) (10/06/85)
Ok people, like, I'm *real* busy these days, but fortunately I found the
time to write this thing cuz I know you couldn't live another day without
it....
-Barry Shein, Boston University
-------fold and cut here--------------
;;;
;;; Canonical GNU copyright conditions apply
;;; TWINKLE (c) Barry Shein 1985
;;; Though I admit it's not very original
;;;
(defun twinkle ()
"TWINKLE creates and displays a twinkling buffer
typing any char stops and returns to previous buffer"
(interactive)
(let* ((curbuf (current-buffer))
(newbuf (get-buffer-create "*Twinkle*"))
(height (1- (window-height)))
(width (1- (screen-width)))
(i 0)
(init-string (make-string width 32)) ;;; that is, a line of blanks
(mask 255)) ;;; random can return negative
(switch-to-buffer newbuf)
(delete-other-windows)
(erase-buffer)
(while (< i height) ;;; fill window w/ blanks
(princ init-string newbuf)
(princ "\n" newbuf)
(setq i (1+ i)))
;;; try for a little giggle
(message "Twinkle Twinkle little star... [hit space to stop]")
(while (not (input-pending-p)) ;;; randomly (un)display *'s
(goto-char 1)
(forward-char (% (logand (random) mask) width))
(next-line (% (logand (random) mask) height))
(delete-char (if (bolp) 1 -1))
(if (zerop (logand (random) 1)) (princ "*" newbuf)
(princ " " newbuf))(sit-for 0))
(read-char) ;;; swallow up stop char
(switch-to-buffer curbuf)
(message ;;; try for guilt
"You'll sit and watch this idiocy but you won't sing along, sigh...")))