 
         @registerInstruction Instruction.ADC, (address) ->
             operand = @readByte address
-            result = @accumulator + operand + @carryFlag
+            result = @accumulator + operand
+            result++ if @carryFlag
             @computeCarryFlag result
             @computeZeroFlag result
             @computeOverflowFlag @accumulator, operand, result

        @registerY = 0       # 8-bit

    resetFlags: ->
        @carryFlag = 0        # bit 0
        @zeroFlag = 0         # bit 1
        @interruptDisable = 1 # bit 2
        @decimalMode = 0      # bit 3
        @breakCommand = 1     # bit 4
        @overflowFlag = 0     # bit 6
        @negativeFlag = 0     # bit 7

    resetVariables: ->
        @cycle = 0

    compareRegisterAndMemory: (register, address) -> 
        operand = @readByte address
        result = register - operand 
        @carryFlag = result >= 0 # Exception on carry computation
        @computeZeroFlag result
        @computeNegativeFlag result

