         instruction addressingMode()
 
     readOperation: ->
-        operationCode = @readNextProgramByte()
+        operationCode = @_readNextProgramByte()
         operation = @operationsTable[operationCode]
         throw "Unsupported operation (code: 0x#{byteAsHex operationCode})" unless operation?
         operation
 
     readNextProgramByte: ->
-        @_readByte @_moveProgramCounter 1
+        @readByte @moveProgramCounter 1
 
     readNextProgramWord: ->
-        @_readWord @_moveProgramCounter 2
+        @readWord @moveProgramCounter 2
 
     moveProgramCounter: (size = 1) ->
         previousValue = @programCounter

    ###########################################################

    PHA: =>
        @pushByte @accumulator

    PHP: =>
        @pushByte @getStatus() | 0x10 # Pushes status with bit 4 on (break command flag).

    ###########################################################
    # Stack pop instructions
    ###########################################################

    PLA: =>
        @storeValueIntoAccumulator @popByte()

    PLP: =>
        @setStatus @popByte()

    ###########################################################
    # Accumulator bitwise instructions
    ###########################################################

    AND: (address) =>
        @storeValueIntoAccumulator @accumulator & @readByte address

    ORA: (address) =>
        @storeValueIntoAccumulator @accumulator | @readByte address

    EOR: (address) =>
        @storeValueIntoAccumulator @accumulator ^ @readByte address

    BIT: (address) =>
        value = @readByte address

        @_write address, value

    writeWord: (address, value) ->
        @writeByte address, value & 0xFF
        @writeByte (address + 1) & 0xFFFF, value >>> 8

    ###########################################################
    # Stack pushing / pulling
    ###########################################################

    pushByte: (value) ->
        @writeByte 0x100 + @stackPointer, value
        @stackPointer = (@stackPointer - 1) & 0xFF

    pushWord: (value) ->
        @pushByte value >>> 8
        @pushByte value & 0xFF

    popByte: ->
        @stackPointer = (@stackPointer + 1) & 0xFF
        @readByte 0x100 + @stackPointer

    popWord: ->
        @popByte() | @popByte() << 8

    ###########################################################
    # Memory reading / writing cycles handling
    ###########################################################

    resolveReadCycles: ->
        @_tick()
        if @emptyReadCycles
            @emptyReadCycles--
            @_tick()

    resolveWriteCycles: ->
        @_tick()
        if @emptyWriteCycles
            @emptyWriteCycles--
            @_tick()

    tick: ->
        @cyclesCount++
