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: (defvar *debug-video-col* 0)
  
  (defun initialize-early-video ()
    ;; Trash old framebuffer.
    (setf *current-framebuffer* nil)
    (setf *debug-video-x* 0
  
negative.code: ;;;; This code is licensed under the MIT license.
  
  (in-package :mezzano.supervisor)
  
  (defvar *light-position* nil
    "Control the position of the status light.
  Can be :TOP to position them at the top of the screen, :BOTTOM to position them at the bottom, or NIL to disable them entirely.")
  
  (defstruct (framebuffer
               (:area :wired))
  