anchor.diff:          (lda mfr-get)
           (sta (abx #x4000))
           (dey))
  +      (rts))))
  +
  +(defun generate-nsf-preview (name continuation &key filename (break-at-end nil))
  +  (setf filename (or filename (format nil "/tmp/nsf-audition/~A.nsf" name)))
  +  (let ((*context* (make-instance 'basic-context)))
  +
  +    (emit-nsf-header 1 #x8000 'init 'play-frame
  +                     :song-name (format nil "~A" name))
  +
  +    (setf *origin* #x8000)
  +
  +    (emit-fixed-cycle-player *context* #x80)
  +
  +    (procedure init
  +      (cld)
  +      ;;(pokeword (label :seq-start) mptr)
  +      (pushword (label :seq-end))
  +      (pushword (label :seq-start))
  +      (jsr 'player-load)
  +      
         (rts))
   
       (write-song-data-for-reg-player (funcall continuation) :seq-start :seq-end)
  
positive.code:       (defun ,(intern "NSF-OUTPUT-FILE" package) (filename)
          (generate-nsf-preview ,name #',asm-fn-name :filename filename)))))
  
  (defun generate-nsf-preview (name continuation &key filename (break-at-end nil))
    (setf filename (or filename (format nil "/tmp/nsf-audition/~A.nsf" name)))
    (let* ((*context* (make-instance 'basic-context))
           ;; Music player vars
           (mfr-addr #x40)                ; Frame working pointer (temporary)
           (mfr-get (indi mfr-addr))
           (mptr #x42)                    ; Playback pointer
           (mptr-msb  (zp (1+ mptr)))
           (mptr-lsb  (zp mptr)))
  
      (emit-nsf-header 1 #x8000 'init 'play :song-name (format nil "~A" name))
  
      (setf *origin* #x8000)
  
      (procedure init
        (cld)
        (pokeword (label :seq-start) mptr)
        (rts))
  
      (procedure play
        (cld)
  
        ;; Transfer *MPTR to MFR and play this frame.
  
negative.code:       (asif :zero
          (inc mptr-msb))
  
        ;; FIXME: Don't use these labels here.. that's cheating..
        (lda mptr-lsb)
        (cmp (imm (lsb (label :seq-end))))
        (asif :equal
          (lda mptr-msb)
          (cmp (imm (msb (label :seq-end))))
          (asif :equal
            (when t ;;break-at-end
              (brk)
               (db #xF1)
               (rts))
  