         case 0x2D:
             cycle == 2 ? absolute() :
                 cycle == 3 ? absolute2() : andAbsolute()
+        case 0x3D:
+            cycle == 2 ? absolute() :
+                cycle == 3 ? absoluteX() :
+                cycle == 4 ? andPageBoundary() : andAbsolute()
             // ASL
         case 0x0A:
             aslAccumulator()

        cycle = 0
    }
    
    private func andAbsolute() {
        data = memory.readByte(address)
        loadA(a & data)

            case 0x29: return String(format: "AND #%02x", self.memory.readByte(self.pc))
            case 0x25: return String(format: "AND %02x", self.memory.readByte(self.pc))
            case 0x2D: return String(format: "AND %04x", self.memory.readWord(self.pc))
            case 0x3D: return String(format: "AND %04x,X", self.memory.readWord(self.pc))
            case 0x0A: return "ASL"
            case 0x06: return String(format: "ASL %02x", self.memory.readByte(self.pc))
            case 0x16: return String(format: "ASL %02x,X", self.memory.readByte(self.pc))
