             @computeZeroFlag @accumulator
             @computeNegativeFlag @accumulator
 
+        @registerInstruction Instruction.ASL, (address) ->
+            if address?
+                result = (@read address) << 1
+                @computeCarryFlag result
+                @computeZeroFlag result
+                @computeNegativeFlag result
+                @write address, result & 0xFF
+            else
+                result = @accumulator << 1
+                @computeCarryFlag result
+                @computeZeroFlag result
+                @computeNegativeFlag result
+                @accumulator = result & 0xFF
+
+        @registerInstruction Instruction.BCC, (address) ->
+            @branchIfTrue, @carryFlag == 0, address
+
+        @registerInstruction Instruction.BCS, (address) ->
+            @branchIfTrue, @carryFlag == 1, address
+
+        @registerInstruction Instruction.BEQ, (address) ->
+            @branchIfTrue @zeroFlag == 1,  address
+
+        @registerInstruction Instruction.BIT, (address) ->
+            operand = @read address
+            result = @accumulator & operand 
+            @computeZeroFlag result
+            @overflowFlag = (result >> 7) & 1 # Exception on overflow computation
+            @computeNegativeFlag result
+
+        @registerInstruction Instruction.BMI, (address) ->
+            @branchIfTrue @negativeFlag == 1, address
+
+        @registerInstruction Instruction.BNE, (address) ->
+            @branchIfTrue @zeroFlag == 0,  address
+
+        @registerInstruction Instruction.BPL, (address) ->
+            @branchIfTrue @negativeFlag == 0,  address
+
     computeCarryFlag: (result) ->
         @carryFlag = if result > 0xFF then 1 else 0
 

    IndirectIndexedY: 13

Instruction = 
    ADC: 1
    AND: 2

Interrupt =
    IRQ:   1

        @instructionsTable = []

        @registerInstruction Instruction.ADC, (address) ->
            operand = @read address
            result = @accumulator + operand + @carryFlag
            @computeCarryFlag result
            @computeZeroFlag result
            @computeOverflowFlag @accumulator, operand, @result
            @computeNegativeFlag result
            @accumulator = result & 0xFF

