anchor.diff:  
   ;; TODO: This should stream to anything that looks vaugely output-like, instead
   ;; of a single pin.
  -(defun play-sound (sound buffer hda)
  -  (let ((output-pin (default-output-pin hda))
  -        (buf-len #x20000)
  +(defun play-sound (sound hda)
  +  (let ((buffer (hda-dma-buffer-phys hda))
  +        (buf-len (hda-dma-buffer-size hda))
  +        (output-pin (default-output-pin hda))
           (buffer-offset 0)
           (sound-position nil)
           (sound-len (length sound))
  
positive.code:                              :32-bit-only (zerop (gcap-64ok (global-reg/16 hda +gcap+))))
                              (error "Unable to allocate DMA buffer!"))
                          mezzano.supervisor::+4k-page-size+))
             (dma-virt (+ mezzano.supervisor::+physical-map-base+ dma-phys)))
        (setf (hda-corb/rirb/dmap hda) dma-virt
              (hda-corb/rirb/dmap-physical hda) dma-phys))
      (mezzano.supervisor:simple-irq-attach (hda-interrupt-handler hda))
      (initialize-corb hda)
      (initialize-rirb hda)
  
negative.code:   rirb-read-pointer
    (codecs (make-array 15 :initial-element nil))
    interrupt-latch
    interrupt-handler
    dma-buffer-phys
    dma-buffer-virt
    dma-buffer-size)
  
  (defun global-reg/8 (hda reg)
    (mezzano.supervisor:pci-io-region/8 (hda-register-set hda) reg))
  