         @addressingModesTable[addressingMode] = computation
 
     getIndexedAddressByte: (base, offset) ->
-        @tick()
+        @emptyReadCycle = yes
         (base + offset) & 0xFF
 
     getIndexedAddressWord : (base, offset) ->
-        @pageCrossed = base & 0xFF00 != (base + offset) & 0xFF00
+        @emptyReadCycle = yes if base & 0xFF00 != (base + offset) & 0xFF00 # Page crossed
         (base + offset) & 0xFFFF
 
     getSignedByte: (value) ->

        @instructionsTable[instruction](address)

    readByte: (address) ->
        @tick()
        @memory.read address

    readWord: (address) ->
        @resolvePageCrossed()
        (@readByte address + 1) << 8 | @readByte address

    writeByte: (address, value) ->
        @tick()
        @memory.write address, value

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


        result = @popByte()
        result |= @popByte() << 8

    resolveReadCycles: ->
        tick()
        if @emptyReadCycle
            @emptyReadCycle = no
            @tick()

    resolveWriteCycles: ->
        tick()
        if @emptyWriteCycle
            @emptyWriteCycle = no
            @tick()

    getStatus: ->
        status = @carryFlag
