anchor.diff:               (assemble ._)))]
        x))
   
  -(defun assemble-pass (x &key unassigned-segment-blocks segments)
  -  (format t "Pass ~A…~%" *pass*)
  +(defun assemble-pass (x &key unassigned-segment-blocks segments description)
  +  (format t "Pass ~A~A…~%" *pass* description)
     (= *label-changed?* nil
        *unassigned-segment-blocks* unassigned-segment-blocks
        *segments* segments
  
positive.code:     (++! *pass*)))
  
  (defun assemble-multiple-passes (x &key (unassigned-segment-blocks nil)
                                          (segments (make-queue)))
    (clear-labels)
    (= *pass* 0)
    (prog1 (while (| *label-changed?*
                     (< *pass* 4))
                  (assemble-pass x :unassigned-segment-blocks unassigned-segment-blocks
                                   :segments segments)
             (assemble-pass x :unassigned-segment-blocks unassigned-segment-blocks
                              :segments segments))
      (!? *sourceblock-stack*
          (assembler-error "Block(s) with no END: ~A" !))))
  
  
negative.code:   (sort-unassigned-segment-blocks)
    (with-temporary *assign-blocks-to-segments?* t
      (assemble-multiple-passes x :unassigned-segment-blocks *unassigned-segment-blocks*
                                  :segments *segments*
                                  :description " (assigning BLOCKs to SEGMENTs)")))
  
  (defun assemble-files (out-name &rest in-names)
    (with-temporary *unassigned-segment-blocks* nil
  