         @registerInstruction Instruction.JMP, (address) ->
             @programCounter = address
 
+        @registerInstruction Instruction.JSR, (address) ->
+            @pushWord @programCounter
+            @programCounter = address
+            tick()
+
+        @registerInstruction Instruction.LDA, (address) ->
+            @accumulator = @readByte address
+            @computeZeroFlag @accumulator
+            @computeNegativeFlag @accumulator
+
+        @registerInstruction Instruction.LDX, (address) ->
+            @registerX = @readByte address
+            @computeZeroFlag @registerX
+            @computeNegativeFlag @registerX
+
+        @registerInstruction Instruction.LDY, (address) ->
+            @registerY = @readByte address
+            @computeZeroFlag @registerY
+            @computeNegativeFlag @registerY
+
     registerInstruction: (instruction, execution) ->
         @instructionsTable[instruction] = execution
 

    INX: 26
    INY: 27
    JMP: 28

Interrupt =
    IRQ:   1

        @registerAddressingMode AddressingMode.Absolute, ->
            @readNextProgramWord()

        @registerAddressingMode AddressingMode.AbsoluteX, ->
            @getIndexedAddressWord @readNextProgramWord(), @registerX

        @registerAddressingMode AddressingMode.AbsoluteY, ->
            @getIndexedAddressWord @readNextProgramWord(), @registerY

        @registerAddressingMode AddressingMode.Relative, ->
