anchor.diff:           nil
       (format t "Pass ~A…~%" *pass*)
       (= *label-changed?* nil
  -       *unassigned-segment-blocks* nil)
  +       *unassigned-segment-blocks* unassigned-segment-blocks)
       (assemble-pass-to-file out-name dump-name x)
       (++! *pass*))
  -  (when *unassigned-segment-blocks*
  +  (awhen *sourceblock-stack*
  +    (assembler-error "Block(s) with no END: ~A" !)))
  +
  +(defun assemble-parsed-files (out-name dump-name x)
  +  (assemble-parsed-files-0 out-name dump-name x)
  +  (awhen *unassigned-segment-blocks*
  +    (format t "Assembling again to assign BLOCKs to SEGMENTS…~%")
       (sort-unassigned-segment-blocks)
       (with-temporary *assign-blocks-to-segments?* t
  -      (assemble-pass-to-file out-name dump-name x))))
  +      (assemble-parsed-files-0 out-name dump-name x :unassigned-segment-blocks !))))
   
   (defun check-on-unassigned-blocks ()
     (awhen *unassigned-segment-blocks*
  
positive.code: (defun assemble-parsed-expressions (out x)
    (adolist x
      (with-temporary *assembler-current-line* !
        (let-when b (car *sourceblock-stack*)
          (enqueue (sourceblock-exprs b) !))
        (adolist (.!)
          (? *disabled?*
             (? (equal ! '(directive end)) ; TODO end with block type
                (assemble-end nil))
             (assemble-and-dump out !))))))
  
  
negative.code:                                                  (>= (sourceblock-size a)
                                                       (sourceblock-size b))))))
  
  (defun assemble-parsed-files-0 (out-name dump-name x &key (unassigned-segment-blocks nil))
    (clear-labels)
    (= *pass* 0)
    (while (| *label-changed?*
  