anchor.diff:      (setf (sys.int::io-port/8 (+ (ata-controller-command controller)
                                    +ata-register-device+))
             (logior (ecase (ata-device-channel device)
  -                    (:master 0)
  -                    (:slave +ata-dev+))
  +                    (:device-0 0)
  +                    (:device-1 +ata-dev+))
                     +ata-lba+
                     (ldb (byte 4 24) lba)))
       ;; HI4: Write_command
  
positive.code:       (wr +ata-register-lba-mid+  (ldb (byte 8 8) lba))
        (wr +ata-register-lba-low+  (ldb (byte 8 0) lba))
        (wr +ata-register-device+ (logior (ecase (ata-device-channel device)
                                            (:master 0)
                                            (:slave +ata-dev+))
                                          +ata-lba+))
        ;; HI4: Write_command
        (wr +ata-register-command+ command)))
  
negative.code:     (sup:debug-print-line "ATA-SELECT-DEVICE called with command in progress.")
      (return-from ata-select-device nil))
    (when (not (eql (ata-controller-current-channel controller) channel))
      (assert (or (eql channel :device-0) (eql channel :device-1)))
      (setf (sys.int::io-port/8 (+ (ata-controller-command controller)
                                   +ata-register-device+))
            (ecase channel
              (:device-0 0)
              (:device-1 +ata-dev+)))
      ;; Again, neither BSY nor DRQ should be set.
      (when (logtest (logior +ata-bsy+ +ata-drq+)
                     (ata-alt-status controller))
  