module HRM::Instruction

Public Instance Methods

add(address) click to toggle source
# File lib/hrm/instruction.rb, line 36
def add(address)
  @value += @memory[address]
end
bumpdown(address) click to toggle source
# File lib/hrm/instruction.rb, line 48
def bumpdown(address)
  @value = @memory[address] -= 1
end
bumpup(address) click to toggle source
# File lib/hrm/instruction.rb, line 44
def bumpup(address)
  @value = @memory[address] += 1
end
copyfrom(address) click to toggle source
# File lib/hrm/instruction.rb, line 28
def copyfrom(address)
  @value = @memory[address]
end
copyto(address) click to toggle source
# File lib/hrm/instruction.rb, line 32
def copyto(address)
  @memory[address] = @value
end
inbox() click to toggle source
# File lib/hrm/instruction.rb, line 13
def inbox
  unless @value = STDIN.gets&.chomp
    exit(0)
  end

  if @value =~ /^[-+]?[0-9]+$/
    @value = @value.to_i
  end
end
jump(address) click to toggle source
# File lib/hrm/instruction.rb, line 52
def jump(address)
  @pc = address
end
jump_if_neg(address) click to toggle source
# File lib/hrm/instruction.rb, line 62
def jump_if_neg(address)
  if @value.negative?
    @pc = address
  end
end
jump_if_zero(address) click to toggle source
# File lib/hrm/instruction.rb, line 56
def jump_if_zero(address)
  if @value.zero?
    @pc = address
  end
end
outbox() click to toggle source
# File lib/hrm/instruction.rb, line 23
def outbox
  puts @value
  @value = nil
end
sub(address) click to toggle source
# File lib/hrm/instruction.rb, line 40
def sub(address)
  @value -= @memory[address]
end