anchor.diff:             :expected-type '(array (unsigned-byte 32) (* *))
              :datum from-array))
     ;; Don't write to the top row of pixels, that's where the lights are.
  -  (when (<= to-row 0)
  -    (incf from-row (- 1 to-row))
  -    (decf nrows (- 1 to-row))
  -    (setf to-row 1))
  +  (case *light-position*
  +    (:top
  +     (when (<= to-row 0)
  +       (incf from-row (- 1 to-row))
  +       (decf nrows (- 1 to-row))
  +       (setf to-row 1)))
  +    (:bottom
  +     (when (>= (+ to-row nrows) (1- (framebuffer-height fb)))
  +       (setf nrows (- (framebuffer-height fb) to-row 1)))))
     ;; Dismember the from-array.
     (let ((from-offset 0)
           (from-storage (sys.int::%complex-array-storage from-array))
  
positive.code:                                 (if (boundp '*light-decay-time*)
                                      *light-decay-time*
                                      0)))
    (when *current-framebuffer*
      (let ((fb-addr (+ +physical-map-base+
                        (framebuffer-base-address *current-framebuffer*)
                        (* (light-index light) 32 4)))
            (colour (if (light-state light)
                        (light-colour light)
  
negative.code: (defvar *debug-video-col* 0)
  
  (defun initialize-early-video ()
    (when (not (boundp '*light-position*))
      (setf *light-position* :top))
    ;; Trash old framebuffer.
    (setf *current-framebuffer* nil)
    (setf *debug-video-x* 0
  