+(setf SHOW 0)
+
+(define TBL:TBL nil)
+(define TOT:TOT nil)
+
+(define (add-show-table IP SZ)
+ (TBL IP (+ (or (TBL IP) 0) SZ))
+ (let ((NOW (date-value)))
+ (when (> NOW SHOW)
+ (when (> (- NOW SHOW) 5) (setf SHOW NOW))
+ (inc SHOW 5)
+ (! "tput cup 0 0")
+ (let ((OUT '()) (x 0))
+ (dolist (LN (TBL))
+ (let ((IP (LN 0)) (N (LN 1)))
+ (TOT IP (+ (or (TOT IP) 0) N))
+ (TOT IP (max 0 (- (or (TOT IP) 0) 10000)))
+ (push (list IP (TOT IP) (TBL IP)) OUT -1)
+ (TBL IP 0)))
+ (sort OUT (fn (x y)
+ (and (> (x 1))
+ (if (> (x 2)) (or (= (y 2)) (> (x 1) (y 1)))
+ (= (y 1)) true
+ (= (y 2)) (> (x 1) (y 1))))))
+ (dotimes (i 30)
+ (! "tput el")
+ (when (setf x (pop OUT))
+ (unless (> (x 1)) (setf x nil)))
+ (println (or x "")))))))
+
+(! "clear")
+
+;; unbuffered stdout