;; Cut and paste this code into your favorite editor, or ;; perhaps into the Wraith Scheme Input Panel. ;; Auxiliary function for "cylon" -- does one back-and-forth ;; sweep of the red light, then calls itself tail-recursively. (define (cylon-aux) (e::set-sense-light-n-illumination! 1 7) (e::set-sense-light-n-illumination! 0 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 0 7) (e::set-sense-light-n-illumination! 1 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 1 7) (e::set-sense-light-n-illumination! 2 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 2 7) (e::set-sense-light-n-illumination! 3 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 3 7) (e::set-sense-light-n-illumination! 4 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 4 7) (e::set-sense-light-n-illumination! 5 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 5 7) (e::set-sense-light-n-illumination! 6 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 6 7) (e::set-sense-light-n-illumination! 7 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 7 7) (e::set-sense-light-n-illumination! 6 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 6 7) (e::set-sense-light-n-illumination! 5 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 5 7) (e::set-sense-light-n-illumination! 4 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 4 7) (e::set-sense-light-n-illumination! 3 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 3 7) (e::set-sense-light-n-illumination! 2 1) (e::usleep 100000) (e::set-sense-light-n-illumination! 2 7) (e::set-sense-light-n-illumination! 1 1) (e::usleep 100000) (cylon-aux)) ;; Entry point to make the Wraith Scheme sense lights ;; exhibit the characteristic sweeping red light of the ;; classic space opera, "Battlestar Galactica". (define (cylon) (e::set-sense-light-illuminations! 7) (e::show-sense-lights!) (display "By your command ...\n") (cylon-aux)) ;; Auxiliary function for the "fuzz" function. Makes the Wraith ;; Scheme sense lights look like the moving-red-band that some ;; stopped police cars use to warn traffic to pass them safely. (define (pass-by color dwell) (e::set-sense-lights-off!) (e::show-sense-lights!) (e::set-sense-light-n-illumination! 7 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 6 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 5 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 4 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 3 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 2 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 1 color) (e::usleep dwell) (e::set-sense-light-n-illumination! 0 color) (e::usleep dwell)) ;; Flash all the sense lights for the given duration with the given ;; illuminated state (color). (define (flash color duration) (e::set-sense-lights-off!) (e::set-sense-light-illuminations! color) (e::show-sense-lights!) (e::usleep duration) (e::hide-sense-lights!)) ;; There's something flashing in my rear-view!! (define (fuzz) (flash 5 50000) (flash 0 50000) (flash 5 50000) (flash 0 50000) (flash 5 50000) (flash 0 50000) (flash 5 50000) (flash 0 50000) (flash 5 50000) (flash 0 50000) (pass-by 1 50000) (pass-by 1 50000) (pass-by 1 50000) (fuzz)) ;; Auxiliary function for the main demonstration. (define (sweep color) (e::set-sense-lights-off!) (e::show-sense-lights!) (e::set-sense-light-n-illumination! 0 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 1 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 2 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 3 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 4 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 5 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 6 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 7 color) (e::usleep 100000) (e::set-sense-light-n-illumination! 0 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 1 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 2 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 3 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 4 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 5 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 6 0) (e::usleep 100000) (e::set-sense-light-n-illumination! 7 0) (e::usleep 100000) ) ;; Auxiliary function for the main demonstration. (define (sweep-visible) (e::set-sense-lights-off!) (e::hide-sense-lights!) (e::set-sense-light-n-visibility! 0 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 1 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 2 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 3 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 4 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 5 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 6 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 7 #t) (e::usleep 100000) (e::set-sense-light-n-visibility! 0 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 1 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 2 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 3 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 4 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 5 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 6 #f) (e::usleep 100000) (e::set-sense-light-n-visibility! 7 #f) (e::usleep 100000) ) ;; Simple demonstration of Wraith Scheme sense lights. (define (demonstrate-sense-lights) (e::hide-sense-lights!) (flash 1 250000) (flash 0 250000) (e::hide-sense-lights!) (flash 2 250000) (flash 0 250000) (flash 3 250000) (flash 0 250000) (flash 4 250000) (flash 0 250000) (flash 5 250000) (flash 0 250000) (flash 6 250000) (flash 0 250000) (flash 7 250000) (flash 0 250000) (flash 0 250000) (sweep-visible) (sweep 1) (sweep 2) (sweep 3) (sweep 4) (sweep 5) (sweep 6) (sweep 7) (e::usleep 100000) (e::set-sense-light-n-illumination! 0 0) (e::set-sense-light-n-illumination! 1 1) (e::set-sense-light-n-illumination! 2 2) (e::set-sense-light-n-illumination! 3 3) (e::set-sense-light-n-illumination! 4 4) (e::set-sense-light-n-illumination! 5 5) (e::set-sense-light-n-illumination! 6 6) (e::set-sense-light-n-illumination! 7 7) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 100000) (e::rotate-sense-lights! 1) (e::usleep 500000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 100000) (e::rotate-sense-lights! -1) (e::usleep 500000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 100000) (e::rotate-sense-lights! 3) (e::usleep 500000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 100000) (e::rotate-sense-lights! -3) (e::usleep 500000) (e::usleep 1000000) (e::hide-sense-lights!) )