   [machine-state opcode]
   (let [reg-num (utils/get-nibble1 opcode)
         reg-val (machine-state/get-register machine-state reg-num)]
-    (log/info (format "0x%04x EXA1 0x%04x kpf V[%d](0x%02x)" 
-                       (machine-state/get-pc machine-state) opcode reg-num reg-val))
+    (trace machine-state opcode "EXA1 kpf V[%d](0x%02x)" reg-num reg-val)
     (if (not (state/is-key-pressed reg-val))
       (machine-state/skip-next-pc machine-state)
       (machine-state/increment-pc machine-state))))

  (let [reg-num (utils/get-nibble1 opcode)
        imm (utils/get-byte1 opcode)
        reg-val (machine-state/get-register machine-state reg-num)]
    (log/info (format "0x%04x 3XNN 0x%04x skp V[%d](0x%02x) == 0x%02x" 
                       (machine-state/get-pc machine-state) opcode reg-num reg-val imm))
    (if (= reg-val imm)
        (machine-state/skip-next-pc machine-state)
        (machine-state/increment-pc machine-state))))

        result (if is-borrow?
                 (+ (- reg-y-val reg-x-val) 256)
                 (- reg-y-val reg-x-val))]
    (trace machine-state opcode "8XY7 sb7 V[%d](0x%02x) = V[%d](0x%02x) - V[%d](0x%02x)" reg-x-num result reg-y-num reg-y-val reg-x-num reg-x-val)
    (-> (if is-borrow?
          (machine-state/set-register machine-state 0xF 0)
          (machine-state/set-register machine-state 0xF 1))
